отправка POST-данных, когда вы кладете трубку на Twilio - PullRequest
3 голосов
/ 29 ноября 2010

У меня есть приложение, которое работает с 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)) что-то сделать (я должен включить это в свою логику, но я просто хочу убедиться, что получаюобщая идея)

1 Ответ

9 голосов
/ 30 ноября 2010

Лучший способ решить эту проблему - использовать URL-адрес StatusCallback. Этот URL-адрес можно установить для входящих вызовов в конфигурации номера в своей учетной записи или с помощью необязательного аргумента для исходящих вызовов.

После завершения вызова Twilio отправит POST (или GET) 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, который должен быть настроен как URL-адрес StatusCallback для телефонного номера на экране учетной записи 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.
}
?>
...