Aufbau eines einfachen IVR mit Sprach- und Tastatureingabe

Eine Interaktive Sprachausgabe (IVR) ermöglicht es Ihnen, Telefoninteraktionen zu automatisieren, indem Sie Anrufern ein Menü mit Optionen anbieten. Während herkömmliche IVRs auf Tastatureingaben (DTMF) eingeben, enthalten moderne Systeme häufig Sprache-zu-Text (ASR) für eine natürlichere Benutzererfahrung. Sie können sich auf die Erweiterte IVR Leitfaden für weitere Einzelheiten.

In dieser Anleitung werden Sie eine Node.js-Anwendung erstellen, die einen Anruf entgegennimmt und den Benutzer auffordert, entweder eine Taste zu drücken oder zu sprechen. Die Anwendung wird dann diese Eingabe an den Anrufer zurückgeben.

Voraussetzungen

Initialisieren Sie Ihren Projektordner

Bevor Sie Ihre Vonage-Ressourcen konfigurieren, legen Sie einen Speicherort für Ihren Code an. Dadurch wird sichergestellt, dass Sie später ein Ziel für Ihre Sicherheitsschlüssel haben.

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

Lokalen Server freilegen

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.

Bereitstellung Ihrer Vonage-Ressourcen

Konfigurieren Sie Ihre Umgebung mit der Option Vonage API Dashboard.

Erstellen einer Sprachanwendung

  1. Navigieren Sie zu Applications > Erstellen Sie eine neue Anwendung.
  2. Geben Sie Ihrer Anwendung einen Namen (z. B. Simple-IVR-Speech-DTMF).
  3. Unter Fähigkeitenaktivieren Stimme.
  4. Setzen Sie die Antwort-URL zu Ihrer ngrok-URL mit /webhooks/answer angehängt. Beispiel: https://{random-id}.ngrok.app/webhooks/answer. Setzen Sie die Methode auf
    GET
    .
  5. Setzen Sie die Ereignis-URL zu Ihrer ngrok-URL mit /webhooks/events angehängt. Beispiel: https://{random-id}.ngrok.app/webhooks/events. Setzen Sie die Methode auf
    POST
    .
  6. Klicken Sie auf Öffentlichen und privaten Schlüssel generieren.
  7. Verschieben Sie die heruntergeladenen private.key Datei in Ihren simple-ivr-Projektordner.
  8. Klicken Sie auf Änderungen speichern.

Verknüpfung einer virtuellen Number

  1. Navigieren Sie zu Numbers > Numbers kaufen und mieten Sie eine Nummer mit Stimme Fähigkeiten.
  2. Zurück zu Ihre Applicationswählen Sie Ihre IVR-Anwendung und verknüpfen Sie die neue Nummer damit.

Eingehende Anrufe abwickeln

Wenn ein Benutzer Ihre Nummer anruft, fordert Vonage einen NCCO (Steuerungsobjekt aufrufen) von Ihrer Antwort-URL. Erstellen Sie eine Datei mit dem Namen index.js und fügen Sie den folgenden Code hinzu:

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);
});

Verarbeitung von Sprach- und DTMF-Eingaben

Fügen Sie den Input-Handler zu Ihrem index.js um die Nutzdaten zu verarbeiten, die Vonage zurückschickt, sobald der Benutzer mit dem Menü interagiert.

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

Testen Sie die IVR

  1. Starten Sie Ihren Server: node index.js.
  2. Rufen Sie Ihre Vonage-Nummer an:
  • Ziffernblock: Drücken Sie 1. Die IVR sollte sagen, Sie haben die 1 gedrückt.
  • Die Rede: Sagen Sie Hallo. Die IVR sollte sagen, Sie sagten: Hallo.

Nächste Schritte

  1. Anrufe weiterleiten: Hinzufügen einer connect Aktion zur Verbindung des Anrufers mit der zuständigen Abteilung auf der Grundlage der Benutzereingabe über Rufnummer, SIP-Endpunkt oder Ihre Webanwendung unter Verwendung des Client SDK.
  2. Aufzeichnung von Anrufen: Aufzeichnung und Transkription das Gespräch mit record Aktion.
  3. Sprach-KI: Übergeben Sie Benutzereingaben an Ihren KI-Agenten um dem Anrufer wertvolle Informationen zu liefern.
  4. Anpassungen: Ändern Sie Text-to-Speech Stimme oder verwenden Sie die Strom Aktion in Ihrem NCCO, um voraufgezeichnete MP3-Dateien anstelle von Text-to-Speech abzuspielen.