Twilio encaminhar as chamadas recebidas com base no número de telefone recebido

Recentemente transportei o meu número de telefone fixo para Twilio. Por agora, eu criei um encaminhamento de chamadas muito básico de TwiML Bin para encaminhar qualquer chamada recebida para este antigo número de telefone fixo para o meu celular:

<Response>
 <Dial>mycellnumber</Dial>
</Response>

O que eu gostaria de fazer é ter alguma lógica para encaminhar as chamadas recebidas para uma célula diferente com base na chamada recebida que corresponde a um número numa lista de contactos, e encaminhamento padrão se o número recebido não estiver numa lista de contactos.

por exemplo, se o a chamada recebida é de um número na lista de contactos para Cell-X e, em seguida, encaminhe a chamada para Cell-X, caso contrário, se estiver na lista de contactos para Cell-Y encaminhar para Cell-Y, então talvez vá para o correio de voz na nuvem ou para outro número.

Há uma maneira de fazer algo assim como um cesto de TwiML ou no estúdio ou é muito complicado? Talvez O TaskRouter? Isto é residencial, por isso gostaria que fosse invisível para o chamador, em oposição a algo como uma solução IVR onde o chamador é solicitado a pressionar um número para o a pessoa que eles querem alcançar.

Não tive sorte nenhuma em encontrar uma solução de reencaminhamento de chamadas com lógica como esta, olhando através do Twilio docs ou procurando por exemplos. Por favor, ajudem-me!

Author: Alex Baban, 2020-01-04

1 answers

Podes fazer isto com uma função Twilio.
Digamos que a tua lista de células X se parece com isto.
const cellXContactList = ["+17782001001", "+17782001002", "+17782001003"];
E a tua lista de telemóveis parece-se com isto.
const cellYContactList = ["+17782001004", "+17782001005", "+17782001006"];
Então você poderia distribuir chamadas recebidas com algo assim:
if (cellXContactList.length && cellXContactList.indexOf(event.From) !== -1) {
    // caller number found in Cell-X contact list
    destinationPhoneNumber = "+17781001001";
} else if (cellYContactList.length && cellYContactList.indexOf(event.From) !== -1) {
    // caller number found in Cell-Y contact list
    destinationPhoneNumber = "+17781001002";
}

Abaixo está todo o código da função (substitua pelos seus números de telefone):

// forward calls based on the incoming phone number

exports.handler = function (context, event, callback) {
    // reference the Twilio helper library
    const twiml = new Twilio.twiml.VoiceResponse();

    // contacts lists
    const cellXContactList = ["+17782001001", "+17782001002", "+17782001003"];
    const cellYContactList = ["+17782001004", "+17782001005", "+17782001006"];

    // if not in any contact list forward to this number
    let destinationPhoneNumber = "+17781001000";

    if (cellXContactList.length && cellXContactList.indexOf(event.From) !== -1) {
        // caller number found in Cell-X contact list
        destinationPhoneNumber = "+17781001001";

    } else if (cellYContactList.length && cellYContactList.indexOf(event.From) !== -1) {
        // caller number found in Cell-Y contact list
        destinationPhoneNumber = "+17781001002";

    }

    twiml.dial({}, destinationPhoneNumber);

    // return the TwiML
    callback(null, twiml);
};


Você pode criar funções Twilio no seu console Twilio em ([20]} https://www.twilio.com/console/functions/manage ). comece por um modelo de funções "em branco" e substitua depois pelo código acima.

Uma vez criada e publicada a sua função, poderá configurar o seu número Twilio para a executar quando "chegar uma chamada" ( https://www.twilio.com/console/phone-numbers/incoming).

 2
Author: Alex Baban, 2020-01-04 20:05:28