https://a.storyblok.com/f/270183/1368x665/43e8c8dc51/zapier_voice-sms.png

Suivi par SMS des appels sortants avec Vonage et Zapier

Publié le December 5, 2024

Temps de lecture : 9 minutes

SMS Follow Up ExampleSMS Follow Up ExampleDans un article précédent, "Passer des appels téléphoniques à partir de Google Sheets", j'ai montré à quel point il était facile de passer des appels sortants sans avoir besoin d'un serveur ou d'une application autonome. Tout ce dont vous aviez besoin, c'était d'une Google Sheet contenant des contacts et d'un agent AI Studio. Dans un autre article, " Construire un agent Voice résilient : Guide des systèmes de basculement," j'ai montré comment vous pouviez déclencher un SMS de suivi si votre appel sortant n'est pas pris en charge.

Cependant, je ne pensais pas que quelqu'un les combinerait nécessairement ! Grâce à Alice sur le Slack de la communauté Vonage, j'ai eu tort. Le problème était que l'article sur l'agent vocal résilient s'appuyait sur un serveur Node. Mais qu'en est-il si vous voulez construire une solution entièrement sans code / à faible code comme Alice ? Vous avez de la chance car c'est ce que nous allons faire dans cet article !

Ce tutoriel démontrera comment vous pouvez utiliser Zapier pour connecter un agent vocal sortant à un agent de suivi SMS sortant en n'utilisant aucun code !

Conditions préalables

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.

Comment créer un Voicebot sortant

Pour créer votre agent, suivez les instructions figurant dans la documentation de documentation AI Studio. Vous devez sélectionner trois options importantes :

  • Type : Téléphonie

  • Modèle : Partir de zéro

  • Événement : Sortie

La fonctionnalité de votre agent sera très simple : un seul appel robotisé pour transmettre vos vœux d'anniversaire. Vous utiliserez un seul nœud Speak et un nœud de nœud de fin de conversation.

AI Studio Bot OverviewAI Studio Bot Overview

Comment créer des paramètres personnalisés dans AI Studio ?

Dans votre SpeakNode, vous aurez besoin de 2 paramètres. Ouvrez donc le panneau Propriétés sur le côté gauche et choisissez Paramètres. Sous Paramètres personnalisés créez les entrées suivantes:

  • nom - @sys.any

  • message - @sys.any

Assurez-vous que les paramètres ont été enregistrés et ouvrez votre nœud Speak. À l'intérieur du nœud, ajoutez le message suivant. Utilisez vos paramètres en tapant le $ suivi du nom du paramètre. Par exemple, pour utiliser la valeur de votre nom, vous devez taper $name.

<speak><break time='1s' /> <p> Dear $name</p> <p>Your loving friend YOUR_NAME has the following birthday message for you: $message </p> <p>Have a wondeful birthday!</p></speak>

Vous remarquerez que vous utilisez langage de balisage de la synthèse vocale pour ajouter une pause d'une seconde et créer différents paragraphes pour que l'agent s'exprime plus naturellement.

Cliquez sur Enregistrer et quitter.

Comment connecter votre agent virtuel à un numéro virtuel

La dernière étape consiste à connecter votre agent à un numéro virtuel. Ce guide explique comment publier votre agent.

Comment créer une base de données Google Sheets

Ouvrez Google Sheets et cliquez sur Feuille de calcul vierge. Donnez à votre feuille de calcul un titre agréable, comme Messages d'anniversaire. Nommez également votre feuille anniversaires.

Votre feuille comportera 4 colonnes d'en-têtes :

  1. nom

  2. numéro de téléphone

  3. anniversaire

  4. message

Ajoutez au moins les données d'un ami, mais pour obtenir une logique complète, ajoutez-en environ 10.

Google Sheet Sample DataGoogle Sheet Sample Data

  • Pour numéro_de_téléphoneajoutez votre numéro ou un autre numéro de téléphone auquel vous pouvez accéder pour recevoir des SMS à des fins de test. Les numéros de téléphone doivent être au format international, sans + ni 00. Par exemple, un numéro américain serait 15552345678

    • Veillez à ce que votre numéro_de_téléphone soit formatée en "texte brut", sinon vous aurez des problèmes avec les données.

    • Veillez à ce que cet anniversaire est formaté pour être de la forme Date de type Date. Par exemple, 9/26/2008.

Select Plain TextSelect Plain Text

Comment convertir votre feuille de calcul Google en JSON

Vous pouvez maintenant transformer votre feuille de calcul Google en une application programmable ! Ouvrez l'onglet Extensions et sélectionnez Apps Scripts. Apps Scripts vous permet d'écrire du code au-dessus des applications de l'espace de travail Google, telles que Google Sheets ou Google Docs, afin d'automatiser et d'étendre leurs fonctionnalités.

Tout d'abord, donnez à votre nouveau projet un titre agréable comme Messages API d'anniversaire. Effacez le code dans code.gs et remplacez-le par ce qui suit :

function sendBirthdayCall() {
 // Open the spreadsheet by name
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName("birthdays");
  // Get today's date
 var today = new Date();
 var todayDay = today.getDate();
 var todayMonth = today.getMonth() + 1;
  // Get all the data from the sheet
 var data = sheet.getDataRange().getValues();
  // Iterate through each row to check for birthdays
 for (var i = 1; i < data.length; i++) {
   var name = data[i][0];
   var phoneNumber = data[i][1];
   var birthday = new Date(data[i][2]);
   var birthdayDay = birthday.getDate();
   var birthdayMonth = birthday.getMonth() + 1;
   var message = data[i][3];
  
   // Check if today is the person's birthday
   if (birthdayDay === todayDay && birthdayMonth === todayMonth) {
     // Prepare the JSON payload
     var payload = {
       "name": name,
       "phone_number": phoneNumber,
       "birthday": birthday.toISOString(),
       "message": message
     };
     const payload_string = JSON.stringify(payload)
 
     // Send POST request to AI Studio
     sendRequest(payload);
   }
 }
}

Ce code crée un appel sendBirthdayCall qui recherche dans notre feuille de calcul les données des anniversaires dans notre feuille de calcul. Elle parcourt ensuite chaque ligne et vérifie si l'anniversaire de la personne a lieu aujourd'hui en comparant les valeurs du jour et du mois. Si c'est le cas, elle crée l'objet payload qui contient les informations relatives à l'anniversaire du garçon ou de la fille. Il transmet ensuite ces informations à la fonction sendRequest qui enverra les informations relatives à l'anniversaire à AI Studio.

Comment envoyer une requête POST à un script d'application ?

Vous allez maintenant créer votre sendRequest pour déclencher votre agent virtuel sortant. Vous pouvez coller le code suivant sous la fonction sendBirthdayCall() le code suivant.

Pour que ce code fonctionne, vous devez mettre à jour 4 valeurs :

  1. aiStudioUrl

  • Le point de terminaison dépend de la région que vous avez sélectionnée pour votre agent :

Pour les agents de l'UE →https://studio-api-eu.ai.vonage.com/telephony/make-call

Pour les agents américains --> https://studio-api-us.ai.vonage.com/telephony/make-call

2. Clé X-Vgai

  • Ajoutez votre clé d'API AI Studio. Vous pouvez trouver la clé X-Vgai-Key en haut à droite de votre AI Studio. Cliquez sur l'icône "user", puis sur "Generate API Key".

3. agent_id

  • Ajouter l'élément id de votre agent Vonage AI Studio. Vous le trouverez dans les détails de l'agent.

4. Status_url

  • Laissez le champ status_url vide pour l'instant. Elle sera mise à jour avec l'URL de Zapier.

function sendRequest(payload) {
// Replace with either the US or EU URL
 var url = '';


  // Define headers for the POST request
 var headers = {
   'Content-Type': 'application/json',
   'X-Vgai-Key': '' // Replace with your key
 };
  // Define the body for the POST request
 var body = {
   "to": payload.phone_number,
   "agent_id": "", // Replace with your agent ID
"status_url": "", // Replace with webhook URL from Zapier

   "session_parameters": [
     {
       "name": "name",
       "value": payload.name
     },
     {
       "name": "message",
       "value": payload.message
     }
   ]
 };
  // Make sure to set proper options for your API request (e.g., headers, authentication)
 var options = {
   'method': 'post',
   'headers': headers,
   'payload': JSON.stringify(body)
 };


  // Send the POST request
 var response = UrlFetchApp.fetch(url, options);


 // Add a two-second delay before sending the next request
 Utilities.sleep(2000);
  // Log the response (you can do more error handling here)
 Logger.log(response.getContentText());
}

Vous pouvez maintenant tester le fonctionnement de votre code en cliquant sur Exécuter.

Pour le test, assurez-vous qu'au moins un des contacts a un anniversaire qui tombe le jour même et un numéro de téléphone auquel vous pouvez accéder (comme votre numéro personnel).

Cool, nous avons donc un agent automatisé pour les appels sortants ! Ensuite, nous devons créer l'agent de suivi SMS.

Comment créer un chatbot de suivi par SMS ?

Vous devez maintenant créer un deuxième agent. Dans cet exemple, nous utiliserons SMS comme méthode de basculement, mais vous pouvez également utiliser WhatsApp ou HTTP de la même manière. Il y a trois options importantes pour notre agent, sélectionnez :

  • Type : SMS

  • Modèle : Partir de zéro

  • Événement : Sortie

Notre agent SMS sera assez simple. Ajoutez 2 nœuds :

  1. A Envoyer un SMS avec le texte "Hey, j'ai essayé de t'appeler pour te souhaiter un joyeux anniversaire. J'espère que tu passeras une journée fantastique !"

    • Le champ "To" doit contenir le paramètre système $SENDER_PHONE_NUMBER, qui prendra sa valeur dans la requête que nous enverrons à Studio dans la section suivante.

    • Le champ "From" doit être remplacé par le $AGENT_PHONE_NUMBER.

  2. (Facultatif) A Envoyer un courriel que vous pouvez configurer pour votre courrier électronique personnel avec a sujet et un message de votre choix

Simple SMS Agent in AI StudioSimple SMS Agent in AI Studio

Enfin, publiez votre deuxième agent comme vous l'avez fait précédemment avec votre deuxième numéro Vonage.

Comment utiliser Zapier pour connecter deux agents Outbound

Nous allons utiliser Zapier pour connecter nos deux agents en seulement quatre étapes :

  1. Attraper le Webhook Raw à partir d'AI Studio

  2. Nettoyer les données JSON entrantes

  3. Vérifier si l'état de l'appel est "répondu", si ce n'est pas le cas :

  4. Envoyer une demande POST pour déclencher le suivi par SMS

Comment capturer un Webhook brut dans Zapier

Tout d'abord, créez un nouveau Zap vierge. Pour votre application de déclenchement, sélectionnez Webhooks par Zapier. Pour l'événement déclencheur, sélectionnez Catch Raw Hook.

Select Catch Raw Hook for your Zap TriggerSelect Catch Raw Hook for your Zap Trigger

Lorsque vous cliquez sur continuer, Webhook crée une URL webhook. Ce point de terminaison est le point de terminaison "status_url" que nous avons laissé vide dans notre demande Apps Scripts. Vous pouvez maintenant remplacer la chaîne vide par l'URL de votre webhook Zapier.

Zapier Webhook Endpoint used for status_urlZapier Webhook Endpoint used for status_url

Votre script de mise à jour dans Google Sheets devrait ressembler à ceci :

Updated Apps Scripts code to include Zapier Webhook URLUpdated Apps Scripts code to include Zapier Webhook URL

Vous pouvez désormais appuyer sur Exécuter dans Google Sheets. Mais cette fois, ignorez ou rejetez l'appel. Cela déclenchera l'envoi par AI Studio d'une demande au Webhook de Zapier. Vous pouvez ensuite retourner sur Zapier et tester le déclencheur. Vous devriez voir un enregistrement renvoyé. Lorsque vous examinez l'enregistrement, vous voyez un tas de données. Cela peut sembler effrayant, mais ne vous inquiétez pas ; nous allons nettoyer cela ensuite.

Test results for trigger testTest results for trigger test

Comment nettoyer la charge utile JSON dans Zapier

Dans la dernière étape, nous avons renvoyé des données non formatées à partir de notre requête POST. Vous avez peut-être remarqué toutes les bonnes choses à l'intérieur du corps brut.

Si vous regardez à l'intérieur du corps brutvous verrez un attribut appelé statut. Cette information provenant d'AI Studio nous permet de savoir si l'appel a été pris ou non. Pour l'obtenir, nous allons ajouter le code Code by Zapier action.

Add the Code by Zapier as the second step in your ZapAdd the Code by Zapier as the second step in your ZapPour l'"Événement d'action", sélectionnez Exécuter Javascript. Nous utiliserons ce bloc de code pour nettoyer les données brutes et les transformer en JSON utilisable.

Pour les données d'entrée, créez une nouvelle clé appelée Payload. Pour la valeur, cliquez sur le signe + et sélectionnez Corps brut.

Ensuite, pour le code personnalisé, ajoutez ce qui suit :

let Payload = JSON.parse(inputData.Payload.replace(/%g/,""));
output = [{Payload}];

Ce code nettoie les données d'entrée et les analyse en un objet JSON. De cette manière, nous pouvons utiliser les clés et les valeurs pour la logique dans les étapes suivantes.

Transform the Raw Body into a Javascript Object called PayloadTransform the Raw Body into a Javascript Object called Payload

Lorsque vous testerez ce bloc, vous verrez que vous avez maintenant accès aux champs de données appelés "Payload From" (votre numéro d'agent vocal), "Payload To" (votre numéro de téléphone de test) et, plus important encore, "Payload Status".

Maintenant que nous avons accès à la valeur de l'état de la charge utile, nous devons créer une condition.

Comment créer des conditions avec Zapier Filter Action

Ajoutez une autre étape dans votre Zap, et ajoutez la fonction Filtrer par Zapier Action. Créez la condition suivante : Ne continuez que si : Statut de la charge utile ne correspond pas exactement à a répondu

Create the condition to filter Payload StatusCreate the condition to filter Payload Status

Le Zap se poursuivra dans tous les cas, sauf si le statut de la charge utile est égal à "répondu". Nous pouvons donc maintenant ajouter notre dernière action : la connexion à notre agent SMS de suivi !

Comment créer une requête POST avec Zapier

Dans notre déclencheur, nous avons utilisé Zapier pour écouter les requêtes POST provenant d'AI Studio. Mais maintenant, nous allons utiliser Zapier pour envoyer une requête POST à AI Studio et déclencher notre suivi par SMS.

Sélectionnez à nouveau Webhooks by Zapier pour l'événement App. Cette fois, pour l'événement Action, choisissez POST.

Select POST webhook actionSelect POST webhook action

Cliquez sur continuer pour configurer la requête POST. Vous devez configurer six champs : l'URL et le type de charge utile, trois champs dans la section Données et un champ dans les En-têtes.

URL

Pour l'URL, vous devez vérifier si votre agent est basé aux États-Unis ou dans l'Union européenne. Ajoutez l'URL correspondante :

Type de charge utile

Changez le type de charge utile en json.

Données

Ajoutez les 3 champs suivants avec les valeurs correspondantes :

  1. Clé : à
    Valeur : Charge utile vers

  2. Clé : agent_id
    Valeur : l'ID de votre agent SMS sortant ; le deuxième agent que vous avez créé

  3. Clé : canal
    Valeur : sms

En-têtes

Ajoutez le champ et la valeur suivants :

  1. Clé : X-Vgai-Key
    Valeur : votre clé d'API AI Studio

POST request properly formattedPOST request properly formatted

Vous pouvez alors tester cette étape et recevoir le SMS sur votre téléphone. Si tout a fonctionné, publiez votre Zap, vous avez terminé !

Conclusion

Et voilà - une solution téléphonique et SMS sortants totalement sans code / à faible code ! Avez-vous réussi à le faire fonctionner ? Avez-vous rencontré des problèmes ? Avez-vous d'autres plateformes low-code préférées en dehors de Zapier et Google Sheets ? Comme je l'ai déjà dit, ce tutoriel a été inspiré par une question de la communauté sur notre site Communauté Slack. Rejoignez-moi dans le canal #ai-studio et faites-moi savoir comment vous avez trouvé ce tutoriel. Vous pouvez également suivre VonageDev sur X pour les dernières nouvelles des développeurs de Vonage.

Ressources complémentaires

Partager:

https://a.storyblok.com/f/270183/384x384/e4e7d1452e/benjamin-aronov.png
Benjamin AronovDéfenseur des développeurs

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.