使用Twilio REST API
和Conference
,您可以在呼叫者和代表之间创建一个呼叫,代表可以离开并按*或0重新输入。
当代表在Conference
内按*时,代表端的脚本将其从Conference
中移除并将它们带到后端,在那里他们可以找到客户需要的内容,让调用者进入一个空的Conference
,直到代表重新加入,按0。
如果代表在 Conference
内挂起,则会发出回调“$_POST['CallStatus'] = completed
”。这使脚本知道结束所有打开的Conference
,从而将任何等待的呼叫者重定向到主菜单。
但是,如果代表在Conference
之外挂起(使用后端,而调用方仍在等待),则不会进行相同的回调。
哪些变量表明REST API
对代表的调用已挂断? 我认为是$_POST['CallStatus']
或$_POST['DialCallStatus']
但是我我们已经听取了两者的意见,但却无法为代表的最终产生一个断开连接的回调。
以下变量通过Calls.xml
发送给REST API
:
From => $from
To => $to
Url => $script_url
StatusCallback => $callback_url
StatusCallbackEvent => array( "initiated", "ringing", "answered", "completed" )
$callback_url
可以使用并检测$_POST['CallStatus'] = in-progress
但不会completed
。 (除非代表在会议中挂起,然后按预期工作)
电话功能
class Call
{
var $url = 'https://api.twilio.com/2010-04-01/Accounts/XXXXXX/Calls.xml';
var $from = '+1XXXXXX';
function dial( $number, $script, $callback = false )
{
$switch = 'http://XXXXXX.com/' . $script . '.php';
$post = array( 'From' => $this->from, 'To' => $number, 'Url' => $switch );
if ( $callback )
{
$post['StatusCallback'] = $callback;
$post['StatusCallbackEvent'] = array( "initiated", "ringing", "answered", "completed" );
}
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $this->url );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_VERBOSE, 1 );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt( $curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
curl_setopt( $curl, CURLOPT_USERPWD, 'XXXXXX:XXXXXX' );
if ( $post )
{
$data = array();
foreach ( $post as $property => $value )
{
array_push( $data, $property . '=' . $value );
}
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_POSTFIELDS, implode( '&', $data ) );
}
$page = curl_exec( $curl );
curl_close( $curl );
return $page;
}
}
电话
$call = new Call;
$call->dial( $number, $script, $callback );
答案 0 :(得分:1)
Twilio开发者传道者在这里。
由于action
attribute on the <Dial>
动词的性质,当呼叫在呼叫期间挂起时,您将获得具有completed
状态的回叫。但是,一旦你不在<Dial>
之内,那么你就不再拥有它了。
虽然有办法做到这一点!您需要设置接收呼叫进度事件。您可以注册接收呼叫所经历的各种事件的Webhook,从排队到完成。在从REST API生成调用时,您可以使用StatusCallback
and StatusCallbackEvent
parameters注册这些内容。然后,即使您在<Dial>
之外,也可以在通话结束后获取网络链接。