0

使用 Twilio REST APIConference您可以在呼叫者和代表之间创建呼叫,代表可以通过按 * 或 0 离开并重新进入。

当代表Conference在代表端的脚本中按 * 时,会将它们从 中删除并将Conference它们带到后端,在那里他们可以找出客户需要什么,将呼叫者留空Conference,直到代表按 0 重新加入。

如果代表在 内挂断,则Conference回调“ $_POST['CallStatus'] = completed”。这让脚本知道结束所有 open Conference,从而将所有等待的调用者重定向到主菜单。

但是,如果代表在外部挂断Conference (使用后端,而呼叫者仍在等待),则不会进行相同的回调。

哪些变量表明REST API对代表的呼叫已挂断? 我认为它是,$_POST['CallStatus']或者$_POST['DialCallStatus']但我已经听过两者,但无法为代表结束时产生断开连接回调。

以下变量通过 发送Calls.xmlREST 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 );
4

1 回答 1

1

Twilio 开发人员布道者在这里。

由于动词属性completed的性质,当代表在通话期间挂断时,您会收到带有状态的回调。但是,一旦您在 a 之外,您就不再拥有它。action<Dial><Dial>

不过有办法做到这一点!您需要设置以接收呼叫进度事件。您可以注册以接收呼叫经过的各种事件的 webhook,从排队到完成。从 REST API 生成调用时,您可以使用StatusCallbackStatusCallbackEvent参数注册这些。然后,您可以在通话结束时获得一个 webhook,即使您不在<Dial>.

于 2016-08-16T09:25:57.560 回答