2010-11-29 56 views
3

我有一個與Twilio一起運行的應用程序。這個想法是,你會撥打一個電話號碼Twilio會回答並給你菜單選項。一旦你按下一個數字,它將提交發布數據,然後掛斷(該部分全部正常工作)我遇到的問題是如果用戶剛剛掛斷電話,就會發現是否有提交發布數據的方式答案...我在他們的文檔中找到了以下代碼。當您在Twilio上掛斷時提交POST數據

<?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' 

,然後在那個頁面,我可以基本上只是說如果,如果(!空($已完成))做一些事情 (我有它的工作爲我的邏輯,但我只是想確保我得到的總體思路)

+0

它不是完成狀態是重要的。這是CallStatus回調發生。 你需要一個新的.php腳本(類似`/ call_ended.php`)來檢查`/ process_gather.php`是否已經運行。 – TelegramSam 2010-11-30 18:59:10

+0

如何運行process_gather.php?我想我真的不明白它... – Bill 2010-11-30 19:26:53

回答

9

解決此問題的最佳方法是使用StatusCallback URL。您可以在帳戶中的數字配置中設置入站呼叫的URL,也可以通過可選參數設置呼出呼叫。

當呼叫完成時,Twilio會將POST(或GET)POST(或GET)到所有在正常請求期間通過的所有same variables的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,這應該被配置爲StatusCallback URL在Twilio帳戶屏幕中的電話號碼:

<?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. 
} 
?> 
相關問題