Como criar um IVR simples com entrada por voz e teclado

Um Resposta Interativa de Voz (IVR) permite automatizar interações telefônicas, oferecendo aos usuários um menu de opções. Enquanto os IVRs tradicionais dependem da entrada por teclado (DTMF), os sistemas modernos costumam incluir o recurso de conversão de fala em texto (ASR) para proporcionar uma experiência mais natural ao usuário. Você pode consultar o IVR avançado Consulte o guia para obter mais detalhes.

Para uma visão geral dos conceitos de automação de voz e uma comparação entre as três abordagens de implementação, consulte Entendendo a automação por voz.

Neste guia, você criará um aplicativo em Node.js que atende uma chamada e solicita que o usuário pressione uma tecla ou fale. Em seguida, o aplicativo repetirá essa entrada para quem ligou.

Pré-requisitos

Inicialize a pasta do seu projeto

Antes de configurar seus recursos da Vonage, crie um local para armazenar seu código. Isso garante que você tenha um destino para suas chaves de segurança mais tarde.

mkdir simple-ivr && cd simple-ivr npm init -y npm install express body-parser

Exponha seu servidor local

Vonage needs to send webhooks to your local machine. Use ngrok to expose your server:

ngrok http 3000

Note: Keep this terminal open and copy your ngrok URL. You'll need it in the next steps.

Configure seus recursos da Vonage

Configure seu ambiente usando o Painel da API da Vonage.

Criar um aplicativo de voz

  1. Acesse Applications > Criar um novo aplicativo.
  2. Dê um nome ao seu aplicativo (por exemplo, Simple-IVR-Speech-DTMF).
  3. Clique Gerar chave pública e chave privada.
  4. Mova o arquivo baixado private.key salve o arquivo na pasta do seu projeto simple-ivr.
  5. Sob Recursos, ativar Voz.
  6. Defina o URL da resposta ao seu URL do ngrok com /webhooks/answer anexado. Exemplo: https://{random-id}.ngrok.app/webhooks/answer. Defina o método como GET.
  7. Defina o URL do evento ao seu URL do ngrok com /webhooks/events anexado. Exemplo: https://{random-id}.ngrok.app/webhooks/events. Defina o método como POST.
  8. Clique Criar um novo pedido na parte de baixo.

Vincular um número virtual

  1. Acesse Números de telefone > Números para compra e alugar um número com Voz recursos.
  2. Voltar para Applications, selecione seu aplicativo de IVR e vincule o novo número a ele.

Atender a chamada recebida

Quando um usuário liga para o seu número, a Vonage solicita um NCCO (Objeto de controle de chamadas) da URL da sua resposta. Crie um arquivo chamado index.js e adicione o seguinte código:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

// 1. Initial greeting and input request
app.get('/webhooks/answer', (req, res) => {
  const ncco = [
    {
      action: 'talk',
      text: 'Hello. Please enter a digit or say something.',
      bargeIn: true
    },
    {
      action: 'input',
      type: ['dtmf', 'speech'],
      dtmf: { maxDigits: 1 },
      speech: { language: 'en-us' },
      eventUrl: [`${req.protocol}://${req.get('host')}/webhooks/input`]
    }
  ];

  res.json(ncco);
});

Processar entrada de voz e DTMF

Adicione o manipulador de entrada ao seu index.js para processar a carga útil que a Vonage envia de volta assim que o usuário interage com o menu.

// 2. Handle the user's response
app.post('/webhooks/input', (req, res) => {
  let responseText = "I'm sorry, I didn't catch that.";

  if (req.body.dtmf && req.body.dtmf.digits) {
    responseText = `You pressed ${req.body.dtmf.digits}.`;
  }
  else if (req.body.speech && req.body.speech.results) {
    const transcript = req.body.speech.results[0].text;
    responseText = `You said: ${transcript}.`;
  }

  res.json([{ action: 'talk', text: responseText }]);
});

// 3. Log call events
app.post('/webhooks/events', (req, res) => {
  res.sendStatus(200);
});

app.listen(3000, () => console.log(`IVR server running on port 3000`));

Teste o IVR

  1. Inicie seu servidor: node index.js.
  2. Ligue para o seu número da Vonage:
  • Teclado: Pressione 1. O sistema de atendimento automatizado (IVR) deve dizer: Você digitou 1.
  • Discurso: Diga Olá. O IVR deveria dizer: Você disse: Olá.

Próximos passos

  1. Transferência de chamada: Adicionar um connect ação para conectar o chamador ao departamento pertinente com base nas informações fornecidas pelo usuário por meio de número de telefone, terminal SIP ou seu aplicativo web usando o Client SDK.
  2. Gravação de chamadas: Gravar e transcrever a ligação com record ação.
  3. IA de voz: Envie a entrada do usuário para o seu agente de IA para fornecer informações úteis ao interlocutor.
  4. Personalização: Alterar conversão de texto em fala falar ou usar o fluxo configure no seu NCCO para reproduzir arquivos MP3 pré-gravados em vez da função de conversão de texto em fala.