TwilioREST API
を使用するConference
と、発信者と担当者の間で通話を作成できます。担当者は、* または 0 を押して退出および再参加できます。
担当者が * を押すConference
と、担当者側のスクリプト内で担当者が から削除され、顧客が何を必要としているのかを確認できるバックエンドに移動します。担当者が 0 を押して再度参加するまで、Conference
発信者は空のままになります。Conference
担当者が内で電話を切った場合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 );