Você pode ter ouvido ou lido sobre a função Call Screening que o Google lançou para seus telefones Pixel nos EUA. A ideia é ótima – quando você recebe uma chamada, o assistente virtual começa a conversar, enquanto você vê essa conversa em forma de chat e pode a qualquer momento começar a falar em vez do assistente. Isso é muito útil hoje em dia, quando quase , mas mesmo assim você não quer perder chamadas importantes de alguém que não está na sua lista de contatos. A única complicação é que essa funcionalidade está disponível apenas no telefone Pixel e apenas nos EUA. Bem, existem obstáculos para serem superados, certo? Portanto, decidimos contar como fazer uma solução semelhante usando Voximplant e Dialogflow. Continue lendo.
Arquitetura
Não vou perder tempo explicando como funcionam o Voximplant e o Dialogflow, se desejar, você pode facilmente encontrar informações na internet. Então, vamos nos familiarizar com o conceito do nosso Call Screening.
Suponha que você já tenha um número de telefone que usa diariamente e que recebe chamadas importantes. Nesse caso, precisaremos de um segundo número, que será indicado em todos os lugares – no e-mail, no cartão de visita, quando você preenche formulários online, etc. Esse número será conectado ao sistema de processamento de linguagem natural (neste caso, o Dialogflow) e irá redirecionar chamadas para seu número principal, somente se você desejar. Em forma de esquema, isso se parece com isto (imagem clicável):
Entendendo a arquitetura, podemos começar a implementação, mas com uma ressalva: não vamos criar um aplicativo móvel para mostrar o diálogo entre o Dialogflow e o chamador, vamos criar um simples aplicativo webcom renderização de diálogo, para demonstrar claramente o princípio do funcionamento do Call Screening. Neste aplicativo haverá um botão Intervene, ao qual, ao ser pressionado, o Voximplant conectará o chamador que está ligando ao destinatário, caso este decida falar pessoalmente.
Implementação
Faça login em e crie um novo aplicativo, por exemplo, screening:

Abra e compre um número que funcionará como intermediário:

Em seguida, acesse o aplicativo screening, na seção "Números", aba "Disponíveis". Aqui você verá o número recém-adquirido. Vincule-o ao aplicativo usando o botão "Anexar" – na janela que aparecer, mantenha todas as configurações padrão e clique em "Anexar".
Dentro do aplicativo, vá para a aba "Cenários" e crie um cenário myscreening – nele, usaremos o código do artigo . Nesse caso, o código será ligeiramente alterado, porque precisamos "ver" o diálogo entre o chamador e o assistente; todo o código pode ser .
ATENÇÃO: você precisará mudar o valor da variável server para o nome do seu servidor ngrok (detalhes sobre ngrok estarão um pouco mais abaixo). Também insira seus valores na linha 31, onde your phone number – é seu número principal (por exemplo, um celular pessoal), e voximplant number – é o número que você comprou recentemente.
outbound_call = VoxEngine.callPSTN(“SEU NÚMERO DE TELEFONE”, “NÚMERO VOXIMPLANT”)A chamada callPSTN ocorrerá no momento em que você decidir intervir na conversa e falar pessoalmente com o chamador.
Depois de salvar o cenário, você precisa vinculá-lo ao número adquirido. Para isso, ainda dentro do seu aplicativo, vá para a aba "Roteamento" para criar uma nova regra – botão "Nova regra" no canto superior direito. Insira um nome (por exemplo, allcalls), mantenha a máscara padrão (.* – que significa que todas as chamadas recebidas serão processadas pelos cenários selecionados para esta regra) e indique o cenário myscreening.

Salve a regra.
A partir de agora, o número de telefone está vinculado ao cenário. A última coisa que precisa ser feita é vincular o bot ao aplicativo. Para isso, vá para a aba "Conector Dialogflow", clique no botão "Adicionar agente Dialogflow" no canto superior direito e faça o upload do arquivo JSON do seu agente Dialogflow.

Se você precisa de um agente para exemplo/teste, pode pegar o nosso neste link: . Apenas não espere muito dele, é apenas um exemplo, e você está livre para modificá-lo como desejar e compartilhar os resultados 🙂
Backend simples em NodeJS
Vamos implementar um backend simples em Node, por exemplo, assim:
É um aplicativo comum que requer apenas dois comandos para iniciar:
npm install
node index.js
O servidor será executado na porta 3000 da sua máquina, então, para conectá-lo à nuvem Voximplant, utilizamos a ferramenta ngrok. Quando você instalar , inicie-o com o comando:
ngrok http 3000Você verá um nome de domínio que o ngrok gerou para o seu servidor local – copie-o e insira na variável server.
Cliente
O aplicativo cliente se parece com um simples chat que você pode.
Basta copiar todos os arquivos para um diretório no seu servidor web e funcionará. No arquivo script.js, substitua o valor da variável server pelo nome de domínio ngrok e o valor da variável callee pelo número que você comprou. Salve o arquivo e inicie o aplicativo no navegador. Se tudo estiver certo, você verá a conexão WebSocket no painel do desenvolvedor.
Demonstração
Você pode ver o aplicativo em ação neste vídeo:

P. S. Se você clicar no botão Intervene, a chamada será direcionada para o meu número de telefone, e se clicar em Disconnect – então…? Correto, a chamada será desconectada.
Fonte: habr.com
