Development

Effettuare il routing delle chiamate vocali: più che semplice codice!

Creare una funzionalità che ci consentisse di effettuare il routing delle chiamate è stata una grande sfida. Ed è interessante notare che non si è trattato solo di scrivere codice.

September 28 2016

La piattaforma di Infobip, creata internamente, gestisce ogni giorno oltre 200 milioni di transazioni per più di 200.000 utenti business in tutto il mondo, inclusi sviluppatori, società Internet, banche e altri clienti. Molte di queste aziende utilizzano la nostra piattaforma per eseguire il routing delle chiamate vocali.

Creare una funzionalità che ci consentisse di effettuare il routing delle chiamate è stata una grande sfida. Ci ha richiesto qualche settimana di ricerca e sviluppo è una stretta collaborazione tra sviluppatori. Ed è interessante notare che non si è trattato solo di scrivere codice.

Il nostro team Voice ha dovuto configurare un SBC* (Session Border Controller) per risolvere il problema delle chiamate vocali in entrata tramite un server ENUM* sviluppato dal team di monitoraggio degli SMS, che effettua richieste di routing ad IPCore per costringerlo a selezionare un gateway.

In realtà è stato necessario scrivere ben poco codice, la maggior parte del lavoro consisteva nell'abbinare componenti esistenti in un puzzle che tenterò qui di descrivere.

Dopo che il Session Border Controller ha ricevuto una chiamata in entrata, deve trasformare il numero digitato in un indirizzo IP, al quale verrà poi indirizzata la chiamata. Questa operazione è stata preconfigurata stabilendo una configurazione statica che abbina qualsiasi prefisso numerico a uno specifico indirizzo IP.

Mantenere una configurazione di tale complessità era una vera sfida, poiché non era ben integrata nel resto dell'ecosistema Infobip (il quale gestisce il routing tramite il nostro sistema di gestione interno degli account).

Fortunatamente, l'SBC può essere configurato in modo tale da effettuare richieste ENUM, sostanzialmente ricerche DNS che trasformano un numero digitato il un indirizzo. IP. Non abbiamo analizzato l'intero RFC3761, ma semplicemente analizzato scarti wireshark di pacchetti UDP e decompilato il protocollo.

Insieme ai numeri digitati, l'SBC invia anche l'indirizzo IP del client, che viene poi utilizzato dal proxy SBC ENUM per trasformarlo nel nostro SmsChannelId con una chiamata al servizio SBC API.

Una volta ottenuto il numero digitato (indirizzo di destinazione) e l'ID del client (SmsChannelId), possiamo richiedere ad IPCore di scegliere un gateway. Per farlo, basta inviare il messaggio al numero digitato per conto del client, lasciando che il nostro team IPCore utilizzi le regole di routing standard per la scelta di un gateway.

Ogni gateway è configurato in modo da inviare una richiesta HTTP al servizio proxy SBC ENUM. Tale richiesta contiene l'indirizzo IP del gateway, ovvero il risultato della query ENUM iniziale, e viene rimandata ad SBC.

Non solo abbiamo esposto i meccanismi di routing esistenti ad SBC e lasciato la strumentistica standard Infobip a gestirli, ma abbiamo ottenuto anche altri vantaggi:

  • TRACCIABILITÀ - ogni richiesta di routing è visibile su MessageLog, insiem al traffico, distinto da requestType 43. In questo modo possiamo analizzare le richieste di routing, ad esempio in Routing Test Form. In più, le richieste del gateway vengono visualizzate nei registri di comunicazione per garantire una maggiore trasparenza. Questo ha a sua volta un effetto diretto sulla capacità di altri team tecnici di monitorare le procedure di routing molto meglio che in passato.
  • SUPPORTO MNP - ora possiamo gestire i numeri passati ad altri operatori eseguendo ricerche dei numeri e scegliendo meglio i gateway. In questo modo abbiamo potuto aumentare ulteriormente il tasso di chiamate connesse con successo, fornendo così ai nostri clienti un servizio di qualità molto maggiore. Inoltre, tutto ciò ha portato a una considerevole ottimizzazione dei costi per tutte le aziende che utilizzano la nostra piattaforma per effettuare il routing delle chiamate vocali.
  • FUNZIONALITÀ DI ROUTING AVANZATE - mentre in precedenza la configurazione SBC statica era limitata alle regole route-by-prefix, ora possiamo implementare ed eseguire regole di routing molto più avanzate. Possiamo inoltre bilanciare i gateway e offrire ai clienti opzioni di routing personalizzate, blacklist e molte altre funzioni fondamentali per il servizio professionale di cui i nostri clienti hanno bisogno.

Di Milan Mimica, Software Engineer Infobip