
Compartilhar:
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.
Como fazer chamadas telefônicas com conversão de texto em fala usando o Node-RED
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:
Opcional: ngrok - fique por dentro do postagem no blog do Aaron
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.

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.
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”.

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.

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.

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.

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.

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.
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

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!

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.

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.
Acesse a URL exibida para encontrar o Editor do Node-RED.

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

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?
Mais informações sobre a Voice API
Confira a Referência da NCCO para saber mais sobre as diversas maneiras de controlar sua chamada.
Dê uma olhada mais de perto no Node-RED
Compartilhar:
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.