Twilioに電話を切るときに投稿データを送信してください
-
29-09-2019 - |
質問
Twilioで実行されるアプリケーションがあります。アイデアは、Twilioが電話番号に電話して答えてメニューオプションを提供するというアイデアです。数字を押すと、ポストデータを送信してから電話を切る(その一部はすべて正しく機能します)私が抱えている問題は、Twilioがすぐにハングアップする場合にユーザーがハングアップする場合に投稿データを送信する方法があるかどうかを見つけることです。回答...私は彼らのドキュメントに次のコードを見つけました。
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/gather_hints.xml -->
<Response>
<Gather action="/process_gather.php" method="GET">
<Say>Enter something, or not</Say>
</Gather>
<Redirect method="GET">
/process_gather.php?Digits=TIMEOUT
</Redirect>
</Response>
これに関する問題は、メッセージが最後までタイムアウトするまで待つ必要があることです。それを作る方法はありますか、それを開始するとすぐに、ユーザーがハングアップすると、リダイレクトタグに行くようなことをしますか?
ありがとう!
編集:それで、process_gather.phpページで、完了したステータスを変数として保存できますか?
$Completed = $_POST["completed"]; //which would set $Completed == 'completed'
そして、そのページで、基本的に(!empty($ completed))何かをしている場合に言うことができます(私はそれを自分の論理に取り入れなければなりませんが、一般的なアイデアを得ることを確認したいだけです)
解決
これを解決する最良の方法は、StatusCallback URLを使用することです。このURLは、アカウントの数値構成のインバウンドコールのために、またはアウトバウンドコールのオプションの引数を使用して設定できます。
コールが完了すると、Twilioはすべての場合にURLに投稿(または取得)します 同じ変数 通常のリクエスト中に通過します。 CallStatus
変数が設定されます completed
.
ユーザーから入力を取得する前にそのURLが呼び出された場合( `/Process_Gather.php 'スクリプトに)、彼らは電話を切ります。
注:Cookieを使用して、通話内でセッション状態を管理できます。同じ通話中にTwilioが作成したすべてのリクエスト(およびStatusCallbackリクエスト)には、送信するCookieが含まれます。これにより、セッション変数を使用してコールの進行状況を追跡できます。
PHPの例 /proces_gather.php
:
<?php
session_start();
// adds it to our session
$_SESSION['gather_result']=$_POST["Digits"];
// then do whatever else you want your gather script to do.
?>
PHPの例 /status_callback.php
, 、Twilioアカウント画面の電話番号のStatusCallback URLとして構成する必要があります。
<?php
session_start();
//check for gather_result
if(isset($_SESSION['gather_result'])){
//user did enter digits
} else {
//do whatever you want to do if the user entered no digits.
}
?>