https://a.storyblok.com/f/270183/73823/395743d296/make-tts-calls-featured-1.png

Como fazer chamadas telefônicas com conversão de texto em fala usando o Node-RED

Publicado em May 20, 2021

Tempo de leitura: 11 minutos

Este é o quarto artigo de uma série de tutoriais intitulada “Introdução ao Nexmo e ao Node-RED”.

Nos tutoriais anteriores, você aprendeu a enviar e receber mensagens SMS programaticamente usando a API da Nexmo e a lidar com chamadas recebidas. A seguir, você aprenderá sobre chamadas efetuadas e, ao final deste artigo, terá feito sua primeira chamada com conversão de texto em fala (TTS) usando o Node-RED.

Pré-requisitos

Antes de começar, você precisará de algumas coisas:

Como obter suas credenciais

Para interagir com a Voice API, é preciso prestar atenção a alguns detalhes. Depois de criar um Account no Nexmo, acesse o painel de controle para encontrar sua chave de API e seu segredo. Em seguida, você precisará de um número virtual habilitado para a Voice API. Acesse Numbers > Comprar números para adquirir um.

A screenshot example of buying a nexmo number in the dashboard

Configurando seu editor do Node-RED

Primeiro, você precisará instalar o runtime e o editor. Isso pode ser feito tanto no seu computador local quanto em um computador de placa única (por exemplo, o Raspberry Pi) ou em diversas opções hospedadas na nuvem. Neste exemplo, usaremos o seu computador local; portanto, depois de instalar o Node-RED globalmente, basta digitar o comando abaixo no terminal para começar.

node-red

Você pode então acessar o editor do Node-RED digitando no navegador http://localhost:1880.

Depois de abrir o editor, você precisará instalar os nós do Nexmo. Você pode fazer isso na seção paleta “Gerenciar” , procurando pelo node-red-contrib-nexmo pacote e clicar em “Instalar”.

Showing how to install Nexmo on Node-Red

Agora você deve ver todos os nós do Nexmo aparecerem no lado esquerdo da tela, junto com os outros nós padrão.

Faça uma ligação com conversão de texto em fala usando o Node-RED

Criação de uma aplicação Nexmo

Algumas das APIs da Nexmo, incluindo a Voice API, utilizam os Aplicativos da Nexmo para armazenar as informações de segurança e configuração necessárias para se conectar aos terminais da Nexmo.

Na paleta do Nexmo Node-RED, vários nós permitem criar essas Applications: getrecording, earmuff, mute, hangup, transfer, createcall, playaudio, playtts e playdtmf.

Como o objetivo final é fazer uma chamada de saída, use o createcall nó, que fará uma chamada de saída usando o NCCO criado acima.

Depois de adicioná-lo à sua área de trabalho, clique duas vezes no createcall nó para abrir o editor de nós. Ao lado do Nexmo Credentials, selecione “Adicionar novo nexmovoiceapp...” no menu suspenso e clique no botão “Editar”. Preencha os detalhes abaixo e clique Create New Application.

KEY DESCRIPTION
Name Choose a name for your Voice Application, for example TTS call Node-RED.
API Key Your Nexmo API key, shown in your account overview.
API Secret Your Nexmo API secret, shown in your account overview.
Answer URL The URL that Nexmo makes a request to when handling inbound calls. Won't need one for this tutorial, so use http://example.com for now.
Event URL Nexmo will send call events (e.g. ringing, answered) to this URL. If you’d like to receive events about the progress of your call, make sure your server is exposed to the internet, then use YOUR_URL/event for this field.\

\

Caso contrário, fique à vontade para usar http://example.com — isso retornará um código de resposta 200 OK.\

\

Você também pode substituir esse eventURL para um createCall nó nas propriedades do próprio nó.

O Node-RED criará então um novo aplicativo Nexmo no seu Account e preencherá os campos “ID do aplicativo” e “Chave privada” para que você os salve. Agora você pode encontrar esse aplicativo no seu painel do Nexmo em Voice > Seus Applications.

Showing how to create a voice application

Criar o Objeto de Controle de Chamadas da Nexmo (NCCO)

As chamadas do Nexmo são controladas por meio de Objetos de Controle de Chamadas da Nexmo, também conhecidos como NCCOs. Um NCCO define uma lista de ações a serem executadas durante o atendimento de uma chamada. Há diversas ações disponíveis; encontre os nós correspondentes na paleta Nexmo do seu editor Node-RED ou consulte a Referência de NCCO para saber mais sobre elas.

Neste tutorial, vamos usar a talk ação.

Assim que o NCCO estiver pronto, ele será repassado ao createcall nó, que será usado para realizar a chamada de saída. Esse createcall nó aceita três tipos de entrada para o NCCO no Answer campo: JSON, URL ou msg.ncco. Dependendo da opção escolhida, há três maneiras correspondentes de criar o NCCO, conforme descrito a seguir.

msg.ncco

Arraste e solte o talk nó para sua área de trabalho, clique duas vezes nele para abrir as propriedades do nó e defina o Text{} campo com a mensagem que você deseja que seja lida em voz alta quando a chamada for atendida. Observe o {} símbolo ao lado do Text rótulo, indicando que esse valor pode ser definido dinamicamente, usando modelos Mustache. Você também pode selecionar um Voice Name; consulte o Guia de Conversão de Texto em Fala para obter a lista completa de opções.

Em seguida, conecte talk saída do nó ao createcall nó e, em seguida, nas createcall propriedades do nó, selecione msg.ncco no Answer menu suspenso.

Example how to create the talk message ncco

JSON

Se você preferir escrever seu NCCO em formato JSON, em vez de usar os nós de ação, pode fazê-lo no createcall nó. Abra as propriedades do nó e selecione JSON no Answer campo. Expanda o editor de JSON e cole o trecho abaixo:

[
    {
        "action": "talk",
        "text": "This is a text to speech message from Nexmo"
    }
]

Certifique-se de ter definido talk como action, mas fique à vontade para personalizar o text.

Example on how to create talk json ncco

URL da resposta

Como alternativa, você pode disponibilizar o NCCO em um AnswerURL. Nesse caso, você também precisará expor seu servidor local à internet.

Arraste e solte o talk nó para sua área de trabalho e, em seguida, conecte-o a um voice webhook nó de entrada e a um return NCCO nó de saída. Em seguida, no voice webhook nó, selecione GET como método e digite algo como /answer no campo “URL de resposta”.

Por fim, acesse as talk propriedades do nó e defina o Text{} campo com a mensagem que você deseja que seja lida em voz alta quando a chamada for atendida. Observe o {} símbolo ao lado do Text rótulo, indicando que esse valor pode ser definido dinamicamente, usando modelos Mustache.

Você também pode selecionar um Voice Name, consulte o Guia de Sintetização de Fala para ver a lista completa de opções.

Example showing how to create a talk answer url ncco

Expondo seu servidor local à internet

Em seguida, você precisará expor seu servidor local à internet, para que a Nexmo possa acessá-lo. Se você estiver executando o Node-RED em um servidor web público, em vez de na sua máquina local, pode pular esta etapa.

Caso contrário, uma maneira prática de fazer isso é usando um serviço de tunelamento como ngrok.

Baixe e instale o ngroke, em seguida, execute-o no terminal para iniciar um túnel na porta 1880.

./ngrok http 1880

Acesse a URL exibida para encontrar o Editor do Node-RED.

Por fim, acesse as createcall propriedades do nó e selecione URL na Answer menu suspenso e preencha o campo com YOUR_URL/answer

Ngrok update answer call url

Fazendo uma chamada de saída

A seguir, vamos examinar mais de perto as createcall propriedades do nó. Para efetivamente realizar a chamada de saída, você precisa preencher mais alguns detalhes.

Primeiro, selecione Phone no Endpoint menu suspenso. Isso encaminhará a chamada para um número de telefone, que você pode especificar no campo de texto ao lado do Number{} rótulo.

Observe o {} sinal, que significa que o sistema de modelos Mustache são compatíveis com esses campos. Você pode inserir um número de telefone diretamente aqui ou passá-lo dinamicamente usando um inject nó e, nesse caso, referenciá-lo com {{msg.payload}}.

Passando para a próxima etapa, defina um dos seus números virtuais como o From{} número.

Adicione um inject nó ao fluxo e conecte-o como uma entrada para createcall. Nas propriedades do nó, selecione Number na Payload menu suspenso e preencha o campo de texto ao lado com o número de telefone para o qual deseja ligar, no formato E.164. Por exemplo, 447401234567.

Para entender um pouco melhor o que acontece quando você faz a chamada, conecte a createcallsaída do ' a um debug nó.

Agora clique em “Implantar” e clique no inject botão do nó — seu celular deve tocar a qualquer momento!

Making a TTS call with the talk NCCO

Opcional: Webhook de evento

Se você quiser receber notificações sobre o andamento da sua chamada, também pode configurar um webhook de eventos. Primeiro, você precisará configurar um manipulador de eventos e, em seguida, expor seu servidor local à internet.

Configurando um manipulador para a URL do evento

Conecte um http nó de entrada a um http response nó, bem como a um debug nó, para que você possa visualizar seu comprovante de entrega na área de depuração.

No http nó de entrada, selecione POST como Method e preencha o URL campo com algo como /event. O http response nó deve ter 200 definido como Status code, mas não se preocupe com isso, esse também é o valor padrão.

Even handler TTS

Expondo seu servidor local à internet

Em seguida, você precisará tornar seu servidor local acessível pela internet, para que a Nexmo possa acessá-lo. Se você estiver executando o Node-RED em um servidor web público ou tiver optado por disponibilizar o NCCO em um AnswerURL, pode pular esta etapa.

Caso contrário, uma maneira prática de fazer isso é usando um serviço de tunelamento como ngrok.

Baixe e instale o ngroke, em seguida, execute-o no terminal para iniciar um túnel na porta 1880.

./ngrok http 1880

Acesse a URL exibida para encontrar o Editor do Node-RED.

Ngrok nodered TTS Outbound call

Atualizar a URL do evento

Por fim, abra as createcall propriedades do nó e preencha o Event URL campo com YOUR_URL/event.

Update event url TTS

Acesso Implantar e clique no inject botão do nó — seu celular vai tocar a qualquer momento! Agora você também pode acompanhar o fluxo da sua chamada na barra lateral de depuração.

Para onde vamos agora?

Compartilhar:

https://a.storyblok.com/f/270183/372x373/36054b72d0/julia-biro.png
Julia BiroRepresentante de Desenvolvedores

Julia está empenhada em capacitar outros desenvolvedores por meio da criação de tutoriais, guias e recursos práticos. Com experiência em divulgação e educação, ela busca tornar a tecnologia mais acessível e aprimorar a experiência geral dos desenvolvedores. É comum encontrá-la em eventos da comunidade local.