Cómo crear un IVR sencillo con voz y entrada por tonos

Un Respuesta de voz interactiva (IVR) te permite automatizar las interacciones telefónicas ofreciendo a las personas que llaman un menú de opciones. Mientras que los sistemas IVR tradicionales se basan en la introducción de datos mediante el teclado (DTMF), los sistemas modernos suelen incluir la tecnología de reconocimiento de voz a texto (ASR) para ofrecer una experiencia de usuario más natural. Puedes consultar el IVR avanzado Consulta la guía para obtener más detalles.

Para obtener una visión general de los conceptos de automatización de voz y una comparación de los tres enfoques de implementación, véase Comprender la automatización de voz.

En esta guía, crearás una aplicación de Node.js que responde a una llamada y solicita al usuario que pulse una tecla o que hable. A continuación, la aplicación repetirá esa entrada a la persona que llama.

Requisitos previos

Inicializar la carpeta del proyecto

Antes de configurar tus recursos de Vonage, crea un repositorio para tu código. Así te asegurarás de tener un lugar donde guardar tus claves de seguridad más adelante.

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

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

Configuración de tus recursos de Vonage

Configure su entorno utilizando la función Panel de control de la API de Vonage.

Crear una aplicación de voz

  1. Vaya a Applications > Crear una nueva aplicación.
  2. Asigna un nombre a tu aplicación (por ejemplo, Simple-IVR-Speech-DTMF).
  3. Haz clic Generar clave pública y privada.
  4. Mover el descargado private.key Guarda el archivo en la carpeta de tu proyecto simple-ivr.
  5. En Capacidadesactivar Voz.
  6. Fije el Respuesta URL a su URL ngrok con /webhooks/answer adjunto. Ejemplo: https://{random-id}.ngrok.app/webhooks/answer. Establezca el método en GET.
  7. Fije el URL del evento a su URL ngrok con /webhooks/events adjunto. Ejemplo: https://{random-id}.ngrok.app/webhooks/events. Establece el método en POST.
  8. Haz clic Generar nueva aplicación en la parte inferior.

Vincular un número virtual

  1. Vaya a Números de teléfono > Comprar Numbers y alquilar un número con Voz capacidades.
  2. Volver a Applicationsseleccione su aplicación IVR y vincule el nuevo número a ella.

Atender la llamada entrante

Cuando un usuario llama a tu número, Vonage solicita una NCCO (Objeto de control de llamadas) de la URL de su respuesta. Cree un archivo llamado index.js y añade el siguiente 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);
});

Procesamiento de voz y DTMF

Añade el controlador de entrada a tu index.js para procesar la carga útil que Vonage envía de vuelta una vez que el usuario interactúa con el menú.

// 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`));

Prueba el sistema IVR

  1. Inicie su servidor: node index.js.
  2. Llama a tu número de Vonage:
  • Teclado: Pulsa el 1. El sistema de respuesta de voz interactiva debería decir: Has pulsado 1.
  • Discurso: Decir Hola. El IVR debería decir, Tú lo has dicho: Hola.

Próximos pasos

  1. Transferencia de llamadas: Añadir un connect acción para conectar a la persona que llama con el departamento correspondiente en función de la información introducida por el usuario a través de número de teléfono, terminal SIP o su aplicación web utilizando el Client SDK.
  2. Grabación de llamadas: Grabar y transcribir la llamada con record acción.
  3. Voz AI: Envía los datos introducidos por el usuario a tu agente de IA para proporcionar al interlocutor información útil.
  4. Personalización: Cambiar sintetizador de voz voz o utilizar el corriente en tu OCN para reproducir archivos MP3 pregrabados en lugar de texto a voz.