twilio twiml php не выполняется

Я думаю, что пытаюсь сделать что-то относительно простое, но не могу заставить это работать. В принципе, мне нужно «меню» Twilio. Например. Пользователь звонит на наш номер, мы говорим, что нажмите 1 для английского, 2 для китайского ... Я создал сборку twiml:

<Response>
<Gather numDigits="1" action="https://handler.twilio.com/twiml/XXX">
<Say voice="alice">For English, press 1 now.</Say>
<Say voice="alice"> For Chinese, press 2 now. </Say>
</Gather>
</Response>

Это работает, меня перенаправляют на мой второй twiml (проверено с простым ответом, скажем, twiml), но здесь все идет не так. Во втором скрипте, если я добавлю какой-нибудь php, он больше не будет работать. В основном я хочу перенаправить на другой твимл, чтобы сказать правильный ответ на нужном языке в зависимости от набранного номера. Мой twiml выглядит так (так что это то, что у меня буквально есть в twimlbin):

<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$digits = $_REQUEST['Digits'];
switch ($digits) {
case 1:
   $response = new Twiml();
$response->redirect('http://pigeons.com/twiml.xml', ['method' => 'POST']);
echo $response;
    break;
case 2:
   $response = new Twiml();
$response->redirect('http://pigeons.com/twiml.xml', ['method' => 'POST']);
echo $response;
    break;
default:
     echo '<Response>';
    echo '<Say>Sorry, your response was invalid.</Say>';
    echo '</Response>';
}

?>

Однако, когда у меня это есть, ничего не происходит. Я не исключаю ошибок скрипта, но затем изменил свой тимл на это:

<?php
header("content-type: text/xml");
?>
<Response>
<Say><?php echo "Test"?></Say>
</Response>

Однако я по-прежнему ничего не слышу, когда у меня есть этот сценарий, и я ничего не вижу в журнале отладчика. Я совершенно новичок в Twilio, поэтому мне может не хватать чего-то простого, но я не могу этого понять.

Итак, мой вопрос, почему это не работает в twiml? И если возможно, выглядит ли мой скрипт перенаправления нормально?


person ExaSephiroth    schedule 04.08.2017    source источник
comment
Ваш twiML находится на сервере, который может выполнять PHP? Возвращает ли он xml-заголовок <?xml version="1.0" encoding="utf-8"?>? Вы должны использовать объект Twiml() для его создания   -  person Andy    schedule 04.08.2017


Ответы (1)


Бины TwiML не выполняют php. Если вы хотите использовать php для генерации TwiML на лету, вам необходимо разместить его на своем собственном сервере.

Вы можете сгенерировать динамический TwiML из корзины TwiML, но вам нужно использовать шаблоны усов.

Ознакомьтесь с статьей Twilio и страницы с усами для получения дополнительной информации.

person miknik    schedule 06.08.2017
comment
Это абсолютно правильно. У нас есть одна функция, которая позволяет вам писать код, Функции Twilio, но вам потребуется использовать Node .js, а не PHP. - person philnash; 08.08.2017
comment
Да, я тем временем узнал об этом. Извините за запоздалую реакцию. По какой-то причине я неправильно истолковал бункеры Twiml. Я подумал, что могу использовать их для написания любого кода, поддерживаемого Twilio, чтобы мне не приходилось устанавливать файлы на внешний сервер. Спасибо - person ExaSephiroth; 11.08.2017