Как преобразовать twilio twiML с шаблонами в код node.js

Я пытаюсь преобразовать twiML с шаблонами в код node.js, используя библиотеку twilio npm. В частности, я пытаюсь сделать аналогичный вызов (с node.js) для следующего twiML:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Dial callerId="+302111982501">{{#e164}}{{To}}{{/e164}}</Dial>
</Response>

Я использовал другие twiML-файлы в своем коде, используя в своем коде библиотеку twilio npm. У меня возникли проблемы с тем, как конвертировать те, которые используют шаблоны в форме {{}}.

ОБНОВЛЕНИЕ: вышеприведенный twiML-файл использовался в качестве голосовой URL-ссылки в домене Voice SIP twilio, чтобы все исходящие вызовы из моего sip-домена казались исходящими с одного и того же номера (callerId). Я изменил URL, чтобы попасть в остальные API в node.js, а также смог ответить на twilio (из REST API) с помощью XML, используя код ниже:

const voiceResponse = new VoiceResponse();
const dial = voiceResponse.dial({ callerId: '+302111982501' }); 
dial.number('+306944444444'); 
res.status(200).contentType('text/xml') 
.send(voiceResponse.toString());

Звонок работает отлично.

Проблема в том, что я хочу получить набранный номер {{To}} и поместить его в dial.number(). Поэтому я попытался прочитать req, который входит в мой REST API, используя req.body, req.params, req.query. Я не смог найти данные, касающиеся вызова twilio. REST API работает на Google App Engine, используя экспресс.

Итак, обновленный вопрос:

Как я могу получить исходящую информацию twilio (To) из запроса POST, который twilio отправляет, когда домен голосового SIP связан с голосовым URL-адресом, который обращается к REST API, а не к TwiML?

1 ответ

Решение

Я наконец-то понял.

Я должен был добавить:app.use(bodyParser.urlencoded({ extended: true }));к экспресс-покою api, поскольку запросы от twilio относятся к типу содержимого: x-www-form-urlencoded.

Другие вопросы по тегам