отправка данных публикации, когда вы вешаете трубку на Twilio

StackOverflow https://stackoverflow.com/questions/4305221

Вопрос

У меня есть приложение, которое работает с Twilio.Идея заключается в том, что вы позвоните по номеру телефона, на который twilio ответит и предоставит вам варианты меню.Как только вы нажмете цифру, он отправит данные post, а затем повесит трубку (эта часть работает корректно). Проблема, с которой я столкнулся, заключается в том, чтобы выяснить, есть ли способ отправить данные post, если пользователь просто вешает трубку, как только 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>

Проблема в том, что вам нужно дождаться окончания сообщения, чтобы истек тайм-аут gather.Есть ли способ сделать так, чтобы при запуске, если пользователь повесит трубку, он делал что-то вроде перехода к тегу перенаправления?

Спасибо!

Редактировать:Итак, на странице process_gather.php я могу сохранить статус завершения как переменную?

$Completed = $_POST["completed"]; //which would set $Completed == 'completed'

и затем на этой странице я могу просто сказать, если if(!empty($Completed)) что-нибудь сделает (Я должен включить это в свою логику, но я просто хочу убедиться, что я понял общую идею)

Это было полезно?

Решение

Лучший способ решить эту проблему - использовать URL StatusCallback.Вы можете задать этот 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, который должен быть настроен как 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.
}
?>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top