https://a.storyblok.com/f/270183/99864/1007cc80f7/conference-call-node-red-featured.png

Criar uma teleconferência com o Node-RED

Publicado em May 24, 2021

Tempo de leitura: 13 minutos

Observação: algumas das ferramentas ou métodos descritos neste artigo podem não ter mais suporte ou estar desatualizados. Para obter conteúdo atualizado ou suporte, consulte nossas postagens mais recentes ou nossa Documentação

Nos tutoriais anteriores, você teve a oportunidade de dar os primeiros passos no mundo das APIs da Nexmo, fazendo e recebendo chamadas telefônicas usando a Voice APIe, esperamos, também personalizar essas experiências.

No tutorial de hoje, vamos dar um passo adiante e criar um serviço de conferência por voz.

O usuário liga para um número virtual predefinido e digita um ID de reunião usando o teclado numérico; em seguida, ele é colocado na mesma teleconferência com todas as outras pessoas que forneceram o mesmo ID.

Etapas:

  1. Pré-requisitos

  2. Exponha seu servidor local à Internet

  3. Definir o ponto de extremidade do webhook para chamadas recebidas

  4. Defina o ponto de extremidade do webhook para o evento de entrada

  5. Criar um aplicativo de voz da Nexmo

  6. Configurar um número para ligar

  7. Lide com seus eventos de chamada

  8. Experimente!

Pré-requisitos

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

  • Node.js e Node-RED instalados no seu computador

  • Uma maneira de expor seu servidor à internet. Isso significa que você está executando uma versão hospedada do Node-RED ou, caso esteja desenvolvendo localmente, utilizando um serviço de tunelamento como ngrok—fique por dentro disso Tutorial de Introdução ao Ngrok no Node-RED tutorial

Como obter suas credenciais

Para interagir com a Voice API, é preciso levar em conta alguns pontos. 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 Voice-enabled . Acesse Numbers > Comprar números para adquirir um.

Buy number Nexmo dashboardBuy number Nexmo 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 por meio de várias opções hospedadas na nuvem. Neste exemplo, usaremos o seu computador local; portanto, depois de instalar o Node-RED globalmente, digite o comando abaixo no seu 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”.

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

Exponha seu servidor local à Internet

A API da Nexmo precisará de acesso aos seus webhooks para fazer chamadas para eles, então vamos torná-los acessíveis pela internet pública. Se você estiver executando o Node-RED em um servidor web público em vez de na sua máquina local, já está tudo pronto para seguir em frente para a Criar um aplicativo de voz da Nexmo .

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

Primeiro, você precisará instalar o ngrok no Node.js. Para isso, abra paleta “Gerenciar” no menu de hambúrguer do seu editor Node-RED, procure pelo node-red-contrib-ngrok pacote e clicar em “Instalar”. Após reiniciar o editor, o ngrok nó deve aparecer na paleta de nós.

ngrok manage palettengrok manage palette

O ngrok nó recebe as cadeias de caracteres em ou desativado como entrada para iniciar/parar o túnel e gera o endereço do host do ngrok como o msg.payload.

A maneira mais fácil de fazer isso é conectar dois inject nós como ngrok entrada do nó, um com a carga útil da string em e o outro com desligado. Para facilitar o uso, você também pode definir o Name nome desses nós de acordo com a função de cada um nas propriedades do nó, para que fique claro qual é a funcionalidade de cada um. Em seguida, para exibir o endereço do host na barra lateral de depuração, conecte um debug nó após ngrok.

Como última etapa antes de clicar em “Implantar”, abra as ngrok propriedades do nó e especifique o número da porta. No caso do Node-RED, o valor padrão é 1880. A região padrão do ngrok é os EUA, mas você também pode defini-la como Europa ou Ásia. Você também pode adicionar seu token de autenticação da conta do ngrok, caso tenha um. Não se preocupe se não tiver; basta pular esta etapa por enquanto. O nó exibirá um aviso informando que não está totalmente configurado, mas isso não representa nenhum problema.

ngrok node propertiesngrok node properties

E pronto! Assim que você clicar em “Implantar” e clicar no no inject nó, acesse a URL exibida na área de depuração (YOUR_URL para referência futura) para encontrar seu editor do Node-RED em um endereço público.

ngrok node-redngrok node-red

Definir o ponto de extremidade do webhook para chamadas recebidas

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; localize os nós correspondentes na paleta Nexmo do seu editor Node-RED ou consulte a Referência de NCCO para saber mais sobre elas.

Ao atender chamadas recebidas, é necessário que seu NCCO esteja hospedado em um URL de resposta. Nesse caso, usaremos uma talk ação para solicitar o ID da reunião e, em seguida, uma input ação para coletá-lo.

Adicione um voice webhook nó de entrada à sua tela, seguido por um talk nó, um input nó e um return NCCO nó de saída.

Em seguida, no voice webhook nó, selecione GET como um Method e digite /answer no campo “URL da resposta”.

Nas talk propriedades do nó, defina o Text{} campo com a mensagem que você deseja que seja lida em voz alta quando a chamada for atendida. Por exemplo: “Digite o ID da reunião”. Você também pode selecionar uma Voice Name; consulte o Guia de conversão de texto em fala para obter a lista completa de opções.

Por fim, abra o input editor de nós, defina YOUR_URL/input como o URL {} e POST como um Method.

Neste momento, você também pode definir alguns outros parâmetros para personalizar ainda mais a experiência:

Name Description
Submit On Hash: Set to true so the caller's activity is sent to your webhook endpoint at YOUR_URL/input after they press #. If # is not pressed the result is submitted after Time Out seconds. The default value is false.
Time Out: The result of the caller's activity is sent to the YOUR_URL/input webhook endpoint Time Out seconds after the last action. The default value is 3. Max is 10.
Max Digits: The number of digits the user can press. The maximum value is 20, the default is 4 digits.

Saiba mais sobre esses assuntos na Referência da NCCO.

conference answer urlconference answer url

Defina o ponto de extremidade do webhook para o evento de entrada

Você também precisará de um segundo endpoint para capturar a entrada DTMF do usuário e, com base no código que ele tiver enviado, colocá-lo em uma conversa.

Adicione outro voice webhook nó de entrada à sua tela, seguido por um talk nó, um conversation nó e um return NCCO nó de saída.

voice webhook

Nas voice webhook propriedades do nó, selecione POST como método e digite /input no campo URL de resposta.

Se você conectasse um debug nó depois dele, ao concluir e executar o fluxo, você veria os parâmetros retornados para o /input URL:

Name Description
uuid The unique ID of the Call leg for the user initiating the input.
conversation_uuid The unique ID for this conversation.
timed_out Returns true if this input timed out based on the value of Time Out.
dtmf The numbers input by your caller, in order.

No nosso caso de uso, estamos tentando obter o dtmf valor, já que esse é o ID da reunião fornecido pelo autor da chamada.

Ao examinar mais de perto a barra lateral de depuração nas sugestões de autocompletamento, podemos ver que ela ficará na dtmf propriedade do call objeto aninhado dentro do msg objeto, de modo que podemos referenciá-la como {{msg.call.dtmf}} nos outros nós desse caminho.

dtmf debugdtmf debug

talk

Em seguida, abra o talk editor de nós e defina o Text{} campo com a mensagem que você deseja que seja lida em voz alta assim que o participante digitar o ID da reunião.

Observe o {} símbolo ao lado do Text rótulo, indicando que esse valor pode ser definido dinamicamente, usando modelos Mustache, de modo que você poderia usar algo como Joining meeting {{msg.call.dtmf}}.

Fique à vontade para personalizar ainda mais a experiência, selecionando um Voice Name ou utilizando tags SSML

conversation

Estamos usando a conversation ação para criar uma conferência padrão; portanto, o único parâmetro que precisamos definir é Name {}. Usar a ação de conversa com o mesmo nome reutiliza a mesma conversa armazenada, por isso é prático nomeá-la com o ID da reunião, referenciando {{msg.call.dtmf}} A primeira pessoa a ligar para o número virtual atribuído à conversa é quem a cria.

conference conversation nodeconference conversation node

No futuro, talvez você queira dar um passo adiante e criar uma Conversação moderada com controles de áudio seletivos. Confira a referência da NCCO para saber mais.

Quando terminar de seguir esse caminho, o resultado deverá ficar parecido com isto:

conference input urlconference input url

Criar um aplicativo de voz da 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.

Arraste qualquer um desses nós para a sua área de trabalho e, em seguida, clique duas vezes nele para abrir as propriedades do nó.

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 Conference Call.
API Key Your Nexmo API key, shown in your account overview.
API Secret Your Nexmo API secret, shown in your account overview.
Answer URL YOUR_URL/answer, you'll be hosting a Nexmo Call Control Object (NCCO) here. - more about this later on.
Event URL YOUR_URL/event, you'll need to reference this when setting up the event handler.

O Node-RED criará então uma nova Application Nexmo no seu Account e preencherá os campos “App ID” e “Private Key” para que você os salve. Após essa etapa, fique à vontade para excluir o nó Nexmo que você utilizou, já que um nexmovoiceapp já foi criado um nó de configuração, que contém todas as credenciais do Nexmo necessárias para este fluxo.

conference create voice appconference create voice app

Configurar um número para ligar

Em seguida, você precisará vincular seu número virtual a este aplicativo.

Encontre o aplicativo de voz que você acabou de criar no seu painel do Nexmo, acessando Voice > Seus Applications.

Clique no nome deste aplicativo e, em seguida, na seção Numbers , clique na botão “Link” ao lado do número virtual que você alugou anteriormente.

Caso o número que você deseja usar já esteja vinculado a outro aplicativo, clique em Gerenciar número e configure-o para encaminhar as chamadas recebidas para o seu aplicativo.

conference link numberconference link number

Dica extra: Use um comment node para anotar o número da Nexmo vinculado ao seu aplicativo; assim, você sempre o terá à mão.

Lide com seus eventos de chamada

Se você quiser receber notificações sobre o andamento da sua chamada, também pode configurar um webhook de eventos.

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

No http nó de entrada, selecione POST como Method e preencha o URL campo com /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.

conference final flowconference final flow

Experimente!

E pronto! Chame um amigo ou mais e experimentem! Não se esqueçam de dar uma olhada na área de depuração para acompanhar os eventos de chamada. Divirtam-se!

E agora, para onde vamos?

Recursos:

Experimente outro tutorial:

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.