Création d'implémentations vocales IA prêtes pour la production pour des conversations évolutives

DEV - 11/02
Créer des implémentations vocales IA prêtes pour la production pour des conversations évolutives...

Création d'implémentations vocales IA prêtes pour la production pour des conversations évolutives

TL;DR

La plupart des implémentations vocales de l'IA échouent à grande échelle lorsque des informations personnelles fuient via des transcriptions ou des pics de latence lors d'appels simultanés. Créez un système de production en utilisant vapi pour l'intelligence conversationnelle et Twilio pour une fiabilité de niveau opérateur. Mettez en œuvre un enregistrement double canal avec reconnaissance d’entité en temps réel pour garantir la conformité. Résultat : gérez plus de 1 000 appels simultanés avec une latence inférieure à 500 ms et une exposition nulle aux informations personnelles dans les journaux.

Conditions préalables

Clés API et informations d'identification

Vous avez besoin d'une clé API VAPI (générée sur Dashboard.vapi.ai) et d'un compte Twilio avec jeton d'authentification et SID de compte. Conservez-les dans.env:

VAPI_API_KEY=votre_clé_ici TWILIO_ACCOUNT_SID=votre_sid TWILIO_AUTH_TOKEN=votre_token
Entrer en mode plein écran Quitter le mode plein écran

Configuration système requise

Node.js 18+ (pour async/wait et récupération native). PostgreSQL 13+ ou similaire pour l'état de session et les journaux d'audit PII. Redis 6+ pour l'état des appels distribués sur plusieurs serveurs (critique pour la mise à l'échelle au-delà des déploiements à instance unique).

Versions du SDK

  • vapi-sdk : 0.8.0+
  • twilio : 4.0.0+
  • dotenv : 16.0.0+

Configuration du réseau

Point de terminaison HTTPS public (ngrok, Cloudflare Tunnel ou domaine de production) pour les rappels de webhook. Le pare-feu doit autoriser le trafic entrant sur le port 443. Accès sortant à api.vapi.ai et api.twilio.com requis.

Hypothèses de connaissances

Familiarité avec les API REST, JavaScript asynchrone et les concepts audio de base (PCM 16 kHz, encodage mulaw). Compréhension des flux OAuth et de la validation des signatures webhook attendue.

VAPI : Démarrer avec VAPI → Obtenir VAPI

Tutoriel étape par étape

Configuration et installation

La plupart des systèmes vocaux de production échouent car ils traitent la transcription et la rédaction des informations personnelles comme des problèmes distincts. Voici l'architecture qui évolue :

// Configuration de l'assistant de production avec enregistrement double canal + rédaction de PII const assistantConfig = { modèle : { fournisseur : "openai", modèle : "gpt-4", température : 0,3, systemPrompt : "Vous êtes un agent du service client. Collectez : nom, numéro de compte, motif de l'appel. NE JAMAIS répéter mot pour mot les données sensibles." }, voix : { fournisseur : "11labs", voiceId : "21m00Tcm4TlvDq8ikWAM" }, transcripteur : { fournisseur : "deepgram", modèle : "nova-2", langue : "en", mots-clés : ["account", "social security", "credit card"] }, recordingEnabled : true, hipaaEnabled : true, // Déclenche la rédaction des PII côté serveur endCallFunctionEnabled : true, serverUrl : process.env.WEBHOOK_URL, serverUrlSecret : process.env.WEBHOOK_SECRET } ;
Entrer en mode plein écran Quitter le mode plein écran

Critique:hipaaEnabled : vraiactive le pipeline de rédaction intégré de Vapi. Sans cela, vous stockez des informations personnelles brutes dans les enregistrements d'appels, un véritable cauchemar en matière de conformité.

Architecture et flux

organigramme LR A[Appel utilisateur] --> B[Transcripteur Vapi] B --> C[Détection PII] C --> D[Transcription rédigée] D --> E[Traitement LLM] E --> F[Votre Webhook] F --> G[CRM externe] G --> F F --> E E --> H[Réponse TTS] H --> A
Entrer en mode plein écran Quitter le mode plein écran

Le flux empêche les fuites de données personnelles à TROIS couches : transcription (les mots clés signalent les termes sensibles), invite LLM (instructions contre la répétition) et stockage (le mode HIPAA est rédigé avant l'écriture).

Mise en œuvre étape par étape

Étape 1 : Gestionnaire de Webhook avec validation de signature

const express = require('express'); const crypto = require('crypto'); const app = express(); app.use(express.json()); // Valider les signatures de webhook - empêche les attaques par rejeu function validateSignature(req) { const signature = req.headers['x-vapi-signature']; charge utile const = JSON.stringify(req.body); const hash = crypto .createHmac('sha256', process.env.WEBHOOK_SECRET) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(hash) ); } app.post('/webhook/vapi', async (req, res) => { if (!validat...
[Courte citation de 8% de l'article original]
Loading...