Fazendo sua própria triagem de chamadas do Google com base em Voximplant e Dialogflow

Fazendo sua própria triagem de chamadas do Google com base em Voximplant e Dialogflow
Você deve ter ouvido ou lido sobre o recurso Call Screening que o Google lançou para seus telefones Pixel nos EUA. A ideia é ótima - ao receber uma chamada, o assistente virtual começa a se comunicar, enquanto você vê essa conversa em forma de chat e a qualquer momento pode começar a falar no lugar do assistente. Isto é muito útil hoje em dia, quando quase metade das chamadas são spam, mas você não quer perder chamadas importantes de alguém que não está na sua lista de contatos. O único problema é que essa funcionalidade está disponível apenas no telefone Pixel e apenas nos EUA. Bem, os obstáculos existem para serem superados, certo? Portanto, decidimos ensinar como fazer uma solução semelhante usando Voximplant e Dialogflow. Por favor, em gato.

Arquitetura

Sugiro que você não perca tempo explicando como funcionam o Voximplant e o Dialogflow, se desejar, você pode facilmente encontrar informações na Internet. Então vamos conhecer o próprio conceito do nosso Call Screening.

Suponhamos que você já tenha um determinado número de telefone que usa todos os dias e no qual recebe ligações importantes. Neste caso, precisaremos de um segundo número, que será indicado em todos os lugares - no correio, no cartão de visita, no preenchimento de formulários online, etc. Este número será conectado a um sistema de processamento de linguagem natural (no nosso caso, Dialogflow) e encaminhará chamadas para o seu número principal somente se você desejar. Em forma de diagrama, fica assim (a imagem é clicável):
Fazendo sua própria triagem de chamadas do Google com base em Voximplant e Dialogflow
Entendendo a arquitetura, podemos assumir a implementação, mas com uma ressalva: não faremos móvel aplicativo para mostrar um diálogo entre o Dialogflow e um chamador recebido, criaremos um simples teia-um aplicativo com um renderizador de diálogo para mostrar claramente como funciona a triagem de chamadas. Esta aplicação terá um botão Intervir, ao pressionar o qual o Voximplant conectará o assinante entrante com o assinante discado, caso este decida falar sozinho.

Implementação

Entrar sua conta Voximplant e crie um novo aplicativo, por exemplo triagem:

Fazendo sua própria triagem de chamadas do Google com base em Voximplant e Dialogflow
Abrir seção "Quartos" e compre um número que funcionará como intermediário:

Fazendo sua própria triagem de chamadas do Google com base em Voximplant e Dialogflow
Em seguida, acesse o aplicativo de triagem, na seção “Números”, aba “Disponíveis”. Aqui você verá o número que acabou de comprar. Vincule-o ao aplicativo através do botão “Anexar” - na janela que aparece, deixe todos os valores padrão e clique em “Anexar”.

Uma vez dentro do aplicativo, vá até a aba “Scripts” e crie um script myscreening - nele utilizamos o código do artigo Como usar o conector Dialogflow. Neste caso, o código será ligeiramente modificado, pois precisamos “ver” o diálogo entre quem chama e o assistente; todo código é possível tome aqui.

ATENÇÃO: você precisará alterar o valor da variável server para o nome do seu servidor ngrok (detalhes sobre o ngrok estarão abaixo). Substitua também seus valores na linha 31, onde seu número de telefone é o seu número principal (por exemplo, seu celular pessoal) e o número voximplant é o número que você adquiriu recentemente.

outbound_call = VoxEngine.callPSTN(“YOUR PHONE NUMBER”, “VOXIMPLANT NUMBER”)

A chamadaChamada PSTN ocorrerá no momento em que você decidir interromper a conversa e falar pessoalmente com o assinante recebido.

Depois de salvar o script, você precisa vinculá-lo ao número adquirido. Para fazer isso, ainda dentro da sua aplicação, vá até a aba "Roteamento" para criar uma nova regra - o botão "Nova Regra" no canto superior direito. Forneça um nome (por exemplo, allcalls), deixe a máscara padrão (.* - o que significa que todas as chamadas recebidas serão processadas pelos scripts selecionados para esta regra) e especifique o script myscreening.

Fazendo sua própria triagem de chamadas do Google com base em Voximplant e Dialogflow
Salve a regra.

A partir de agora, o número do telefone fica vinculado ao roteiro. A última coisa que você precisa fazer é vincular o bot ao aplicativo. Para fazer isso, vá até a aba “Dialogflow Connector”, clique no botão “Add Dialogflow Agent” no canto superior direito e carregue o arquivo JSON do seu agente Dialogflow.

Fazendo sua própria triagem de chamadas do Google com base em Voximplant e Dialogflow
Se precisar de um agente para exemplo/teste, você pode pegar o nosso neste link: github.com/aylarov/callscreening/tree/master/dialogflow. Só não exija muito disso, esse é apenas um exemplo que você é livre para refazer como quiser e fique à vontade para compartilhar os resultados :)

Back-end simples em NodeJS

Vamos implantar um back-end simples em um nó, por exemplo, assim:
github.com/aylarov/callscreening/tree/master/nodejs

Este é um aplicativo simples que requer apenas dois comandos para ser executado:

npm install
node index.js

O servidor rodará na porta 3000 da sua máquina, então para conectá-lo à nuvem Voximplant, utilizamos o utilitário ngrok. Quando você instala grok, execute-o com o comando:

ngrok http 3000

Você verá o nome de domínio que o ngrok gerou para o seu servidor local - copie-o e cole-o na variável do servidor.

Cliente

O aplicativo cliente parece um bate-papo simples que você pode pegue aqui.

Basta copiar todos os arquivos para algum diretório do seu servidor web e tudo funcionará. No arquivo script.js, substitua a variável do servidor pelo nome de domínio ngrok e a variável callee pelo número que você comprou. Salve o arquivo e inicie o aplicativo em seu navegador. Se tudo estiver bem, você verá a conexão WebSocket no painel do desenvolvedor.

Programa demonstrativo

Você pode ver o aplicativo em ação neste vídeo:


PS Se você clicar no botão Intervir, o chamador será direcionado para o meu número de telefone, e se você clicar em Desconectar, será...? Isso mesmo, a chamada será desconectada.

Fonte: habr.com

Adicionar um comentário