Twanio Developer Evangelist здесь.
Что может сбить с толку, так это то, что эта функция фактически вызывается дважды как часть вашего вызова.
<Gather>
работает какэто: когда пользователь вводит цифру, Twilio делает новый HTTP-запрос с параметром Digits
для атрибута <Gather>
action
или по умолчанию с тем же URL-адресом, что и текущий ответ.В вашем случае это означает, что он снова запросит ту же функцию Twilio.
Нет повторения TwiML, поэтому нам нужно повторить то же самое.Вот пример того, как этого добиться, возвращая тот же TwiML для начального запроса и для любого запроса, где параметр Digits
не равен «9»:
exports.handler = function(context, event, callback) {
const message = "some message , press 9 to repeat";
const gatherOptions = { numdigit:"1", tiemout:"5"};
let twiml = new Twilio.twiml.VoiceResponse();
if (event.Digits) {
if(event.Digits === '9') {
twiml.gather(gatherOptions).say(message);
} else {
twiml.say("sorry");
}
} else {
twiml.gather(gatherOptions).say(message);
}
callback(null, twiml);
};
Дайте мне знать, если это поможет.