Fermer

août 5, 2020

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 [19659003] 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 vérifier par rapport à l'inventaire / menus, et de les noter pour être remplies.

Une fois le système mis en place, aucun codage ne sera nécessaire pour créer un nouveau chatbot 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.

Contexte

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

En avril, j'ai reçu un courriel 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. Alex avait trouvé mon post de 2017 (Holy Moly, 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:

  • Il devait fonctionner entièrement dans un message texte (et si la commande était super compliquée, il devait être en mesure de mettre en place un appel directement avec le restaurant).
  • L'exécution
  • 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 qui utilisent notre chatbot et qui propose des liens 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.

Si vous revenez sur ce post, ou si vous avez simplement besoin d'aide pour un domaine, n'hésitez pas à passer directement à la partie spécifique qui vous intéresse:

Prix
Twilio
Google Sheets
Google Cloud Functions
Testez le bot
Brisez les choses et amusez-vous
Postscript – hacks bizarres

Tarification

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

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

Lorsque vous commencez tout juste là-dessus, ou lorsque vous avez apporté une modification (comme l'ajout nouvelles fonctionnalités ou 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. Il en coûtera environ 0,0075 $ pour envoyer et recevoir des SMS et Twilio Studio – que nous utilisons pour faire une grande partie de la «conversation» – coûte 0,01 $ 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 texte par mois et que chaque commande nécessite environ cinq messages texte, cela revient à environ 100 $ par mois au total.

Google Sheets

Google Sheets est gratuit et excellent. Longue vie à Google Sheets.

Google Cloud Functions

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

1. 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 existe également une allocation mensuelle gratuite.

2. 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 nous puisons dans les crédits promotionnels.

Twilio

Twilio est une plateforme 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, le voici .

É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 vers 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 aller à numéros de téléphone / entrant .

Une fois que votre numéro de téléphone apparaît, notez-le.

Étape 3: Créez votre Studio Flow

Studio est l'éditeur glisser-déposer de Twilio qui vous permet de créer la structure de votre conversation. Un «flux» de studio n'est que le nom d'une conversation spécifique que vous avez construite.

Vous pouvez accéder à Twilio Studio en cliquant à nouveau sur le menu Twilio et en cliquant sur «Studio» sous «Runtime».

Créer un nouveau flux en cliquant sur "Créer un flux".

Lorsque vous créez un nouveau flux, vous aurez la possibilité de partir de zéro ou d'utiliser l'une des options intégrées pour créer votre flux pour vous ( bien qu'ils ne soient pas aussi détaillés que le modèle que je partage ici).

Si vous souhaitez utiliser une version du flux qu'Alex et moi avons construit, sélectionnez «Importer depuis JSON» et cliquez sur «Suivant». Ensuite, téléchargez ce fichier et copiez le contenu dans la boîte qui apparaît.

Assurez-vous qu'il commence par une seule accolade {et se termine par une seule accolade}. La boîte qui apparaît aura automatiquement {} dedans et si vous ne les supprimez pas avant de coller, vous doublerez et il n'acceptera pas votre entrée.

Si tout se passe bien, on vous présentera un flux qui ressemble à ceci:

Vous vous demandez peut-être: Au nom de tout ce qui est sacré, est cet enchevêtrement de spaghettis colorés?

C'est le flux Twilio Studio que nous avons créé ne vous inquiétez pas, il se divise essentiellement en une série de questions à choix multiples où la réponse à chacune détermine où vous allez ensuite dans le flux.

Tout ce que vous pouvez voir sur le canevas est un widget de la bibliothèque de widgets Twilio Studio connecté avec les conditions de type «si ceci, alors cela».

Le processus Studio Flow

Avant d'entrer dans des blocs spécifiques du processus, voici un aperçu de ce qui se passe:

  1. Un client envoie un message à l'un de nos Twilio Numéros
  2. 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.
  3. Si le client tente de commander hors menu, nous connectons un appel au restaurant
  4. Si le client choisit quelque chose dans notre menu, nous demandons son nom, puis enregistrons sa commande dans la feuille pour ce restaurant et leur dire quand arriver pour récupérer leur commande
  5. Au fur et à mesure que l'utilisateur nous 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 feuille de restaurant.

Regardons quelques exemples de blocs de construction, d'accord?

Déclencheur initial

Le déclencheur initial apparaît juste au début de chaque flux et divise le contact entrant en fonction s'il s'agit d'un message texte, 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.

Notez le fait que nous commençons une nouvelle interaction

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

Le bloc “Set 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 la valeur de stage, à la fois dans Studio et dans notre code externe, afin de savoir quoi faire, quand.

Obtenir notre menu

Nous supposons que si quelqu'un nous a envoyé un message, il déclenche le chatbot, ils cherchent à commander donc la prochaine étape est de 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 voudrait dire 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 ce 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 est à court d'ingrédient.

Ce dont nous avons vraiment besoin, c'est pour le restaurants pour pouvoir lister 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 requête à 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 parlerons 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 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 plus tôt, afin que le code sache ce que l'utilisateur recherche.

Ensuite, le code fera des choses (nous y reviendrons plus tard) et renvoyer ses propres informations. Nous pouvons alors dire à Twilio d'utiliser des parties de la réponse dans les messages.

Envoyer un message en réponse

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 la réponse", ce qui signifie qu'une fois ce message envoyé, Twilio assumera le la conversation est toujours en cours plutôt que de la terminer là.

Dans ce cas, nous écrivons 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", donc nous accédons au contenu que nous en avons obtenu en écrivant:

{{widgets.get_options

La réponse revient en JSON, et heureusement Twilio le rompt automatiquement 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:

{"name": restaurant_name,

"dish_string": "Vous pouvez choisir parmi Margherita Pizza, Hawaiian Pizza, Vegetarian Pizza"

"additions ":" Grand, moyen, petit "}

Nous obtenons le menu disponible en écrivant" {{widgets.get_options.parsed.dishes_string}} ", 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 va utiliser 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 " Le widget Split Based On… "est la façon dont nous sélectionnons certaines conditions et définissons ce qu'il faut faire si elles sont remplies.

Dans ce cas, nous utilisons le contenu de la réponse à notre message précédent auquel nous accédons en utilisant {{options_follow_up.inbound. Body}}. "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 w

Ensuite, nous posons 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 passer commande, alors nous prenons leur commande et la vérifions avec notre code:

Mettre en place un appel

Si l'utilisateur dit qu'il veut quelque chose hors menu, nous devrons organiser un appel avec le restaurant. Nous faisons cela en appelant d'abord l'utilisateur:

Ensuite, quand il décroche, 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 téléphone numéro

Suivez les instructions de la deuxième étape pour revenir à la liste spécifique du numéro de téléphone que vous avez acheté. Faites ensuite défiler vers le bas et sélectionnez le Studio Flow que vous avez créé.

Google Sheets

Ce chatbot utilise deux Google Sheets.

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. que nous savons 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 fiche 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.

Commandes

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 VRAI au "CLIENT ICI?"

Temps d'attente

C'est un onglet assez simple, car il contient une cellule où le restaurant écrit combien de temps il faudra avant que les commandes 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 disponibles et ajouts

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 la feuille

Vous n'avez pas besoin de toucher celui-ci du tout – 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 using sheet» en TRUE et écrit quand il commence à l'utiliser. Ensuite, quand c'est fait, il remet la valeur à 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 écrira

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 (il vous suffira d'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 feuille d'entreprise. [19659012] Ajoutez le numéro de téléphone de votre entreprise dans la dernière colonne.

Partage :

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

Création d'un nouveau restaurant :

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

Lorsque le code s'exécute, il ouvrira la feuille de recherche, utilisez le numéro de téléphone Twilio pour trouver la spéci Fic Sheet ID pour ce restaurant, accédez à cette feuille et renvoyez le menu.

Google Cloud Functions

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

Si vous ne voulez pas en savoir plus sur Google Cloud et que vous voulez juste que le code s'exécute – voici le code Python du chatbot gratuit . [19659031] Que fait le code?

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

Etape 1: «Début»

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

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

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

Étape 2: «Choisi»

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

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 l'ordre correspond à notre menu, il écrit l'ordre 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, ce que le le numéro d'ordre est.

Etape 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'ID de feuille spécifique au restaurant et le numéro de commande, qu'il a tous indiqué précédemment à Twilio.

Il recherche la fiche du restaurant et trouve l'ID de commande qui correspond à celui qu'il 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

Cela peut vous sembler étrange que chaque fois que le code trouve des informations (par exemple, le 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. pour le déroulement de l'interaction, nous l'utilisons donc pour gérer tout cela. Notre code est un «exécutant» très simple – il ne «sait» rien pendant plus de cinq secondes à la fois.

Comment configurer le code?

Je n'ai pas le temps pour décrire comment utiliser Google Cloud Functions en profondeur, 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 expliquer les étapes spécifiques à cela

Étape 1: Configurer

Assurez-vous de:

Étape 2: Créer une nouvelle fonction

Allez ici et cliquez sur «créer une nouvelle fonction». Si vous n’avez pas encore créé de projet, vous devrez peut-être le faire d’abord, et vous pouvez donner au projet le nom que vous voulez.

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

La capture d’écran ci-dessous donne vous avez beaucoup de 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éclenchement» de la fonction).

Assurez-vous également de cocher l'option pour autoriser l'accès non authentifié (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 vous recommande de le lire pour vous assurer que vous êtes satisfait de ce qu'il fait).

Cliquez sur "REQUIREMENTS.TXT" et collez-le les lignes de bibliothèques suivantes que vous devrez utiliser:

Assurez-vous que «fonction à exécuter» est SMS, puis cliquez sur le menu déroulant «Variables d'environnement».

Tout comme je l'ai fait ci-dessus, cliquez sur «+ AJOUTER UNE VARIABLE ”, Écrivez" spreadsheet_id "dans la colonne" Name ", et dans la colonne" Value ", 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).

Cliquez sur le menu déroulant «Compte de service». 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, cliquez sur «Déployer».

Une fois le déploiement effectué, 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 changer sur l'API Google Sheets de votre compte. Allez ici sélectionnez le projet sur lequel vous travaillez avec le menu déroulant dans le coin supérieur gauche, puis cliquez sur le gros bouton bleu "ACTIVER".

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

Vous vous souvenez de l'URL du déclencheur que nous avons notée lors de la création de notre fonction? Revenez à votre Twilio Studio et trouvez tous les blocs avec le signe dans le coin supérieur gauche:

Cliquez sur chacun d'eux à tour de rôle et collez votre URL Google Cloud dans la zone de demande d'URL qui apparaît sur le côté droit de l'écran:

Test du 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.

L'étape suivante 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. Suivez les étapes qu'il vous guide jusqu'à la fin et vérifiez votre feuille de calcul Google pour vous assurer qu'elle se met à jour correctement.

Si, pour une raison quelconque, cela ne fonctionne pas, vous pouvez vérifier deux endroits. Twilio garde 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 garde également un enregistrement 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 une façon de construire un réseau de chatbots évolutifs, chacun spécifique à une entreprise différente, et chacun partiellement géré par cette entreprise à un coût minime.

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


Postscript: hacks bizarres

Ce bit n'est vraiment que pour les gens qui sont intéressés, mais parce que nous l'avons fait délibérément avec peu de ressources, nous en rencontrons quelques bizarres problèmes – principalement autour des requêtes adressées à notre bot quand il n'a pas été activé depuis un moment.

Lorsque Twilio reçoit des messages pour la première fois depuis longtemps, 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 d'exécution maximal de cinq secondes.

Les fonctions cloud peuvent 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çu pour éviter cela.

Réessayer

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 requête é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 essayez à nouveau. S'il échoue une deuxième fois, nous ne voulons pas continuer à le faire indéfiniment, alors 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 le fasse quelque chose. Nous ne pouvons pas simplement le refaire s'il ne revient pas à temps car nous finirons par avoir des commandes en double, ce qui est un casse-tête pour le restaurant.

Au lieu de cela, lors d'une partie antérieure de l'échange, nous faisons un modification inutile de 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. Envoyer le menu
  2. Obtenir la réponse
  3. Demander le nom de l'utilisateur
  4. Ecrire la commande

Nous n'avons rien à faire sur la feuille avant la quatrième étape, mais après avoir obtenu la réponse de l'utilisateur (avant de demander son nom), nous activons notre code une fois pour écrire quelque chose d'inutile dans le bon 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 allons écrire dans notre ordre, Google Sheets est prêt pour une utilisation réelle.

Il y a des limitations

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




Source link