отправка данных публикации, когда вы вешаете трубку на Twilio
-
29-09-2019 - |
Вопрос
У меня есть приложение, которое работает с 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.
}
?>