Twilioコールステータスを知る方法(完了かどうか)
-
28-10-2019 - |
質問
私はTwilio APIに新しくなっています。取り組んでいるWebアプリケーションでは、Callが完了したかどうかを確認する必要があります。WAVファイルをTWIMLに送信しています。完了した場合、ユーザーのクレジットを差し引く必要があります。次のコードを使用しています...
CallMeaction
$AccountSid = "**********************";
$AuthToken = "***************";
/* Your Twilio Number or an Outgoing Caller ID you have previously validated
with Twilio */
$from = '**************';
/* Number you wish to call */
$to = $_POST['contactno'];
/* Directory location for callback.php file (for use in REST URL) */
$url = 'http://'.$_SERVER['HTTP_HOST'].'/public/';
/* Instantiate a new Twilio Rest Client */
$client = new Services_Twilio($AccountSid, $AuthToken);
/* make Twilio REST request to initiate outgoing call */
$call = $client->account->calls->create($from, $to, $url . 'callback.php?number=' . $_POST['contactno'] . '&wav=' . $_POST['wav']);
/* redirect back to the main page with CallSid */
$msg = urlencode("Connecting... " . $call->sid);
//header("Location: index.php?msg=$msg");
$this->view->msg = $msg;
if($call->status == 'COMPLETED'){
/*
* Deduct credit if call completed
*/
$this->view->msg = $msg;
}
callback.php
<?php
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?>
<?php if($_REQUEST['wav']){ ?>
<Response>
<Say>A customer at the number <?php echo $_REQUEST['number']?> is calling</Say>
<Dial><?php echo $_REQUEST['number']?></Dial>
<Play><?php echo $_REQUEST['wav'] ;?></Play>
</Response>
<?php } ?>
助けてください...事前に感謝します。 :)
解決
のURLを設定します StatusCallback(このページの途中でドキュメント), 、そしてそのスクリプトに充電ロジックを入れます。
StatusCallback URLに渡すコールを作成するとき、次の4番目の引数としてオプションのパラメーターの配列を渡すことができるはずです。 $client->account->calls->create()
.
着信コールの場合、URLは(オプションで)各数値(またはその方法を使用する場合)に対して(またはアプリケーション)に定義されます。
他のヒント
RESTインターフェイスを介してアウトバウンドコールを行っている場合は、 リクエストパラメーターのステータスコールバック.
さらに、そのコールバックは非同期であるため、例で行っているように、呼び出し関数の結果を待つことができません。コールバックでクレジット管理を行う必要があります。
StatusCallbackページまたは関数で呼び出しの応答を取得できた後、コードでStatusCallback URLを設定する必要があります。
このコールバックURLは、LocalHostでは機能しません。テストについては、プロジェクトがあなたのために動作することを確認した後、00WebHostにプロジェクトを展開する必要があります。
詳細については、Twilioのドキュメントをお読みください。