使用 Twilio REST API
,Conference
您可以在呼叫者和代表之间创建呼叫,代表可以通过按 * 或 0 离开并重新进入。
当代表Conference
在代表端的脚本中按 * 时,会将它们从 中删除并将Conference
它们带到后端,在那里他们可以找出客户需要什么,将呼叫者留空Conference
,直到代表按 0 重新加入。
如果代表在 内挂断,则Conference
回调“ $_POST['CallStatus'] = completed
”。这让脚本知道结束所有 open 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 );