Twilio传出的浏览器呼叫断开连接

时间:2017-07-06 15:29:01

标签: php twilio twilio-api disconnect

我在我的项目中使用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>

现在点击暂停,浏览器上的呼叫即将结束,客户端(电话)的呼叫将被暂停。

有人可以帮我解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

您正在使用action attribute on the <Dial> TwiML。来自文档:

  

如果您提供“操作”网址,Twilio将继续当前通话   拨打的一方挂机后,使用收到的TwiML   响应“操作”网址请求。

因此,当客户端挂断时,Twilio会使用从您的action网址收到的TwiML继续通话。

如果您删除action属性或将TwiML更改为<Hangup/>,那么当客户端挂机时,您的通话将会结束。

让我知道这是否有帮助。