Comment créer un SVI simple avec des entrées vocales et tactiles ?

Un Réponse vocale interactive (RVI) vous permet d'automatiser les interactions téléphoniques en proposant aux appelants un menu d'options. Alors que les SVI traditionnels s'appuient sur un clavier (DTMF), les systèmes modernes incluent souvent La conversion de la parole en texte (ASR) pour une expérience utilisateur plus naturelle. Vous pouvez vous référer au IVR avancé pour plus de détails.

Dans ce guide, vous allez construire une application Node.js qui répond à un appel et invite l'utilisateur à appuyer sur une touche ou à parler. L'application répétera ensuite cette entrée à l'appelant.

Conditions préalables

Initialiser votre dossier de projet

Avant de configurer vos ressources Vonage, créez un emplacement pour votre code. Vous aurez ainsi une destination pour vos clés de sécurité plus tard.

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

Exposez votre serveur 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.

Approvisionnement de vos ressources Vonage

Configurez votre environnement à l'aide de la fonction Tableau de bord de l'API Vonage.

Créer une application vocale

  1. Naviguez jusqu'à Applications > Créer une nouvelle application.
  2. Donnez un nom à votre application (par exemple, Simple-IVR-Speech-DTMF).
  3. Sous Capacités, activer Voix.
  4. Régler le Réponse URL à votre URL ngrok avec /webhooks/answer annexé. Exemple : https://{random-id}.ngrok.app/webhooks/answer. Réglez la méthode sur
    GET
    .
  5. Régler le URL de l'événement à votre URL ngrok avec /webhooks/events annexé. Exemple : https://{random-id}.ngrok.app/webhooks/events. Réglez la méthode sur
    POST
    .
  6. Cliquez sur Générer une clé publique et une clé privée.
  7. Déplacer le fichier téléchargé private.key dans le dossier de votre projet simple-ivr.
  8. Cliquez sur Enregistrer les modifications.

Lier un numéro virtuel

  1. Naviguez jusqu'à Numbers > Acheter des Numbers et louer un numéro avec Voix des capacités.
  2. Retourner à Vos Applicationssélectionnez votre application SVI et associez-y le nouveau numéro.

Traiter l'appel entrant

Lorsqu'un utilisateur appelle votre numéro, Vonage demande un NCCO (Objet de contrôle d'appel) de l'URL de votre réponse. Créez un fichier nommé index.js et ajoutez le code suivant :

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

Traiter les entrées vocales et DTMF

Ajoutez le gestionnaire d'entrée à votre index.js pour traiter les données utiles que Vonage renvoie lorsque l'utilisateur interagit avec le 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`));

Tester le SVI

  1. Démarrez votre serveur : node index.js.
  2. Appelez votre numéro Vonage :
  • Clavier : Appuyez sur 1. L'IVR doit dire, Vous avez appuyé sur 1.
  • Discours : Dire Bonjour. L'IVR doit dire, Vous avez dit : Bonjour.

Prochaines étapes

  1. Transfert d'appel : Ajouter un connect action de mise en relation de l'appelant avec le service concerné sur la base des informations fournies par l'utilisateur via l'option numéro de téléphone, point d'extrémité SIP ou votre application web à l'aide du Client SDK.
  2. Enregistrement des appels : Enregistrer et transcrire l'appel avec record action.
  3. L'IA vocale : Transmettre les données de l'utilisateur à votre agent d'intelligence artificielle de fournir à l'appelant des informations précieuses.
  4. Personnalisation : Modifier synthèse vocale ou utiliser la fonction flux dans votre BCN pour lire des fichiers MP3 préenregistrés au lieu de la synthèse vocale.