
Partager:
Benjamin Aronov est un défenseur des développeurs chez Vonage. C'est un bâtisseur de communauté qui a fait ses preuves, avec une formation en Ruby on Rails. Benjamin apprécie les plages de Tel Aviv, où il vit. Sa base à Tel Aviv lui permet de rencontrer et d'apprendre de certains des meilleurs fondateurs de startups du monde. En dehors de la technologie, Benjamin aime voyager à travers le monde à la recherche du parfait pain au chocolat.
Construire une réceptionniste WhatsApp AI à 5 nœuds avec n8n et les outils MCP de Vonage
Cette réceptionniste WhatsApp IA, alimentée par n8n et les outils MCP de Vonage, permet d'automatiser les interactions avec les clients d'Airbnb.
Introduction
La gestion d'un Airbnb (ou de toute autre petite entreprise d'hôtellerie) implique généralement le même cycle de questions de la part des clients. Les gens posent des questions sur le Wi-Fi, les heures de départ, le parking, et parfois quelque chose de plus urgent qui nécessite votre attention immédiate. L'objectif de ce tutoriel est de rationaliser cette charge de travail en construisant un réceptionniste IA sur Voice, capable de répondre automatiquement aux questions de routine, de vous transmettre les problèmes graves par SMS ou appel vocal, et de conserver une simple mémoire des conversations passées dans une feuille Google. Le flux de travail lui-même reste léger, n'utilisant que cinq nœuds core n8n et quelques assistants.
Pour ce faire, nous utiliserons n8n comme moteur d'automatisation et comme environnement dans lequel l'agent AI s'exécute, avec le serveur d'outils MCP de serveur d'outils MCP de Vonage fournissant un point de terminaison unique pour WhatsApp, les SMS et les appels vocaux sortants. Un petit déploiement de Render héberge le pont qui relie n8n à ces outils MCP, et Google Sheets sert de base de données simple pour les propriétés et l'historique des clients. Un modèle OpenAI relie le tout en interprétant les messages, en décidant quand escalader et en appelant les bons outils au bon moment.
À la fin, vous disposerez d'un modèle flexible que vous pourrez réutiliser bien au-delà des locations de courte durée. Le même flux de travail fonctionne pour la réception des hôtels, les réservations dans les restaurants, le triage du service d'assistance informatique ou toute autre situation où les messages entrants nécessitent parfois des réponses automatisées et parfois une escalade humaine.
TL;DR : Trouvez le guide de démarrage rapide pour ce flux de travail sur Vonage Community GitHub.
A user receives and replies to a WhatsApp message sent via Vonage and n8n, showcasing real-time two-way messaging in an AI-powered receptionist workflow.
1. Les conditions préalables
A vérifié Compte professionnel WhatsApp (WABA)
Compte API Vonage
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
2. Créer une application Vonage
Afin d'accéder aux API de Vonage, nous devrons créer une Applications Vonage qui nous donnera la possibilité de communiquer par WhatsApp, SMS et appels Voice.
Pour créer une application, allez à la page Créer une application sur le tableau de bord de Vonage, et définissez un nom pour votre application.
Si vous avez l'intention d'utiliser une API qui utilise des Webhooks, vous aurez besoin d'une clé privée. Cliquez sur "Générer une clé publique et privée", votre téléchargement devrait démarrer automatiquement. Conservez-la en lieu sûr ; cette clé ne peut pas être retéléchargée si elle est perdue. Elle suivra la convention de nommage suivante private_<votre identifiant d'application>.key. Cette clé peut maintenant être utilisée pour authentifier les appels à l'API. Remarque : votre clé ne fonctionnera pas tant que votre application n'aura pas été sauvegardée.
Choisissez les fonctionnalités dont vous avez besoin (par exemple, Voice, Messages, RTC, etc.) et fournissez les webhooks requis (par exemple, URL d'événement, URL de réponse ou URL de message entrant). Ces éléments seront décrits dans le tutoriel.
Pour sauvegarder et déployer, cliquez sur "Générer une nouvelle application" pour finaliser la configuration. Votre application est maintenant prête à être utilisée avec les API de Vonage.
Configuration de l'application Vonage
Vous devrez activer les fonctions Voice et Messages. Pour Voice, vous pouvez simplement l'activer et laisser les champs vides. Pour Messages, vous devrez activer les webhooks. Pour l'instant, contentez-vous d'ajouter des espaces réservés ; nous les mettrons à jour avec les valeurs n8n ultérieurement :
Définir l'URL entrant à https://placeholder.com/inbound.
Définissez l'URL de l'état comme suit https://placeholder.com/status.
Ensuite, reliez votre WhatsApp Business (WABA) en cliquant sur l'onglet "Lier des comptes externes" :
Viewing the n8n-AI-Assistant application in the Vonage dashboard with an active WhatsApp number linked.
Assurez-vous d'avoir :
ID de l'application
Clé privée (téléchargée sous forme de
.keyfichier)Clé/secret de l'API
Nous les introduirons ensuite dans le serveur d'outils MCP.
3. Déployer le pont MCP de Vonage avec Render
Render entre en jeu parce que n8n s'attend à ce qu'il y ait un simple point d'accès HTTP public qu'il puisse appeler pour atteindre un serveur MCP. Le serveur MCP de Vonage lui-même fonctionne comme un processus local et n'est pas livré avec une passerelle publique, nous avons donc besoin d'un petit service "pont" pour le mettre sur l'internet. Render héberge ce pont pour nous : il exécute une petite application Node.js qui démarre le serveur MCP de Vonage en arrière-plan et expose une seule URL /mcp à laquelle n8n peut s'adresser.
Note sur l'hébergement et la fiabilité :
Dans ce tutoriel, nous utilisons le plan gratuit de Render pour le pont MCP, ce qui signifie que le service peut se mettre en veille lorsqu'il est inactif. Dans ce cas, le MCP Client de n8n peut temporairement afficher "Impossible de se connecter à votre serveur MCP" jusqu'à ce que l'instance se réveille. Vous pouvez résoudre ce problème en déclenchant manuellement un nouveau déploiement / redémarrage dans Render, ou en mettant à niveau le service vers un niveau "Starter" payant afin qu'il reste chaud. Si vous préférez, vous pouvez également exécuter le même pont Node.js sur d'autres hôtes tels que Railway, un serveur privé virtuel (VPS), ou votre propre infrastructure. La seule exigence pour n8n est un point de terminaison HTTPS /mcp public.
Déployer un nouveau service de rendu en utilisant le modèle fourni :
Créer un un nouveau service à partir de ce plan.
Ajoutez un nom à votre nouveau service (par exemple, mcp_tooling-n8n_whatsapp_receptionist).
Sélectionner la branche principale.
Sélectionnez créer tous en tant que nouveaux services, et entrez vos identifiants Vonage à partir de votre application Vonage : VONAGE_API_KEY, VONAGE_API_SECRET, VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY64, NUMÉRO_VIRTUEL_DE_VONAGE, VONAGE_NUMÉRO_WHATSAPP.
NOTE : VONAGE_PRIVATE_KEY64 n'est pas simplement votre clé privée qui a été téléchargée. Il s'agit d'une clé privée encodée en base64, que vous pouvez générer avec l'outil Clé privée vers variable ENV.
NOTE 2 : Le code MCP_AUTH_TOKEN est un jeton que vous créez et que le client MCP n8n utilisera ultérieurement pour authentifier les demandes. Il est conseillé d'utiliser un jeton sûr et complexe via un générateur de mot de passe fort.
Une fois que votre Render MCP Bridge est en ligne, copiez son URL publique (par ex, https://your-mcp-bridge.onrender.com/mcp). Vous en aurez besoin à l'étape 5, lorsque vous configurerez le nœud MCP Client dans votre flux de travail n8n.
Create a new Render deployment by copying the Blueprint and filling in your configurations.
4. Créer une base de données fictive avec Google Sheets
Dans notre exemple, nous utiliserons une feuille de calcul Google pour créer une base de données rapide et accessible. Google Sheets est couramment utilisé pour la collaboration et est familier aux utilisateurs non techniques. Mais il est facile de l'étendre à Supabase, MongoDB ou toute autre base de données SQL. Nous utiliserons deux feuilles : Propriétés et Invités.
>> Ouvrez et créez une copie de l'exemple de base de données complète sur Google Sheets. l'exemple de base de données complète sur Google Sheets
Création d'une feuille Google pour les propriétés
Une propriété est une annonce Airbnb. Il contient quelques colonnes, simulant des scénarios typiques du monde réel tels que : check_in, check_out, wifi_ssid (nom du réseau), wifi_password, règles_maison, instructions_d'urgenceet conseils locaux.
Vous trouverez des exemples dans la feuille Google ci-dessus.
Création d'une feuille Google pour les invités
Notre base de données disposera d'un objet simple pour stocker le contexte des invités : numéro_invité, historique - cet objet sauvegardera l'historique de notre chat, dernier_vu, last_issue, dernière_sévérité (faible| moyen| élevé).
Initialement, cette feuille est vide. À chaque exécution, elle sera mise à jour à partir de n8n !
5. Construire le flux de travail du n8n
Nous passons maintenant à la partie intéressante, l'ajout de nos nœuds dans n8n. Ouvrez votre tableau de bord n8n et créez un nouveau flux de travail. Activez l'accès MCP :
Enable MCP access for your new n8n assistant.
Voici les grandes lignes des nœuds que nous utiliserons :
1. Crochet Web - Cela nous permet de nous connecter à notre application Vonage et de recevoir des données entrantes de Vonage, dans ce cas, WhatsApp.
2. Feuilles Google - La fonction Get Rows nous permet d'obtenir le contexte de notre invité avant de transmettre son message à l'agent d'intelligence artificielle.
4. Agent AI - L'agent d'intelligence artificielle, qui agit comme le cerveau de la réceptionniste, et les outils MCP de Vonage qu'il peut exploiter.
5. Code Node - Petit script JavaScript qui analyse les données renvoyées par l'agent d'intelligence artificielle et les prépare à la mise à jour de la base de données.
6. Google Sheets - Utilisez la fonction Append ou Update Row pour enregistrer cette interaction.
Connexion du nœud Webhook
Sélectionnez comme déclencheur "Sur appel webhook". Cela ajoutera un nouveau nœud nœud webhook où vous devrez ajouter ce qui suit :
Méthode : POST
Chemin d'accès : /inbound
Authentification : aucune
Activez le flux de travail pour que n8n vous donne une URL de productionde production, par exemple :
https://your-n8n.app/webhook/inbound
Dans votre Applications Vonage (à partir de l'étape 2, par exemple n8n-AI-Assistant) :
Mettez à jour l'URL de votre webhook entrant avec cette URL de production.
Assurez-vous que la méthode est définie sur POST.
Désormais, lorsque vous enverrez un message WhatsApp à votre numéro Vonage, le n8n se déclenchera. Vous pouvez le tester en ouvrant le nœud dans n8n et en cliquant sur "Écouter l'événement test"Cependant, vous devrez mettre à jour votre URL pour utiliser l'URL de test dans le tableau de bord Vonage de n8n au lieu de l'URL de production.
Configuring an inbound webhook in n8n to receive WhatsApp messages via the Vonage Messages API.
Obtenir des informations sur les propriétés Airbnb à partir de la base de données
Connectez maintenant votre nœud webhook à un nouveau nœud nœud Google Sheets. Commencez par vous connecter à votre Account Google. Sélectionnez ensuite l'option Obtenir une (des) ligne(s) dans la feuille et configurez-la :
Nom du nœud : get_property_info
C'est important car c'est le nom de l'outil que l'agent IA recherchera.
Document : n8n Airbnb DB Exemple
Si vous avez copié sans mettre à jour (ou alors votre nom de feuille personnalisé).
Feuille : Propriétés
Filtre : Ajoutez un filtre et définissez Colonne à numéro_invité et Valeur à
{{ $json.body.from }}ou vous pouvez faire glisser à partir du panneau de saisie et sélectionner l'option de qui est renvoyée dans le corps du Webhook.Activez l'option "Toujours sortir les données" dans les paramètres afin que le flux s'exécute même si votre base de données est vide.
Configurer votre agent d'intelligence artificielle dans n8n
L'étape suivante consiste à connecter le nœud nœud de l'agent AI. Ce nœud devient le cœur de la logique de la réceptionniste. Il prend le message WhatsApp entrant de Vonage et l'historique des conversations des clients, récupère les informations sur les propriétés dans la base de données des Propriétés et décide s'il s'agit d'une situation de routine ou d'une situation qui doit être communiquée à l'hôte. En fonction de cette décision, il appellera les outils MCP appropriés, généralement pour répondre sur WhatsApp, mais au besoin pour envoyer un SMS ou déclencher un appel vocal sortant. Tous les autres éléments du flux de travail alimentent essentiellement ce nœud en contexte ou enregistrent ce qu'il produit.
Configurer le modèle d'IA
Tout d'abord, faites glisser un nœud d'agent d'IA dans votre flux de travail et connectez-le, puis configurez-le :
Source pour l'invite (message de l'utilisateur) : Définir ci-dessous
Invite (message de l'utilisateur) :
Guest phone number: {{ $('Inbound Message').item.json.body.from }}
Guest message: {{ $('Inbound Message').item.json.body.text }}
Guest message channel: {{ $('Inbound Message').item.json.body.channel }}
Guest name (if available): {{ $('Inbound Message').item.json.body.profile?.name || '' }}
Host number: {{ $('Inbound Message').item.json.body.from }} <!-- or a fixed host number later -->Note : Nous utilisons ici le même numéro pour l'hôte et l'invité afin de simplifier les tests : Nous utilisons ici le même numéro pour l'hôte et l'invité afin de simplifier les tests. En production, remplacez ce numéro par le numéro réel de l'hôte.
Message du système : copier le message système complet de GitHub
L'invite du système transforme le modèle en réceptionniste WhatsApp/SMS pour une propriété de location. Pour chaque message entrant d'un client, il recherche les détails corrects de la propriété dans Google Sheets si nécessaire, décide de la gravité du problème (faible/moyenne/élevée) et envoie toujours une réponse courte et amicale au client via WhatsApp (avec un basculement par SMS). En coulisses, il peut également notifier ou appeler l'hôte pour les problèmes de gravité moyenne ou élevée, et il ajoute deux balises simples (LAST_ISSUE et LAST_SEVERITY) afin que n8n puisse suivre ce qui se passe sans exposer la logique interne à l'hôte.
Ajouter les outils MCP de Vonage
Une fois le modèle sélectionné, l'étape suivante consiste à donner à l'agent les outils qu'il peut appeler. Le premier outil est le nœud nœud MCP Client qui pointe vers le serveur MCP que vous avez déployé sur Render. Configurez-le avec le bon point de terminaison MCP, définissez le jeton Bearer avec la même valeur que celle que vous avez placée dans le champ MCP_AUTH_TOKENet testez la connexion. Vous devriez voir apparaître les outils disponibles, tels que whatsapp-send-text-with-sms-failover, SMSet message vocal sortant. L'agent a désormais accès à ces fonctionnalités pour envoyer de vrais messages et appels !
Ajouter l'outil get_property_info
Le deuxième outil est le nœud nœud Google Sheets qui lit dans la base de données Propriétés renommez-le en get_property_info pour que son objectif soit évident, et attachez-le en tant qu'outil dans la configuration de l'agent d'intelligence artificielle. Cela permet au modèle de récupérer des détails tels que les instructions Wi-Fi, les heures d'arrivée et de départ, le règlement intérieur ou les conseils en cas d'urgence lorsque l'invité les demande.
Nettoyer la sortie de l'agent avec Code Node
Une fois que l'agent d'intelligence artificielle a terminé, son résultat est une seule grande chaîne de caractères : la réponse de l'invité et les deux balises structurées (LAST_ISSUE et LAST_SEVERITY). Avant d'écrire quoi que ce soit dans Google Sheets, nous voulons nettoyer tout cela et assembler un enregistrement soigné de la conversation. C'est exactement ce que fait le nœud Fonction : il supprime les lignes de balise, extrait les valeurs de balise et construit une transcription textuelle simple que nous stockerons en tant qu'historique.
Ajouter un nœud nœud "Code in JavaScript juste après l'agent AI. Copiez et collez l'extrait JavaScript de GitHub.
L'extrait :
Lit la sortie brute de l'agent.
Retire dernière_édition et dernière_sévérité de la base de données LAST_* .
Produit une réponse propre agent_reply propre (ce que l'invité a réellement vu).
Ajoute cette interaction à tout historique existant pour l'invité.
Ajoute dernier_vu_à et numéro_invité afin que le nœud suivant puisse insérer la ligne de l'invité.
Désormais, les données sont "prêtes à être mémorisées" : un élément par interaction avec l'invité, avec tous les champs dont votre feuille "Guests" a besoin.
Inscrire de nouvelles données dans la feuille des invités
Nous pouvons maintenant conserver cette mémoire. Ajoutez un dernier nœud nœud Google Sheetset pour l'action, sélectionnez "Append or update row in sheet" (Ajouter ou mettre à jour une ligne dans une feuille). Le rôle de ce nœud est de trouver l'historique de chat de l'invité actuel et de le mettre à jour avec l'interaction la plus récente. S'il s'agit du premier message de l'invité, une nouvelle ligne sera créée.
Configuration du nœud :
Ressource : Feuille dans le document
Opération : Ajouter ou mettre à jour une ligne
Document : (De la liste) n8n Airbnb DB Exemple ou le nom de votre feuille
Feuille : (à partir de la liste) Invités
Mode de mappage des colonnes : Mappage manuel de chaque colonne
Colonne sur laquelle portera la recherche : numéro_invité
Valeurs à envoyer :
numéro_invité (à utiliser pour les correspondances) :
{{ $('Inbound Message').item.json.body.from }}l'histoire :
{{ $json.history }}last_seen_at :
{{ $json.last_seen_at }}dernier numéro :
{{ $json.last_issue }}dernière_sévérité :
{{ $json.last_severity }}
Et c'est tout ! Vous avez terminé !
Testez votre application
Maintenant que votre flux de travail n8n est entièrement configuré, vous pouvez tester votre réceptionniste virtuel ! Envoyez un message WhatsApp et testez différents cas. Les données de test comportent volontairement deux propriétés à Paris et une à New York. Essayez de tromper l'agent. L'invite du système n'est qu'un point de départ ; adaptez-la à vos besoins !
Vous pouvez consulter les journaux pour voir étape par étape ce qui se passe exactement.
n8n execution log showing a successful end-to-end run of an AI-powered WhatsApp receptionist workflow using OpenAI, Google Sheets, and the Vonage MCP Client.
Conclusion
Avec le flux de travail de base en place, vous pouvez étendre cet agent dans de nombreuses directions ! Une prochaine étape intelligente pour mieux prendre en charge les propriétés multiples serait de donner à la réceptionniste une valeur property_id et de créer une relation basée sur le numéro de l'invité ou sur un autre champ de votre feuille.
Vous pouvez également aller au-delà de Google Sheets et intégrer une base de données plus robuste (Airtable, Notion ou même Postgres) sans modifier le comportement de l'agent. Du côté de l'hôte, il est facile d'introduire des outils supplémentaires pour des tâches telles que la programmation des nettoyeurs, la création de tickets d'assistance ou l'envoi de liens uniques tels que des instructions pour les boîtes à clés. Et si vous souhaitez rencontrer des invités sur d'autres canaux, le serveur MCP vous permet déjà d'intégrer RCS, Viber ou MMS dans le même flux de travail. À ce moment-là, un seul agent peut gérer WhatsApp, les SMS et même l'escalade vocale par le biais d'une logique unifiée.
Mais déjà avec un seul point de terminaison MCP pour toutes les actions de messagerie et de voix, une poignée de nœuds n8n et une simple feuille Google comme base de données, vous avez construit une réceptionniste IA réaliste et extensible que les petites entreprises peuvent réellement utiliser aujourd'hui.
Si vous clonez cette configuration et l'adaptez à votre propre cas d'utilisation (restaurants, cliniques, salons), je serais ravi de voir ce que vous construisez !
Vous avez une question ou souhaitez partager ce que vous construisez ?
Rejoignez la conversation sur le Communauté Vonage Slack
S'abonner à la Bulletin d'information du développeur
Suivez-nous sur X (anciennement Twitter) pour les mises à jour
Regardez les tutoriels sur notre chaîne YouTube
Connectez-vous avec nous sur la page Vonage Developer sur LinkedIn
Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.
Partager:
Benjamin Aronov est un défenseur des développeurs chez Vonage. C'est un bâtisseur de communauté qui a fait ses preuves, avec une formation en Ruby on Rails. Benjamin apprécie les plages de Tel Aviv, où il vit. Sa base à Tel Aviv lui permet de rencontrer et d'apprendre de certains des meilleurs fondateurs de startups du monde. En dehors de la technologie, Benjamin aime voyager à travers le monde à la recherche du parfait pain au chocolat.
