检测 Twilio REST API 调用何时终止
Detecting when a Twilio REST API call is terminated
使用 Twilio REST API
和 Conference
您可以在呼叫者和代表之间创建呼叫,代表可以离开,并且 re-enter 通过按 * 或 0。
当代表在 Conference
中按下 * 时,代表端的脚本会将他们从 Conference
中删除,并将他们带到后端,在那里他们可以找到客户的需求,留下呼叫者在空 Conference
直到代表 re-joins 按 0.
如果代表在 Conference
内挂断,则会进行回调“$_POST['CallStatus'] = completed
”。这让脚本知道结束所有打开的 Conference
s,从而将任何等待的呼叫者重定向到主菜单。
然而,如果代表在 Conference
之外挂断(使用后端,而呼叫者仍在等待) 不会进行相同的回调。
哪些变量会指示给代表的 REST API
电话已挂断? 我认为是 $_POST['CallStatus']
或 $_POST['DialCallStatus']
但我已经听了两者,但无法为代表的结尾生成 on-disconnect 回调。
以下变量通过 REST API
发送到 Calls.xml
:
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 );
此处为 Twilio 开发人员布道师。
当代表在通话过程中由于 action
attribute on the <Dial>
动词的性质挂断时,您会收到状态为 completed
的回调。然而,一旦你在 <Dial>
之外,你就不再拥有那个。
虽然有办法做到这一点!您需要设置以接收呼叫进度事件。您可以注册以接收呼叫经历的各种事件的 webhook,从排队到完成。当从 REST API 生成调用时,您可以使用 StatusCallback
and StatusCallbackEvent
parameters 注册这些。然后,您可以在通话结束时获得 webhook,即使您不在 <Dial>
.
使用 Twilio REST API
和 Conference
您可以在呼叫者和代表之间创建呼叫,代表可以离开,并且 re-enter 通过按 * 或 0。
当代表在 Conference
中按下 * 时,代表端的脚本会将他们从 Conference
中删除,并将他们带到后端,在那里他们可以找到客户的需求,留下呼叫者在空 Conference
直到代表 re-joins 按 0.
如果代表在 Conference
内挂断,则会进行回调“$_POST['CallStatus'] = completed
”。这让脚本知道结束所有打开的 Conference
s,从而将任何等待的呼叫者重定向到主菜单。
然而,如果代表在 Conference
之外挂断(使用后端,而呼叫者仍在等待) 不会进行相同的回调。
哪些变量会指示给代表的 REST API
电话已挂断? 我认为是 $_POST['CallStatus']
或 $_POST['DialCallStatus']
但我已经听了两者,但无法为代表的结尾生成 on-disconnect 回调。
以下变量通过 REST API
发送到 Calls.xml
:
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 );
此处为 Twilio 开发人员布道师。
当代表在通话过程中由于 action
attribute on the <Dial>
动词的性质挂断时,您会收到状态为 completed
的回调。然而,一旦你在 <Dial>
之外,你就不再拥有那个。
虽然有办法做到这一点!您需要设置以接收呼叫进度事件。您可以注册以接收呼叫经历的各种事件的 webhook,从排队到完成。当从 REST API 生成调用时,您可以使用 StatusCallback
and StatusCallbackEvent
parameters 注册这些。然后,您可以在通话结束时获得 webhook,即使您不在 <Dial>
.