3

我有一个与 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'

然后在那个页面中,我基本上可以说 if(!empty($Completed)) 做某事(我必须将其纳入我的逻辑,但我只是想确保我得到一般的想法)

4

1 回答 1

9

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

当调用完成时,Twilio 将使用它在正常请求期间传递的所有相同变量POST(或 GET)到 URL 。变量将CallStatus设置为completed

如果在您从用户(到您的 `/process_gather.php' 脚本)获得输入之前调用了该 URL,那么他们就挂断了。

注意:您可以使用 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.
}
?>
于 2010-11-29T22:31:05.990 回答