我在我的项目中使用Twilio Outgoing Browser Calls。拨打电话的方式是这样的:
<Response>
<Dial action="hold_twiml.php" callerId="xxxxxxxxxx">
xxxxxxxxxx
</Dial>
</Response>
hold_twiml.php
if ( $_REQUEST['DialCallStatus'] == 'completed' ) { ?>
<Response>
<Hangup/>
</Response>
<?php
}
else {
?>
<Response>
<Play>http://demo.twilio.com/docs/classic.mp3</Play>
<Redirect>hold_twiml.php</Redirect>
</Response>
<?php
}
?>
我希望在呼叫从客户端/浏览器结束时断开呼叫。为此,我添加了if ( $_REQUEST['DialCallStatus'] == 'completed' )
条件,现在呼叫从双方都结束了。但现在Hold功能无法正常工作。单击“保持”按钮时,将执行以下代码。
if ( $action == 'hold' ) {
$url = "holding_twiml.php";
$call = $client->calls->read(
array("ParentCallSid" => $_POST['callSid'])
)[0];
} else { // unhold
$call = $client->calls($_POST['callSid'])->fetch();
$url = "redirecting_twiml.php";
}
$call->update(
array(
"url" => $url,
"method" => "POST"
)
);
holding_twiml.php
<Response>
<Enqueue waitUrl="hold_music_twiml.xml">xx</Enqueue>
</Response>
hold_music_twiml.xml
<Response>
<Play>http://demo.twilio.com/docs/classic.mp3</Play>
</Response>
redirecting_twiml.php
<Response>
<Dial action="hold_twiml.php">
<Queue>xx</Queue>
</Dial>
</Response>
现在点击暂停,浏览器上的呼叫即将结束,客户端(电话)的呼叫将被暂停。
有人可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
Twilio开发者传道者在这里。
您正在使用action
attribute on the <Dial>
TwiML。来自文档:
如果您提供“操作”网址,Twilio将继续当前通话 拨打的一方挂机后,使用收到的TwiML 响应“操作”网址请求。
因此,当客户端挂断时,Twilio会使用从您的action
网址收到的TwiML继续通话。
如果您删除action
属性或将TwiML更改为<Hangup/>
,那么当客户端挂机时,您的通话将会结束。
让我知道这是否有帮助。