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

En Respuesta de voz interactiva (IVR) le permite automatizar las interacciones telefónicas ofreciendo a quienes llaman un menú de opciones. Mientras que los IVR tradicionales se basan en el teclado (DTMF), los sistemas modernos suelen incluir Voz a texto (ASR) para una experiencia de usuario más natural. Puede consultar la IVR avanzado para más detalles.

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

Requisitos previos

Inicializar la carpeta del proyecto

Antes de configurar tus recursos de Vonage, crea un hogar para tu código. Esto te asegura tener un destino para 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

ngrok will forward your local port 3000 to a public URL like https://{random-id}.ngrok.app.

Important: Keep this terminal window open while developing and testing. If you close ngrok, you’ll need to update your webhook URLs with the new address.

Copy this URL. You’ll need it when configuring your Vonage application in the next step.

Note: The free version of ngrok generates a new random URL each time you restart it. For a consistent URL during development, consider using ngrok reserved domains or upgrading to a paid plan.

Aprovisiona tus recursos de Vonage

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

Crear una aplicación de voz

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

Vincular un número virtual

  1. Vaya a Numbers > Comprar Numbers y alquilar un número con Voz capacidades.
  2. Volver a Sus Applicationsseleccione su aplicación IVR y vincule el nuevo número a ella.

Gestionar la llamada entrante

Cuando un usuario llama a tu número, Vonage solicita una NCCO (Objeto de control de llamada) 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`));

Probar el IVR

  1. Inicie su servidor: node index.js.
  2. Llama a tu número de Vonage:
  • Teclado: Pulse 1. El IVR debe decir, Has pulsado 1.
  • Discurso: Diga 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: Pasar las entradas del usuario a su agente de IA para proporcionar a la persona que llama información valiosa.
  4. Personalización: Cambiar texto a voz voz o utilizar el flujo en tu OCN para reproducir archivos MP3 pregrabados en lugar de texto a voz.