Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 挂断Twilio时提交帖子数据_Php_Twilio_Voip_Phone Call_Twilio Api - Fatal编程技术网

Php 挂断Twilio时提交帖子数据

Php 挂断Twilio时提交帖子数据,php,twilio,voip,phone-call,twilio-api,Php,Twilio,Voip,Phone Call,Twilio Api,我有一个运行Twilio的应用程序。这个想法是,你将拨打一个电话号码,twilio将接听并为你提供菜单选项。一旦你按下一个数字,它将提交帖子数据,然后挂断(这部分都正常工作)我的问题是,如果用户在twilio回答后立即挂断,是否有办法提交帖子数据。。。我在他们的文档中发现了以下代码 <?xml version="1.0" encoding="UTF-8"?> <!-- page located at http://example.com/gather_hints.xml --&

我有一个运行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>
然后在那一页我可以说如果(!empty($Completed))做点什么
(我必须将其纳入我的逻辑中,但我只想确保我了解总体思路)

解决这一问题的最佳方法是使用StatusCallback URL。您可以在帐户的号码配置中为入站呼叫设置此URL,也可以通过出站呼叫的可选参数设置此URL

当调用完成时,Twilio将在正常请求期间发布(或获取)到URL及其传递的所有信息。
CallStatus
变量将设置为
completed

如果在您从用户(到您的“/process\u gather.php”脚本)获得输入之前调用了该URL,那么他们就会挂断

注意:您可以使用Cookie来管理通话中的会话状态:Twilio在同一通话中发出的所有请求(以及StatusCallback请求)都将包含您发送的任何Cookie。这允许您使用会话变量跟踪呼叫进度

/proces\u gather.PHP
的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.
 ?> 

这里是来自Twilio的John…这是正确的答案。谢谢你,山姆!谢谢你的帮助。我编辑我的文章只是为了确保我的文章是正确的。我想是的,但我不太确定。嗯,好吧,这是有道理的。。。我会试试看。重要的不是完成状态。这是因为CallStatus回调发生了。您需要一个新的.php脚本(类似于
/call\u ended.php
),用于检查
/process\u gather.php
是否已运行。如何查看process\u 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
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.
}
?>