Проповедник разработчиков Twilio здесь.
Бины TwiML отлично подходят для статических битов TwiML, но для вашего варианта использования требуется нечто большее.
Я рекомендую вам ознакомиться с функциями Twilio, которые позволяют запускать код Node.js в инфраструктуре Twilio. Я создал и протестировал версию, которая работает с функциями Twilio < / а>.
Вот объяснение того, как это работает:
Начните с массива ваших чисел:
const numbers = [...];
Затем в функции проверьте, завершено ли состояние вызова, и положите трубку, если это так.
exports.handler = function(context, event, callback) {
const response = new Twilio.twiml.VoiceResponse();
if (event.DialCallStatus === "complete" || event.finished) {
// Call was answered and completed or no one picked up
response.hangup();
} else {
Если нет, мы подбираем следующий номер для звонка. Если в URL-адресе указан следующий номер. Если вы сохраните его в переменной, в противном случае выберите первое число в массиве:
const numberToDial = event.nextNumber ? event.nextNumber : numbers[0];
Затем назначьте следующий номер для набора из массива.
let url;
const currentNumberIndex = numbers.indexOf(numberToDial);
if (currentNumberIndex + 1 === numbers.length) {
// no more numbers to call after this.
url = "/hunt?finished=true";
} else {
const nextNumber = numbers[currentNumberIndex + 1];
url = "/hunt?nextNumber=" + encodeURIComponent(nextNumber);
}
Затем сгенерируйте TwiML, чтобы набрать следующий номер и передать URL-адрес в качестве действия. Вы можете добавить свой собственный URL-адрес в качестве statusCallbackUrl, чтобы отслеживать статусы.
const dial = response.dial({ action: url });
dial.number({ statusCallback: "https://yourapp.com/statuscallback" }, numberToDial);
}
callback(null, response);
}
Я не могу обещать, что это сработает, но я надеюсь, что вы видите, к чему я клоню. Сообщите мне, если это поможет.
person
philnash
schedule
25.07.2017