https://a.storyblok.com/f/270183/132125/d681bc2159/call-to-inapp-voice.jpg

Como conectar uma chamada telefônica ao serviço In-App Voice da Nexmo

Publicado em May 12, 2021

Tempo de leitura: 3 minutos

A Voice API da Nexmo permite que você desenvolva aplicativos de voz programáveis de alta qualidade na nuvem. Com a Voice API, você pode gerenciar chamadas de saída e de entrada em JSON, gravar e armazenar chamadas, criar uma teleconferência, enviar mensagens de conversão de texto em fala em 23 idiomas com diversas vozes e sotaques, entre outras funcionalidades.

Nexmo Stitch, um novo produto atualmente em fase de Developer Preview, permite a comunicação por diversos canais, incluindo In-App Messaging e In-App Voice.

Nesta postagem, vamos aprender como redirecionar uma chamada recebida de um número de telefone da Nexmo para um usuário do Stitch, implementando um Webhook e vinculando-o a um aplicativo do Nexmo Voice.

Antes de começarmos, você vai precisar de algumas coisas:

  • Node.js instalado no seu computador

  • Instale a CLI do Nexmo Beta:

  • Configure a CLI para usar sua chave de API e seu segredo de API da Nexmo. Você pode obtê-los na página de configurações no painel do Nexmo:

$ nexmo setup api_key api_secret

Encaminhamento de uma chamada para um usuário do Stitch

Quando um usuário liga para um número de telefone virtual da Nexmo associado a um aplicativo de voz, a Nexmo recupera os Objetos de Controle de Chamadas da Nexmo (NCCO) do seu answer_url ponto de extremidade do Webhook. Tentaremos atender a chamada com uma voz sintetizada que lerá um texto e, em seguida, encaminhará a chamada para um usuário do Stitch. Usaremos o NCCO para criar o fluxo da chamada.

Criação de um endpoint de webhook

Sou especialista em JavaScript, então vou escrever o Webhook usando o Node e ExpressJS. Se você preferir uma linguagem diferente, fique à vontade para usar outra — existem bibliotecas de cliente da Nexmo para JavaScript, Java, Python, PHP, Rubye .NET!

Precisaremos instalar algumas coisas:

$ npm install express body-parser --save

Crie um index.js arquivo, instancie o Express e o Body-Parser e escute o servidor na porta 3000.

'use strict';
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

const server = app.listen(3000, () => {
  console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env);
});

Vamos adicionar um endpoint para /event que registre todos os eventos provenientes do aplicativo Nexmo:

app.post('/event', (req, res) => {
  console.log(req.body);
  res.status(200).end();
});

Também precisamos de um endpoint para /answer, que responda a solicitações HTTP GET e forneça o NCCO quando o aplicativo Nexmo recuperar o answer_url. Usaremos um talk bloco de construção para que a chamada gere uma mensagem de conversão de texto em fala, informando ao usuário que ele está ligando Jamie, seguido por um connect bloco. Precisaremos adicionar um rtc ao endpoint para conectar a chamada a um usuário existente do Stitch. Você pode adicionar seu próprio número de telefone no from campo.

app.get('/answer', (req, res) => {
  var ncco = [
    {
      action: "talk",
      text: "Thank you for calling Jamie"
    },
    {
      "action": "connect",
      "from": "449876543210",
      "endpoint": [
        {
          "type": "rtc",
          "user": "jamie"
        }
      ]

    }
  ];
  res.json(ncco);
})

Agora vamos executar o servidor:

$ node index.js

Enquanto estiver desenvolvendo, você pode executar o servidor localmente e usar o ngrok para torná-lo publicamente acessível na internet, para que a Nexmo possa acessá-lo. Temos um tutorial sobre como fazer isso!

Agora, vamos ter que conectar o Webhook a uma Application da Nexmo. Vou partir do princípio de que você já tem uma e vou mostrar como atualizar essa Application para usar o Webhook que acabamos de criar.

Atualize seu aplicativo atual com URLs de Webhook

Você precisa do ID do aplicativo para atualizar as informações. Você pode usar o app:list comando na CLI do Nexmo:

$ nexmo app:list

A CLI deve retornar uma lista com cada ID de aplicativo e o nome do aplicativo. Agora, use o ID de aplicativo correto para atualizar o aplicativo com as URLs dos webhooks:

$ nexmo app:update aaaaaaaa-bbbb-cccc-dddd-0123456789ab "My Voice App" https://6e5c2f7a.ngrok.io/answer https://6e5c2f7a.ngrok.io/event

Por fim, você precisa associar seu aplicativo ao número virtual que você aluga da Nexmo. Vamos usar a CLI da Nexmo novamente. Use o comando nexmo link:app seguido do número de telefone, que deve começar com o código do país e, em seguida, o ID do aplicativo. Portanto, o comando deve ficar assim:

$ nexmo link:app 449876543210 aaaaaaaa-bbbb-cccc-dddd-0123456789ab

Quando a vinculação é bem-sucedida, a CLI exibe a mensagem “Número atualizado”.

Conclusão

Agora que você vinculou seu número ao seu aplicativo, sempre que alguém ligar para o seu número Nexmo, será conectado a um usuário do Stitch por meio do recurso In-App Voice. Se quiser testar isso, confira o guia em JavaScript que detalha como você pode implementar chamadas usando os SDKs do Stitch.

E agora?

Se você quiser continuar aprendendo a usar o SDK do Nexmo Stitch para JavaScript, confira nossos guias de início rápido sobre In-App Messaging, nos quais mostramos como criar uma conversa simples, convidar e conversar com outro usuário e usar mais ouvintes de eventos para mostrar o histórico do bate-papo e quando um usuário está digitando. Se você tiver mais dúvidas sobre como usar o Stitch, recomendamos que participe da Slack da comunidade Nexmo e conferir nossa #stitch ou nos envie um e-mail diretamente para ea-support@nexmo.com.

Compartilhar:

https://a.storyblok.com/f/270183/384x384/dabe7c5397/laka.png
Alex LakatosEx-funcionários da Vonage

Alex Lakatos é um Developer Advocate de JavaScript na Nexmo. Em seu tempo livre, ele atua como voluntário na Mozilla como palestrante técnico e mentor do programa Reps. Como desenvolvedor de JavaScript que trabalha na web aberta, ele vem ampliando seus limites a cada dia. Quando não está programando em Londres, ele gosta de viajar pelo mundo; por isso, é provável que você o encontre em um lounge de aeroporto.