https://d226lax1qjow5r.cloudfront.net/blog/blogposts/build-an-interactive-board-whatsapp-sms-and-mms-to-a-website-part-2/interactive-board_whatsapp-mms-p2.png

Construire un tableau interactif : WhatsApp, SMS et MMS vers un site web (Partie 2)

Publié le February 21, 2024

Temps de lecture : 9 minutes

Vue d'ensemble

En Partie 1nous avons créé un tableau d'affichage interactif pour recevoir des SMS, des MMS et des messages WhatsApp et les afficher sur une page Web. Cette application utilisait l'API Messages de Vonage et un serveur Express.

Dans la deuxième partie, nous reproduirons cette fonctionnalité avec un petit quelque chose en plus. Nous utiliseronsAI Studio de Vonagepour gérer les messages entrants. Nos messages seront stockés dans une base de données Airtable, puis affichés par notre application Node.js.

Vonage AI Studio est une plateforme à code bas qui permet aux développeurs et aux non-développeurs de créer facilement des assistants virtuels. Grâce à son interface intuitive de type " glisser-déposer ", vous pouvez concevoir des flux conversationnels.

Vous pouvez trouver le code pour l'affichage du tableau de bord de l'administrateur sur ce dépôt GitHub. Clonez, et suivons le tutoriel ci-dessous que j'ai préparé pour vous, expliquant tous les bits étape par étape.

Schéma du projet

  • Interaction avec l'utilisateur: Un utilisateur démarre l'interaction en envoyant un message WhatsApp à un numéro de téléphone virtuel Vonage spécifique lié à l'Applications Vonage contenant le flux.

  • Réception des messages: Le flux de conversation commence par le nœud "Start", qui permet à l'utilisateur d'envoyer ou de recevoir des messages.

  • Stockage de données: Une fois traité, le message est enregistré sur Airtable, une plateforme en ligne permettant de créer et de partager des bases de données relationnelles.

  • Afficher : Construire notre tableau de bord administratif : Une page web, continuellement mise à jour, récupère ces messages d'Airtable et les affiche.

Stocker des informations dans la base de données Airtable

Tout d'abord, créons notre stockage de données, donc créons un Account sur Airtable. Une fois connecté, trouvez les étapes ci-dessous dans le tableau de bord d'Airtable. Par rapport à la partie 1, j'ai choisi de simplifier pour la partie 2 et de créer une seule table appelée Messages.

  1. Créez une base appelée "Interactive Board" en cliquant sur "+ Create a base", et choisissez une couleur de thème et une icône optionnelle ; j'ai sauté le reste de la configuration, mais n'hésitez pas à la remplir si vous le souhaitez et à aller jusqu'à la fin de la création de la base où je suis amené à la base Messages.

  2. Vous pouvez maintenant voir quelques lignes numérotées vides. Créons un tableau intitulé Messages. Il comporte les colonnes suivantes : 'Message', 'Numbers' (numéro de téléphone), 'Statut' de type 'Sélection unique' et ajoutons les options 'Accepté', 'En attente' et 'Rejeté'. Et enfin, "ImageUrl".

  3. Créer des vues comme la "vue en grille" pour filtrer les messages

Intégrer un système de modération pour l'approbation ou le rejet des messages

Une fois que les enregistrements sont enregistrés dans Airtable, ils ont le statut " En attente ". Vos modérateurs peuvent accéder à la base de données Airtable et changer manuellement le statut de chaque enregistrement en "Rejeté" ou "Accepté". S'ils sont acceptés, ils seront publiés sur le site Web du tableau interactif.

Créer l'agent AI Studio : Guide étape par étape

Je vais décomposer chaque étape pour que vous puissiez créer le flux de notre application conversationnelle.

  1. Accéder à AI Studio:

    • Se connecter/ s'inscrire à Vonage AI Studio. Vous le trouverez sur le tableau de bord de Vonage, sous le menu de gauche. Sélectionnez " AI Studio " et cliquez sur " Go to AI Studio ".

The Vonage dashboard shows that ‘AI Studio’ can be found on the left menu.AI Studio

  1. Configuration de l'agent WhatsApp:

    • Choisissez "WhatsApp" comme type d'agent et cliquez sur "Suivant".

      Agent Creation FormWhatsapp Agent Creation

    • Complétez les informations requises telles que la région, le nom de l'agent (par exemple, "Interactive Board"), la langue et le fuseau horaire (par exemple, Europe/Londres) et cliquez sur "Suivant".

    • 2. Fill in the required details such as Region, Agent Name (e.g., 'Interactive Board'), Language, and Time Zone (e.g., Europe/London) and click ‘Next’.Agent Creation Details

  2. Sélection de modèles:

    • Cliquez sur "Créer un agent". Pour créer une nouvelle application, visitez Agents de Vonage AI Studio.

    • Choisissez le modèle "Start from Scratch".

    • Sélectionnez "Événement de session entrante" et cliquez sur "Créer". Cette étape est essentielle pour que les utilisateurs initient la session avec l'agent.

Construire l'application conversationnelle : Définir le flux conversationnel

Cette section va plonger dans les spécificités de la création d'une application conversationnelle avec l'intégration de WhatsApp :

Flow showing the blocks: Start, Greeting, Input Collection, Menu condition, Messages to see, send messages, classification, webhook, media receipt, endVonage AI Agent Dashboard

Créer un message d'accueil (Envoyer un message) juste après l'itinéraire START pour souhaiter la bienvenue aux utilisateurs, expliquer les capacités du robot dans l'entrée "Agent says", et cliquer sur "Save and Exit" (Enregistrer et quitter).

Agent says: Hello! I am a WhatsApp bot that collects text or images and outputs the message on an Interactive Board.Greeting Node

Créer un Collecter des données choisissez le paramètre MESSAGE, sélectionnez "Liste des messages" et ajoutez une section pour "Voir les messages" et une autre pour "Envoyer les messages", ajoutez toute autre information que vous jugez nécessaire pour que l'utilisateur puisse comprendre la description et cliquez sur "Enregistrer et quitter".

Choose the parameter MESSAGE, choose ‘List Messages’, and add one section for ‘See Messages’ and another section for ‘Send Messages’, add any other information you see fit to make it described and user for the user to understand it and click ‘Save and Exit’.Input collection

Créer une Conditions (je l'ai appelé "Menu Condition : voir ou envoyer") avec deux conditions : "Voir le message" et "Envoyer le message". La première condition doit être Parameter : MESSAGE, Operation : Contient, Valeur : Voir. La deuxième condition devrait être Parameter : MESSAGE, Operation : Contient, Valeur : Envoyer.

Create a Conditions conversation node with two conditions: ‘See Message’ and ‘Send Message’. The first condition should be Parameter: MESSAGE, Operation: Contains, Value: See. The second one should be Parameter: MESSAGE, Operation: Contains, Value: Send.Menu Condition

Après le bloc des conditions, nous créerons deux blocs :

  1. Un nœud "Envoyer des messages" lié à notre condition "Voir" (je l'ai appelé Message à Voir des messages). Le message devrait être le suivant : Si vous souhaitez voir tous les messages de sortie, veuillez accéder à ce lien.

    Nous mettrons à jour ce lien ultérieurement avec le lien ngrok que vous aurez avec votre serveur express. Pour l'instant, vous pouvez le laisser avec un message fictif.

    1. A 'Send Messages' node linked to our ‘See’ condition. The message should read: If you'd like to see all the output messages, please access this link. We'll update this link later with the ngrok link you will have running with your express server. For now, you can leave it with a dummy message.Message to See Messages

  2. Un deuxième nœud lié à "Send" de type "Collect Input" (je l'ai appelé "Send Messages") et dans l'invite, ajoutez un message du type "Go ahead and send me the message or image you'd like to share !" et sélectionnez "Text" et "Image" comme entrée attendue, car c'est ce que nous attendons de nos utilisateurs qu'ils envoient !

A node linked to ‘Send’ of type ‘Collect Input’ and in the prompt add a message along the lines of ‘Go ahead and send me the message or image you'd like to share!’ and select ‘Text’ and ‘Image’ as expected input, as this is what we expect our users to send!Send Message

Utilisons maintenant la classification pour traiter les données de nos utilisateurs. Dans la partie 1, nous avons ajouté un fichier contenant les mots bloqués pour notre application web. Maintenant, dans la partie 2, avec Vonage AI Studio, nous pouvons ajouter un nœud de classification. Il se trouve dans le menu de gauche : Nœud > Conversation > Classification. Ajoutez ce bloc au flux juste après " Envoyer des messages " et remplissez-le avec les informations suivantes :

A classification node with Send Message and Block Words intentsClassification Intent

Paramètre de classification : MESSAGE Nous allons créer deux intentions : Envoyer un message et Bloquer des mots Dans le menu de gauche, vous pouvez cliquer sur "Propriétés" et créer une nouvelle intention, ou même à partir de la vue de classification dans laquelle vous vous trouvez actuellement, vous pouvez cliquer sur "Intention" et en créer une nouvelle à partir de là, puis ajouter l'ensemble de formation pour chaque intention.

Mots bloquants : Vous pouvez ajouter les mots qui sont bloqués pour votre flux (par exemple, les jurons).

Envoyer un message : vous pouvez ajouter des exemples de messages que les utilisateurs peuvent envoyer, par exemple : "Superbe événement", "Je passe un bon moment", "J'adore cet endroit, mais j'aimerais qu'il y ait des sushis".

En savoir plus sur la classification et pensez à de futures étapes d'amélioration en ajoutant l'intégration de l'analyse des sentiments pour détecter automatiquement les messages négatifs.

Créez un nœud d'envoi de message appelé "Allowlist alert". L'agent doit dire "Le message précédent était contraire à nos directives concernant les mots autorisés. Veuillez envoyer un autre message".

A send message node called "Allowlist alert". The agent should say The previous message went against our guidelines of allowlisted words. Please send another message.Allowlist alert

L'option "liste de blocage" de la classification devrait y être liée, et elle devrait être liée à l'entrée de message "Envoyer des messages".

The Classification "blocklist" option should be linked to it, and it should be linked back to the Send Messages Message Input.Links

Ensuite, nous utiliserons un nœud Webhook (que j'ai nommé "Webhook : Create record") pour ajouter nos messages à notre backend Airtable. Pour ajouter des enregistrements à Airtable, cliquez sur Integrations > Webhook et remplissez les informations suivantes :

Method : POST Request URL : https://api.airtable.com/v0/BASE_URL/Messages Headers : Key : Authorization, Value : Bearer 'YOUR_AIRTABLE_ACCESS_TOKEN' Clé : Content-Type, Valeur : application/json

Method: POST Request URL:  https://api.airtable.com/v0/BASE_URL/Messages Headers:  Key: Authorization, Value: Bearer ‘YOUR_AIRTABLE_ACCESS_TOKEN’ Key: Content-Type, Value: application/jsonWebhook node

Remarque : L'URL de la demande doit correspondre à votre table dans Airtable.

Si vous êtes bloqué ou si vous avez des doutes, pour une explication plus détaillée, lisez L'effet de levier du code faible : AI Studio avec Airtable de Benjamin Aronov, où il explique en détail comment utiliser AI Studio avec Airtable.

Dans le deuxième onglet du webhook appelé 'Body', ajoutez les informations suivantes de type JSON. Cela signifie que nous ajoutons le message que l'utilisateur a envoyé contenant soit du texte soit une image, attribuant le numéro de téléphone de la personne interagissant avec cet agent, et définissant le statut de Pending, où les modérateurs peuvent le changer en Accepted ou Rejected à partir de Numbers.

{
 "records": [
  {
   "fields": {
   "Message":"$MESSAGE",
    "Number": "$SENDER_PHONE_NUMBER",
	"ImageUrl": "$MESSAGE",
    "Status":"Pending"
   }
  }
 ]
}

Liez l'option de réussite du webhook à un nouveau nœud "Send Message". Créez un nouveau nœud "Send Message", nommez-le "Media Receipt" et ajoutez sous Agent Says "Thanks for sending this over !" et cliquez sur save and exit.

‘Send Message’ node, name it ‘Media Receipt’, and add under Agent Says ‘Thanks for sending this over!’ and click save and exit.Media receipt

Lier l'option d'échec du webhook à l'envoi précédent du message Collect Input pour le leur demander à nouveau. Reliez le nœud "Media receipt" au nœud "Message to See Messages" préexistant, puis reliez-le à "End Conversation".

Link the webhook fail option to the previous send Message Collect Input to request it from them again.   Link the ‘Media receipt’ node to the pre-existing ‘Message to See Messages’, then link to ‘End Conversation’.Flow

Parlons code : Comment construire notre tableau de bord d'administration

Le code est similaire à celui que nous avons vu dans la partie 1. Cependant, nous pouvons éliminer l'élément blocklist.txt car cela est maintenant géré dans le flux de conversation dans AI Studio de Vonage et la création de l'utilisateur et l'insertion des enregistrements dans Airtable. Cependant, nous conservons le point de terminaison qui modifie l'état du message "/messages/:messageId/:status" en plus du point de terminaison qui récupère les messages /messages. Voici à quoi ressemble le fichier index.js pour ce projet.

Comme indiqué dans la partie 1, vous devez faire tourner ngrok et retourner dans le flux de l'agent AI Studio pour mettre à jour le nœud See Messages avec l'URL ngrok fournie ; vous pouvez toujours héberger votre site web et ajouter la page web qui y est liée pour ce tutoriel de démonstration en utilisant ngrok à partir de notre localhost suffit.

Testez-le

Vous pouvez voir un bouton Tester en haut à droite de l'AI Studio de Vonage ; vous pouvez tester votre conversation sans la publier. Allez-y et sélectionnez " Session entrante " et cliquez sur le bouton " Commencer la conversation ". Vous pouvez pré-remplir les paramètres avec lesquels vous voulez que l'agent travaille (en cliquant sur l'icône des paramètres/de l'engrenage) et choisir le mode de test. Consultez la Page du testeur pour en savoir plus.

Extensions possibles

Ajouter la prise en charge des MMS

Nous avons utilisé l'entrant pour commencer avec les messages WhatsApp, mais si nous devions utiliser le MMS, vous pourriez toujours utiliser le même numéro attribué au chatbot WhatsApp. Il y a quelques conditions à remplir pour obtenir un numéro MMS depuis les États-Unis 10DLC, TFN et Shortcode que vous avez dans votre tableau de bord vers d'autres numéros à l'intérieur des États-Unis. Pour en savoir plus Comment envoyer des messages MMS avec Node.js.

Ajouter la prise en charge des SMS

Dans Vonage AI, il existe une action appelée " Envoyer un SMS ". Vous pouvez ajouter ce bloc à votre flux de conversation pour envoyer un SMS, remplissez les champs contenant les numéros de l'expéditeur et du destinataire ainsi que le corps du message, cliquez sur " Enregistrer et quitter " et connectez-le au nœud auquel vous souhaitez envoyer le message. Vous pouvez en savoir plus sur Envoi de SMS à l'aide de Vonage AI.

Publier votre agent

Lorsque j'ai eu fini de construire cette application conversationnelle de démonstration, j'ai voulu voir ce qu'elle donnait sur WhatsApp et être en mesure de versionner et de publier mes modifications. Pour ce faire, j'ai acheté un numéro de téléphone, je l'ai attribué à l'agent, je l'ai lié à l'aide de l'API Messages et j'ai créé un WhatsApp Business Account avec le numéro que je venais d'acheter. Vous pouvez en savoir plus sur comment publier votre agent pour publier le vôtre et le partager avec d'autres !

Conclusion

Consultez la documentation sur l'IA de Vonage AI docsSi vous avez besoin d'aide, partagez vos expériences, vos commentaires et toute utilisation innovante que vous avez trouvée en utilisant nos API avec notre communauté par l'intermédiaire de X, anciennement connu sous le nom de Twitter ou la Communauté Slack.

Partager:

https://a.storyblok.com/f/270183/400x400/3f6b0c045f/amanda-cavallaro.png
Amanda CavallaroDéfenseur des développeurs