Comment créer un chatbot SMS évolutif à l'aide de Twilio, Python et Google Sheets (avec code gratuit)

Nous sommes nombreux à aider les entreprises qui traversent des moments difficiles, ou nous sommes nous-mêmes confrontés à des moments difficiles. Si vous travaillez pour une entreprise (ou un client) en difficulté, l’utilisation de chatbots SMS peut être un moyen pour vous de sortir de votre liste habituelle de solutions et de les aider à réussir d’une manière complètement différente. Si vous êtes un spécialiste du marketing à la recherche d’un emploi, l’ajouter à votre liste de compétences peut signifier que vous continuez à faire avancer les choses pendant que de nombreuses portes habituelles sont fermées – ou que vous ouvrez de nouvelles portes.

Ce que vous obtiendrez

Dans cet article, je vous donne des instructions et du code pour produire non pas un, mais une série de chatbots textuels pouvant être gérés par Google Sheets.

L’exemple ici est configuré pour fonctionner avec les restaurants, mais pourrait être adapté pour fonctionner avec toute entreprise qui a besoin de recevoir des commandes, de les comparer à l’inventaire / des menus et de les noter pour être exécutées.

Une fois le système configuré, aucun codage ne sera nécessaire pour créer un nouveau chatbot basé sur SMS pour une nouvelle entreprise. De plus, cette entreprise sera en mesure de gérer les détails clés (comme les commandes entrantes et un menu) en mettant simplement à jour une feuille Google, ce qui rendra tout cela beaucoup plus accessible que la plupart des autres options.

Mais d’abord, un peu de contexte.

Un certain contexte

En septembre 2017, dans le cadre de l’un de mes premiers grands projets passionnés chez Distilled, j’ai écrit un article de blog sur Moz expliquant aux gens comment créer un chatbot et donnant un exemple de code.

En avril, j’ai reçu un e-mail d’un homme du nom d’Alexandre Silvestre. Alex avait lancé « un effort à but non lucratif pour aider les propriétaires de petites entreprises locales à traverser ces temps difficiles, à sauver autant d’emplois que possible et à continuer de servir notre communauté tout en aidant à aplatir la courbe. »

Cet effort a commencé par se concentrer sur les restaurants Content Marketing Works ! ) Et m’a demandé si je pouvais aider son équipe à construire un chatbot. Nous nous sommes mis d’accord sur certaines exigences de base pour le bot:

  • Cela devait fonctionner entièrement par SMS (et si la commande était super compliquée, il fallait pouvoir établir un appel directement avec le restaurant)
  • L’exécution devait être aussi proche que possible de la liberté
  • Les restaurants devaient pouvoir vérifier les commandes, mettre à jour les menus, etc., sans créer de comptes spéciaux

La solution sur laquelle nous nous sommes mis d’accord comportait trois parties:

  • Twilio (payant): fournit le numéro de téléphone et gère la plupart des allers-retours de conversation
  • Google Cloud Functions (semi-gratuit): lorsqu’une URL est appelée, elle exécute du code (y compris la mise à jour de notre base de données pour le restaurant) et renvoie une réponse
  • Google Sheets (gratuit): notre plateforme de base de données. Nous avons une feuille qui répertorie toutes les entreprises utilisant notre chatbot, et un lien vers les feuilles de calcul Google individuelles pour chaque entreprise

Je vais vous présenter chacun de ces composants tour à tour et vous expliquer comment travailler avec eux.

n’hésitez pas à passer directement à la partie spécifique qui vous intéresse:

  • Tarification
  • Twilio
  • Google Sheets
  • Google Cloud Functions
  • Tester le bot

  • Brisez les choses et amusez-vous
  • Tarification

    Tout cela devrait être assez bon marché – je parle de quatre cents par commande.

    Même ainsi, assurez-vous toujours que les alertes de prix arrivent à une adresse e-mail que vous surveillez activement.

    Lorsque vous commencez tout juste cela, ou lorsque vous avez apporté une modification (comme l’ajout de nouvelles fonctionnalités ou de nouvelles entreprises), assurez-vous de revenir sur vos crédits au cours des prochaines semaines afin de savoir ce qui se passe.

    Twilio

    Les numéros de téléphone Twilio locaux coûtent environ 1,00 USD par mois. L’envoi et la réception de SMS coûteront environ 0,0075 USD, et Twilio Studio – que nous utilisons pour une grande partie de la « conversation » – coûte 0,01 USD à chaque fois qu’il est activé (les 1 000 premiers de chaque mois sont gratuits).

    Donc, en supposant que vous ayez 2 500 commandes de SMS par mois et que chaque commande nécessite environ cinq SMS, cela représente environ 100 USD par mois au total.

    Google Sheets

    Google Sheets est gratuit et génial. Vive Google Sheets.

    Fonctions Google Cloud

    Google partage tous les détails des prix ici, mais les choses importantes à savoir sont:

    Crédits promotionnels

    Vous bénéficiez d’un essai gratuit qui dure jusqu’à un an, et qui comprend 300 USD de crédits promotionnels. Il en dépensera donc avant de dépenser votre argent. Nous avons dépensé 0,00 USD (y compris les crédits promotionnels) à la fin d’un mois de test. C’est parce qu’il y a aussi une allocation mensuelle gratuite.

    Allocation gratuite et structure de prix

    Même en dehors des crédits gratuits, Google accorde une allocation gratuite chaque mois. Si nous supposons que chaque commande nécessite environ 5 activations de notre code et que notre code prend jusqu’à cinq secondes à s’exécuter à chaque fois (ce qui est un certain temps mais parfois Google Sheets est lent), nous pourrions recevoir jusqu’à plus de 400000 commandes par mois avant on puise dans les crédits promotionnels.

    Twilio

    Twilio est une plate-forme payante qui vous permet d’acheter un numéro de téléphone et que ce numéro envoie automatiquement certaines réponses en fonction de l’entrée.

    Si vous ne voulez pas en savoir plus sur Twilio et que vous voulez simplement le flux gratuit du chatbot Twilio, C’est ici.

    Étape 1: Achetez un numéro de téléphone Twilio

    Une fois que vous avez acheté un numéro de téléphone, vous pouvez recevoir des SMS à ce numéro et ils seront traités dans votre compte Twilio. Vous pouvez également envoyer des SMS à partir de ce numéro.

    Étape 2: Trouvez votre numéro de téléphone

    Vous pouvez voir votre liste de numéros de téléphone achetés en cliquant sur le menu Twilio dans le coin supérieur gauche, puis en cliquant sur « Numéros de téléphone ». Ou, vous pouvez simplement accéder aux numéros de téléphone / entrants.

    Une fois que vous voyez votre numéro de téléphone répertorié, notez-le.

    Étape 3: Créez votre Studio Flow

  • Un client envoie un de nos numéros Twilio
  • Sur la base du numéro spécifique envoyé, nous recherchons le restaurant qui lui est associé. Nous utilisons ensuite le nom et le menu enregistré du restaurant pour envoyer un message au client.
  • Si le client tente de commander hors menu, nous connectons un appel au restaurant
  • Si le client choisit quelque chose dans notre menu, nous lui demandons son nom, puis enregistrons sa commande dans la feuille de ce restaurant et lui disons quand arriver pour récupérer sa commande
  • Au fur et à mesure que l’utilisateur envoie un message pour nous dire qu’il est à l’extérieur du restaurant, nous lui demandons s’il est à pied / une description de son véhicule. Nous enregistrons la description du véhicule dans la même fiche restaurant
  • Regardons quelques exemples de blocs de construction, d’accord ?

    Déclenchement initial

    Le déclencheur initial apparaît juste au début de chaque flux et divise le contact entrant selon qu’il s’agit d’un SMS, d’un appel téléphonique ou si le code y accède.

    « Message entrant » signifie que le contact était par SMS. Nous n’avons qu’à nous soucier de celui-là pour le moment, alors concentrons-nous sur la ligne de gauche.

    Enregistrez le fait que nous commençons une nouvelle interaction

    Ensuite, nous utilisons un bloc « Définir les variables », que vous pouvez récupérer dans la bibliothèque de widgets.

    Le bloc « Définir les variables » nous permet de sauvegarder les informations d’enregistrement auxquelles nous voulons nous référer plus tard. Par exemple, nous commençons par définir simplement la « scène » de notre interaction. On dit que la scène est « start » comme dans, on est au début de l’interaction. Plus tard, nous vérifierons quelle est la valeur de stage, à la fois dans Studio et dans notre code externe, afin de savoir quoi faire et quand.

    Obtenez notre menu

    Nous supposons que si quelqu’un nous a envoyé un message, déclenchant le chatbot, il cherche à commander, donc la prochaine étape consiste à déterminer quel est le menu applicable.

    Maintenant, nous pourrions simplement écrire le menu directement dans Studio et dire que chaque fois que quelqu’un nous envoie un message, nous répondons avec la même liste d’options. Mais cela pose quelques problèmes.

    Premièrement, cela signifierait que si nous voulons configurer cela pour plusieurs restaurants, nous devrons créer un nouveau flux pour chacun.

    Le plus gros problème est que les restaurants changent souvent leurs menus. Si nous voulons que cela soit quelque chose que nous pouvons offrir à de nombreux restaurants différents, nous ne voulons pas passer tout notre temps à mettre à jour manuellement Twilio chaque fois qu’un restaurant manque d’un ingrédient.

    Ce dont nous avons vraiment besoin, c’est que les restaurants puissent proposer leurs propres menus. C’est là que Google Sheets entre en jeu, mais nous y reviendrons plus tard. Dans Twilio, nous avons juste besoin de pouvoir demander des informations externes et de transmettre ces informations externes à l’utilisateur. Pour ce faire, nous utilisons un widget Webhook:

    Ce widget fait une requête à une URL, obtient la réponse, puis nous permet d’utiliser le contenu de la réponse dans nos messages et flux.

    Si la demande à l’URL réussit, Twilio continuera automatiquement à notre étape de réussite, sinon nous pouvons le configurer pour envoyer une réponse « Oups, quelque chose s’est mal passé » avec l’option Échec.

    Dans ce cas, notre Webhook fera une demande à l’URL des fonctions Google Cloud (nous en reparlerons plus tard). La demande que nous envoyons comprendra des informations sur l’utilisateur et ce que nous avons besoin du code pour faire. Les informations seront au format JSON (le même format que nous avons utilisé pour importer le flux Twilio que j’ai partagé ci-dessus).

    Notre JSON comprendra le numéro de téléphone Twilio spécifique qui a été envoyé et nous utiliserons ce numéro pour différencier les restaurants, ainsi que le numéro de téléphone qui nous a contactés. Il inclura également le contenu du message texte que nous avons reçu et le « stade » que nous avons défini précédemment, afin que le code sache ce que l’utilisateur recherche.

    Ensuite, le code effectuera certaines tâches (nous y reviendrons plus tard) et renverra ses propres informations. Nous pouvons alors dire à Twilio d’utiliser des parties de la réponse dans les messages.

    Ensuite, nous pouvons utiliser les informations que nous avons reçues pour construire et envoyer un message à l’utilisateur. Twilio se souviendra du numéro avec lequel vous êtes en conversation et enverra vos messages à ce numéro.

    Il s’agit du widget « Envoyer et attendre une réponse », ce qui signifie qu’une fois ce message envoyé, Twilio supposera que la conversation est toujours en cours plutôt que de la terminer là.

    Dans ce cas, nous rédigeons notre message de bienvenue. Nous pourrions n’écrire que du contenu brut, mais nous voulons utiliser certaines des variables que nous avons obtenues de notre widget Webhook. Nous avons appelé ce widget Webhook spécifique « get_options », nous accédons donc au contenu que nous en avons obtenu en écrivant:

    get_options

    La réponse revient en JSON et, heureusement, Twilio rompt automatiquement cela pour nous.

    Nous pouvons accéder à des parties individuelles de la réponse en écrivant « parsed », puis l’étiquette que nous avons donnée à cette information dans notre réponse. En l’état, la réponse du code ressemblait à ceci:

    restaurant_name,

    « Plats_string »: « Vous pouvez choisir entre une pizza Margherita, une pizza hawaïenne et une pizza végétarienne »

    « Ajouts »: « grand, moyen

    get_options.parsed puis nous écrivons le message ci-dessous qui sera envoyé aux personnes qui contactent le bot:

    Prendre une décision basée sur un message

    Nous ne pouvons pas supposer que tout le monde utilisera le bot exactement de la même manière, nous devons donc être en mesure de changer ce que nous faisons en fonction de certaines conditions. Le widget « Fractionner en fonction de… » permet de sélectionner certaines conditions et de définir ce qu’il faut faire si elles sont remplies.

    Dans ce casinbound « Options_follow_up » est le nom du widget Send & Wait dont nous venons de parler, « inbound » signifie la réponse et « Body » signifie le texte qu’il contient.

    Ensuite, nous définissons une condition. Si l’utilisateur répond par quelque chose du genre « autre », « non », « aide », etc., il sera envoyé sur une autre piste pour passer un appel téléphonique. S’ils répondent avec quelque chose qui ne figure pas sur cette liste, ils essaient peut-être de commander, alors nous prenons leur commande et la vérifions avec notre code:

    Mettre en place un appel

    Si l’utilisateur déclare vouloir quelque chose hors du menu, nous devons organiser un appel avec le restaurant. Nous faisons cela en appelant d’abord l’utilisateur:

    Puis, lorsqu’ils décrivent, en connectant cet appel au numéro du restaurant que nous avons déjà recherché dans nos fiches:

    Étape 4: Sélectionnez votre flux de studio pour ce numéro de téléphone

    Google Sheets

    Ce chatbot utilise deux feuilles de calcul Google.

    Feuille de recherche gratuite

    La feuille de recherche contient une liste des numéros de téléphone Twilio, le restaurant auquel ils ont été attribués et l’URL de la feuille Google qui contient les détails de ce restaurant, afin que nous sachions où chercher chacun.

    Vous devrez créer une copie de la feuille pour l’utiliser. J’ai inclus une ligne dans la feuille que j’ai partagée, expliquant chacune des colonnes. N’hésitez pas à le supprimer lorsque vous savez ce que vous faites.

    Exemple gratuit de feuille de restaurant

    La fiche spécifique au restaurant est l’endroit où nous incluons toutes nos informations sur le restaurant dans une série d’onglets. Vous devrez créer une copie de la feuille pour l’utiliser.

    Ordres

    L’onglet Commandes est principalement utilisé par notre code. Il écrira automatiquement l’heure de la commande, le nom du client, le numéro de téléphone du client et les détails de la commande. Par défaut, il écrira FALSE dans le champ « PAYÉ / PRÊT ? » colonne, que le restaurant devra ensuite mettre à jour.

    Dans la dernière étape, le script ajoutera TRUE au « CLIENT ICI ? » et indiquez la description de la voiture dans la colonne « PICK UP INFO ».

    Temps d’attente

    Il s’agit d’un onglet assez simple, car il contient une cellule dans laquelle le restaurant écrit combien de temps il faudra avant que les commandes ne soient prêtes. Notre code va extraire cela et le donner à Twilio pour que les clients sachent combien de temps ils vont probablement attendre.

    Onglets plats et ajouts disponibles

    Le restaurant répertorie les plats qui sont disponibles maintenant avec des adaptations simples à ces plats, puis ces menus sont envoyés aux clients lorsqu’ils contactent le restaurant. Lorsque le code reçoit une commande, il vérifie également cette commande par rapport à la liste des plats qu’il a envoyés pour voir si le client sélectionne l’un des choix.

    Script utilisant l’onglet de feuille

    Vous n’avez pas du tout besoin de toucher à celui-ci – c’est juste une précaution pour éviter que notre code ne s’écrase accidentellement.

    Imaginez une situation où notre code obtient une commande, trouve la première ligne vide dans la feuille de commandes et écrit cette commande là-bas. Cependant, en même temps, quelqu’un d’autre passe une commande pour le même restaurant, une autre instance de notre code recherche également la première ligne vide, sélectionne la même et ils y écrivent tous les deux en même temps. Nous perdrions au moins une commande même si le code pense que tout va bien.

    Pour éviter cela, lorsque notre code commence à utiliser la feuille, la première chose qu’il fait est de changer la valeur « Script utilisant la feuille » en TRUE et de l’écrire lorsqu’il commence à l’utiliser. Ensuite, une fois l’opération terminée, la valeur redevient FALSE.

    Si notre script utilise la feuille et voit que « Script utilisant la feuille » est défini sur TRUE, il attendra que cette valeur devienne FALSE, puis notera l’ordre.

    Comment utiliser les feuilles ?

    Exemple de feuille de restaurant:

    1. Faites une copie de l’exemple de feuille de restaurant.
    2. Remplissez tous les détails de votre restaurant test.
    3. Copiez l’URL de la feuille.

    Feuille de recherche:

    1. Faites une copie de la feuille de recherche (vous n’aurez qu’à en créer une).
    2. Ne supprimez rien dans la colonne « ID extrait », mais remplacez tout le reste
    3. Mettez votre numéro Twilio dans la première colonne
    4. Collez l’URL de votre restaurant test dans la colonne URL de la fiche d’entreprise
    5. Ajoutez le numéro de téléphone de votre entreprise dans la dernière colonne

    Partage:

    1. Recherchez l’adresse e-mail « Compte de service » (vers laquelle je vous dirigerai dans la section Cloud Functions)
    2. Assurez-vous que les deux feuilles sont partagées avec cette adresse e-mail disposant d’un accès en modification

    Créer un nouveau restaurant:

    1. Chaque fois que vous avez besoin de créer un nouveau restaurant, il vous suffit de faire une copie de la fiche du restaurant
    2. Assurez-vous de cocher « partager avec les mêmes personnes » lorsque vous le copiez
    3. Effacez les détails actuels
    4. Collez la nouvelle URL Google Sheet dans une nouvelle ligne de votre feuille de recherche

    Lorsque le code s’exécute, il ouvre la feuille de recherche, utilise le numéro de téléphone Twilio pour trouver l’ID de feuille spécifique pour ce restaurant, accède à cette feuille et renvoie le menu.

    Fonctions Google Cloud

    Google Cloud Functions est un moyen simple d’exécuter automatiquement du code en ligne sans avoir à configurer de serveurs ou à installer tout un tas de programmes spéciaux quelque part pour vous assurer que votre code est transférable.

    Si vous ne souhaitez pas en savoir plus sur Google Cloud et que vous souhaitez simplement que le code s’exécute, voici le code Python du chatbot gratuit.

    Que fait le code ?

    Notre code n’essaie de gérer aucune des conversations réelles, il reçoit simplement des demandes de Twilio – y compris des détails sur l’utilisateur et à quel stade il en est – et exécute quelques fonctions simples.

    Étape 1: « Démarrer »

    Le code reçoit un message de Twilio comprenant le numéro Twilio qui a été activé et l’étape à laquelle se trouve l’utilisateur (début). En se basant sur l’étape de « démarrage », le code active la fonction de démarrage.

    Il recherche la feuille de restaurant spécifique en fonction du numéro Twilio, puis renvoie le menu de ce restaurant.

    Il envoie également des éléments Twilio tels que le numéro du restaurant spécifique et une version condensée du menu et des ajouts pour que nous puissions vérifier les commandes.

    Étape 2: « Élu »

    Le code reçoit l’étape à laquelle l’utilisateur se trouve (choisi) ainsi que son message de commande, l’identifiant de la feuille du restaurant et le menu condensé (qu’il a déjà envoyé à Twilio), nous n’avons donc pas à chercher ces choses. encore.

    En se basant sur l’étape « choisie », le code active la fonction choisie. Il vérifie si la commande correspond à notre menu condensé. Si ce n’est pas le cas, cela indique à Twilio que le message ne ressemble pas à une commande.

    Si la commande correspond à notre menu, il écrit la commande dans la première ligne vide. Il crée également un ID de commande, qui est une combinaison de l’heure et d’une partie du numéro de téléphone de l’utilisateur.

    Il renvoie à Twilio un message indiquant si la commande correspond à notre menu et, si elle correspond à notre menu, quel est le numéro de commande.

    Étape 3: « Arrivé »

    Le code reçoit l’étape à laquelle l’utilisateur est (arrivé) et active la fonction arrivée. Il reçoit également le message décrivant le véhicule de l’utilisateur, l’identifiant de la fiche spécifique au restaurant et le numéro de commande, qu’il a déjà indiqué à Twilio.

    Il recherche la feuille de restaurant et trouve l’ID de commande qui correspond à celui qui lui a été envoyé, puis met à jour cette ligne pour montrer que l’utilisateur est arrivé et la description de sa voiture.

    Twilio gère tout le contexte

    Il peut vous sembler étrange que chaque fois que le code trouve des informations (par exemple, l’ID de feuille à rechercher), il envoie ces informations à Twilio et les demande à nouveau plus tard. C’est parce que notre code ne sait pas du tout ce qui se passe, sauf ce que Twilio lui dit. Chaque fois que nous activons notre code, il démarre exactement de la même manière, il n’a donc aucun moyen de savoir quel utilisateur envoie un SMS à Twilio, à quel stade il se trouve, ou même de quel restaurant nous parlons.

    Twilio se souvient de ces choses au cours de l’interaction, nous l’utilisons donc pour gérer tout cela. Notre code est un « faiseur » très simple – il ne « sait » rien pendant plus de cinq secondes à la fois.

    Comment configurer le code ?

    Je n’ai pas le temps de décrire comment utiliser en profondeur Google Cloud Functions ou comment coder en Python, mais le code que j’ai partagé ci-dessus comprend un bon nombre de notes expliquant ce qui se passe, et je vais vous parler à travers les étapes spécifiques à ce processus.

    Étape 1: configuration

    Assurez-vous:

    Étape 2: créer une nouvelle fonction

    Si vous n’avez pas encore créé de projet, vous devrez peut-être commencer par le faire et vous pouvez donner au projet le nom de votre choix.

    Étape 3: définissez les détails de votre fonction

    La capture d’écran ci-dessous vous donne de nombreux détails dont vous avez besoin. Je vous recommande de choisir 256 Mo de mémoire – cela devrait suffire. Si vous constatez que vous rencontrez des problèmes (ou si vous voulez être plus prudent dès le début), augmentez-le à 512 Mo.

    Assurez-vous de sélectionner HTTP comme déclencheur et notez l’URL qu’il vous donne (si vous oubliez, vous pouvez toujours trouver l’URL en allant dans l’onglet « Déclencheur » de la fonction). Assurez-vous également de cocher l’option pour autoriser Non authentifié Accès (de cette façon Twilio pourra démarrer la fonction) .Sélectionnez « Éditeur en ligne » et collez le code Gist que je vous ai donné (il est fortement commenté, je recommande de le lire pour vous assurer que vous êtes satisfait de ce qu’il fait ) TXT » et collez les lignes suivantes des bibliothèques que vous devrez utiliser:

    Assurez-vous que « fonction à exécuter » est SMS

    Tout comme je l’ai fait ci-dessus écrivez « spreadsheet_id » dans la colonne « Nom », et dans la colonne « Valeur », collez l’ID de votre feuille de recherche. Vous obtenez l’ID en regardant l’URL de la feuille de recherche et en copiant tout ce qui se trouve entre les deux dernières barres obliques (encadrées en rouge ci-dessous).

    Il ne doit contenir que « Compte de service par défaut App Engine » et vous fournir une adresse e-mail (comme ci-dessous). C’est l’adresse e-mail avec laquelle vous devez partager toutes vos feuilles de calcul Google. Écrivez-le quelque part et ajoutez-le en tant qu’utilisateur d’édition pour votre recherche et les feuilles spécifiques au restaurant.

    Une fois que vous avez fait tout cela

    Une fois que vous avez déployé, vous devriez revenir sur l’écran principal de votre fonction cloud. La coche verte dans le coin supérieur gauche vous indique que tout fonctionne.

    Étape 4: Activez l’API Sheets

    La première fois que votre code essaie d’accéder à Google Sheets, il se peut que vous ne puissiez pas le faire, car vous devez activer l’API Google Sheets pour votre compte. Allez ici, sélectionnez le projet sur lequel vous travaillez avec le menu déroulant dans le coin supérieur gauche

    Étape 5: Revenez à Twilio et collez le déclencheur HTTP pour votre code

    Vous vous souvenez de l’URL de déclenchement que nous avons notée lors de la création de notre fonction ? Revenez dans votre Twilio Studio et trouvez tous les blocs avec le

    Testez le bot

    Vous devriez maintenant avoir configuré votre fonction Cloud. Vous devez également avoir configuré et partagé vos deux feuilles de calcul Google avec votre compte de service Cloud Function.

    La prochaine étape consiste à tester le bot. Commencez par envoyer à votre numéro Twilio le mot « ordre » pour le faire démarrer. Il doit répondre avec un menu que votre code extrait de la feuille Google spécifique à votre restaurant

    Si, pour une raison quelconque, cela ne fonctionne pas, vous pouvez vérifier deux endroits. Twilio tient un journal de toutes les erreurs qu’il voit que vous pouvez trouver en cliquant sur le petit symbole « Débogueur » dans le coin supérieur droit:

    Google conserve également une trace de tout ce qui se passe avec votre fonction Cloud. Cela inclut les notifications sans erreur. Vous pouvez voir tout cela en cliquant sur « VOIR LES JOURNAUX » en haut:

    Conclusion: casser des choses et s’amuser

    Tout cela n’est en aucun cas parfait, et je suis sûr qu’il y a des choses que vous pourriez ajouter et améliorer, mais c’est un moyen de créer un réseau de chatbots évolutifs, chacun spécifique à une entreprise différente, et chacun partiellement géré par cette entreprise à coût minime.

    Essayez ceci, cassez-le, améliorez-le, déchirez-le et recommencez, et dites-moi ce que vous en pensez !

    Post-scriptum: hacks étranges

    Ce bit n’est vraiment destiné qu’aux personnes intéressées, mais parce que nous l’avons délibérément fait avec un minimum de ressources, nous rencontrons quelques problèmes étranges – principalement autour des demandes adressées à notre bot lorsqu’il n’a pas été activé depuis un moment.

    Lorsque Twilio reçoit des messages pour la première fois depuis un certain temps, il s’allume assez rapidement et s’attend à ce que d’autres choses le fassent également. Par exemple, lorsque Twilio envoie des requêtes à notre code, il suppose que le code a échoué si cela prend plus de cinq secondes environ. Ce n’est pas si inhabituel: de nombreuses plates-formes de chat exigent un délai maximal de cinq secondes.

    Cloud Functions est capable de fonctionner assez rapidement, même avec des allocations de mémoire plus faibles, mais Google Sheets semble toujours être un peu lent lorsqu’il est accédé via l’API. En fait, Google Sheets est particulièrement lent s’il n’y a pas eu accès depuis un certain temps.

    Cela peut signifier que, si personne n’a utilisé votre bot récemment, l’API Google Sheets met trop de temps à répondre la première fois et Twilio abandonne avant que notre code puisse revenir, provoquant une erreur.

    Il y a quelques parties de notre script conçues pour éviter cela.

    Essayer à nouveau

    La première fois que nous activons notre fonction Cloud, nous ne voulons pas qu’elle change quoi que ce soit, nous voulons juste des informations. Donc, dans Twilio, nous commençons par créer une variable appelée « retries » et en définissant la valeur sur 0.

    Si la demande échoue, nous vérifions si la valeur des tentatives est 0. Si c’est le cas, nous définissons la valeur des tentatives sur 1 et réessayons. S’il échoue une deuxième fois, nous ne voulons pas continuer à le faire pour toujours, nous envoyons une erreur et nous nous arrêtons là.

    Réveiller la feuille

    La deuxième fois que nous activons notre fonction Cloud, nous voulons qu’elle fasse quelque chose. Nous ne pouvons pas simplement le refaire s’il ne revient pas à temps car nous nous retrouverons avec des commandes en double, ce qui est un casse-tête pour le restaurant.

    Au lieu de cela, au cours d’une partie précédente de l’échange, nous apportons une modification inutile à l’une de nos feuilles, juste pour qu’elle soit prête pour le moment où nous effectuerons le changement important.

    Dans notre flux de conversation, nous:

    1. Obtenez la réponse
    2. Demandez le nom de l’utilisateur
    3. Écrivez la commande

    Nous n’avons rien à faire sur la feuille avant la quatrième étape, mais après avoir reçu la réponse de l’utilisateur (avant de demander son nom), nous activons notre code une fois pour écrire quelque chose d’inutile dans la feuille de commande. Nous disons à Twilio – que cela réussisse ou échoue – continuez avec l’interaction, car peu importe à ce stade que nous soyons revenus à temps. Ensuite, espérons-le, au moment où nous écrivons dans notre commande, Google Sheets est prêt pour une utilisation réelle.

    Il y a des limites

    Google Sheets n’est pas la base de données idéale. Elle est lente et pourrait signifier que nous manquons les délais d’attente pour Twilio. Mais ces quelques étapes supplémentaires nous aident à contourner certaines de ces limitations.

    Tags: ,