Development

Roteamento de chamadas de voz: Muito mais do que apenas codificação!

Desenvolver a capacidade de rotear chamadas por conta própria foi algo muito difícil de fazer e o que é interessante - não teve nada a ver com a codificação.

September 27 2016

A plataforma desenvolvida internamente da Infobip processa mais de 200 milhões de transações diárias para mais de 200.000 usuários de negócios em todo o mundo - desenvolvedores, empresas de Internet, bancos, entre outros. Um grande número dessas empresas está usando a nossa plataforma para rotear chamadas de voz.

Desenvolver a capacidade de rotear chamadas por conta própria foi algo muito difícil de fazer. Isso exigiu uma estreita colaboração das equipes de desenvolvedores e algumas semanas de pesquisa e desenvolvimento. E o que é interessante - não teve nada a ver com a codificação.

Nossa equipe de Voz precisou configurar o Session Border Controller (SBC*) para solucionar as chamadas de voz recebidas por meio de um servidor baseado em ENUM* desenvolvido pela equipe de monitoramento de SMS, que faz solicitações de roteamento para o IPCore para fazê-lo escolher um gateway.

Isso efetivamente envolveu pouquíssima codificação, e abrangeu muito mais colocar os componentes existentes em um quebra-cabeça que vou tentar descrever aqui.

Após o Session Border Controller receber uma chamada, ele precisa resolver o número discado em um endereço IP para o qual a chamada será encaminhada. Isso foi pré-configurado procurando uma configuração estática que mapeia cada número de prefixo para um endereço IP específico.

Manter esta configuração tão complexa foi um desafio, uma vez que ela não se integrava bem com o restante do ecossistema da Infobip, onde as rotas são geralmente gerenciadas por meio da nossa ferramenta interna de gerenciamento de contas.

Convenientemente, o SBC pode ser configurado para solicitações de ENUM, que são basicamente pesquisas de DNS que estão resolvendo um número discado para um endereço IP. Nós não analisamos todo o RFC3761, apenas pegamos os dumps wireshark de pacotes UDP e fizemos a engenharia reversa do protocolo.

Entre os números marcados, o SBC também envia o endereço IP do cliente que o proxy SBC ENUM utiliza então para resolvê-lo para o nosso SmsChannelId chamando o serviço SBC API.

Quando temos um número discado (endereço de destino) e o ID do nosso cliente (SmsChannelId), podemos pedir para o IPCore selecionar um gateway. Fazemos isso ao simplesmente enviar a mensagem para o número discado em nome do cliente, deixando que a nossa equipe IPCore utilize as regras de roteamento padrão para selecionar um gateway.

Cada gateway é configurado para enviar uma solicitação HTTP de volta para o serviço de proxy SBC ENUM. A solicitação HTTP contém o endereço IP do gateway, que é o resultado real da consulta ENUM inicial, e é devolvido para o SBC.

Nós não apenas expusemos o mecanismo de roteamento existente para o SBC, com as ferramentas padrão da Infobip para gerenciá-lo, como também obtivemos vários outros benefícios:

  • RASTREABILIDADE- cada solicitação de roteamento é visível na parte do MessageLog, juntamente com outros tipos de tráfego, denotados pelo requestType 43. Isso nos permite analisar as solicitações de roteamento, por exemplo, no Formulário de Testes de Roteamento. Além disso, as solicitações do gateway estão visíveis nos logs de comunicação, o que resultou em uma maior transparência. Isso, por sua vez, teve impacto direto sobre a capacidade de outras equipes técnicas monitorarem os processos de roteamento muito melhor do que antes.
  • SUPORTE MNP - agora podemos gerenciar os números portados adequadamente ao realizar pesquisas de números e fazer melhores escolhas de gateways. Esta foi uma melhoria significativa na qualidade do serviço experimentada pelos nossos clientes, uma vez que nos permitiu atingir taxas ainda melhores em chamadas conectadas com sucesso. Isso também permitiu uma otimização considerável dos custos para todas as empresas que usam a nossa plataforma para o roteamento de suas chamadas de voz.
  • CAPACIDADE DE ROTEAMENTO AVANÇADO- a configuração do SBC estático limitou-se a regras de rota por prefixo, enquanto que atualmente podemos implementar e executar regras de roteamento mais complexas. Podemos realizar o balanceamento de gateways, oferecendo rotas personalizadas para os clientes, e listas negras e muitos outros recursos que são fundamentais para um serviço de voz profissional que os nossos clientes necessitam.

Por Milan Mimica, Engenheiro de Software da Infobip