
Partager:
Julia s'engage à aider ses collègues développeurs en créant des tutoriels, des guides et des ressources pratiques. Grâce à son expérience en matière de sensibilisation et d'éducation, elle vise à rendre la technologie plus accessible et à améliorer l'expérience globale des développeurs. Vous pouvez souvent la trouver lors d'événements communautaires locaux.
Envoi de notifications de groupe avec Google Sheets et Node-RED
Note : Certains des outils ou méthodes décrits dans cet article peuvent ne plus être pris en charge ou ne plus être d'actualité. Pour un contenu mis à jour ou une assistance, consultez nos derniers articles ou contactez-nous sur le site Communauté Vonage Slack
Vous est-il déjà arrivé de recevoir un coup de fil à 7h59 du matin vous informant que l'école de votre enfant était fermée ? C'était pratique, car vous n'étiez qu'à quelques kilomètres de là - sur le chemin du retour, après les avoir déposés.
Dans la plupart des écoles, le processus d'annonce est encore manuel de nos jours, ce qui fonctionne dans la plupart des cas. Cependant, lorsque quelque chose d'inattendu se produit, par exemple lorsque l'école est bloquée par la neige, une poignée de personnes se démènent pour appeler des centaines de parents. Il se peut que vous receviez la notification à temps, ou que vous fassiez partie des chanceux qui se sont retrouvés dans le dernier lot à 7h59.
Dans ce tutoriel, nous allons construire un flux Node-RED qui envoie de manière programmatique des notifications à une liste de contacts, en utilisant Google Sheets et l'API SMS de Vonage.
Vous suivez le cours et le présentez au directeur de l'école ? Cela vous évitera d'être coincé dans les embouteillages un jour de neige.
Conditions préalables
Avant de commencer, vous aurez besoin de quelques éléments :
A Node-RED qu'il s'agisse d'une version hébergée ou d'une installation sur votre machine
Un Account Vonage
Un moyen d'exposer votre serveur à l'internet. Cela signifie que vous utilisez une version hébergée de Node-RED ou que vous utilisez un service de tunneling comme ngrok - pour vous familiariser avec ce service Démarrer avec Ngrok dans Node-RED tutoriel
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.
Configuration de l'éditeur
Une fois que vous avez ouvert votre éditeur Node-RED, assurez-vous que les paquets suivants sont installés :
Pour ce faire, cliquez sur le menu hamburger, sélectionnez Gérer la palette. Vérifiez si des paquets ont déjà été installés sous Nœudset obtenez-en de nouveaux à partir de la section Installer dans l'onglet
Lorsque vous avez terminé, assurez-vous de redémarrer Node-RED et vous êtes prêt à partir !
Configuration de votre Account Google
Pour interagir avec l Google Sheets APIGoogle Sheets, vous devez utiliser un compte de service, c'est-à-dire une identité qu'une instance peut utiliser pour exécuter des requêtes d'API en votre nom. Il sera utilisé pour identifier les applications exécutées sur votre instance auprès d'autres services Google Cloud.
Dans ce cas, votre flux qui lit une feuille Google doit d'abord s'authentifier auprès de l'API Google Sheets.
Vous devrez créer un Account de service et lui accorder l'accès à l'API Google Sheets. Ensuite, mettez à jour votre application pour transmettre les informations d'identification du compte de service à l'API Google Sheets. Ainsi, votre flux s'authentifie de manière transparente auprès de l'API sans intégrer de clés secrètes ou d'informations d'identification de l'utilisateur.
Étape 1 : Créer un nouveau compte de service
Nous commencerons par créer un nouveau projet sur la page Page des comptes de service de Google Cloud Platform. Cliquez sur CRÉER pour commencer.

Ensuite, donnez un nom à votre projet, en sélectionnant une organisation ou en laissant le nom vide, puis appuyez sur CRÉER.

Vous verrez bientôt apparaître une notification indiquant que votre projet a été créé.

Maintenant que vous avez un projet, ajoutons-y un Account de service !


Ensuite, vous devez créer une clé que vous utiliserez pour vous authentifier auprès du nœud de la feuille de calcul dans votre flux. Cliquez sur Créer une clépuis sélectionnez JSON comme type de clé. Enregistrez ce fichier lorsque vous y êtes invité - gardez-le à portée de main car vous en aurez bientôt besoin, puis cliquez sur Terminé.

Étape 2 : Activer l'API Google Sheets pour votre projet
Dans le menu hamburger, sélectionnez API et services -> Tableau de bordpuis cliquez sur l'icône ACTIVER LES APIS ET LES SERVICES et les services. Recherchez l'API Google Sheets API dans la bibliothèque d'API, ouvrez-la et cliquez sur Activer.

Étape 3 : Partage de Google Sheets avec votre Account de service
Accédez à la page Comptes de service et notez l'adresse électronique associée au compte de service que vous venez de créer. Vous devrez utiliser cette adresse électronique pour partager vos feuilles de calcul avec le compte de service.

Envoi de notifications de groupe avec Google Sheets et Node-RED
Créer une feuille de calcul
Si vous n'avez pas encore de feuille Google, créez-en une dès maintenant.
Google Sheets utilise un système de matrice cellulaire, où chaque colonne peut être identifiée par une lettre (en commençant par A comme première colonne) et les lignes sont numérotées (1 étant la première ligne). Si vous souhaitez sélectionner le deuxième élément de la première ligne, voici comment procéder B1.
Vous pouvez également sélectionner des plages de cellules en utilisant les options CELLULE LA PLUS À GAUCHE:CELLULE LA PLUS À DROITE pour sélectionner des plages de cellules. Par exemple, pour sélectionner les deuxième et troisième éléments des lignes 1 à 5, utilisez la notation B1:C5.
Après avoir créé une feuille de calcul, vous verrez apparaître une feuille de calcul Feuille1 au bas de l'écran, qui correspond à la feuille de calcul que vous utilisez actuellement. Vous pouvez la renommer ou ajouter d'autres feuilles de calcul à votre feuille de calcul.
Pour ce tutoriel, j'utilise une feuille de calcul avec 4 colonnes : Nom, Prénom, Téléphone et Courriel - vous aurez besoin d'au moins 2 lignes de données pour suivre le cours.
Veillez à ajouter un numéro de téléphone auquel vous avez accès, afin de pouvoir tester votre flux ultérieurement.
Une fois votre feuille de calcul prête, il est temps de la partager avec votre Account de service.

Récupérer les données de votre feuille Google
Commencez votre flux en ajoutant une feuille GS à votre espace de travail. Configurez ce nœud pour qu'il récupère les données de votre Google Sheet en remplissant les champs suivants :
| PARAMETERS | DESCRIPTION |
|---|---|
| Creds | Press the edit button to provide your Service Account key. Remember the JSON file you downloaded earlier? Copy and paste this JSON key in the text field. |
| Method | Select Get Cells from the drop-down menu. This will grab the data from the Google Sheet and pull it into your flow. |
| SpreadsheetID | You can figure out your spreadsheet ID from the URL of your Google Sheet. For example, if the URL is https://docs.google.com/spreadsheets/d/1mmXhj40aeSooxmtku3ma4auLyrHhO8xCSQsklZ1_BU/edit#gid=0, the SpreadsheetID will be the string found in between d/ and /edit: 1mmXhj40aeSooxmtku3ma4auLyrHhO8xCSQsklZ1_BU. Have a look at your spreadsheet URL and find your SpreadSheetID. Then paste this string in the SpreadSheetID field. |
| Cells | Select the cells where your data is located on the spreadsheet. In the example below, this value will be: Sheet1!A2:D30, as the data is found on the worksheet named "Sheet1", in columns A-D on rows 2-30. Note that we're not including the table headers. |
Une fois que vous avez fini d'éditer la feuille GS appuyez sur Terminé.

Ensuite, jetons un coup d'œil aux données que nous obtenons de l'API Google Sheets.
Ajouter un injecter et un débogage à votre espace de travail et connectez-les à la feuille de calcul GSheet d'une part. Frapper Déployeret cliquez sur le bouton injecter puis jetez un coup d'œil à votre barre latérale de débogage.

Vous remarquerez que la réponse dans msg.payload est un tableau de tableaux, chacun de ces tableaux ayant 4 éléments, soit une ligne de données.
Diviser le tableau msg.payload
Cette structure de données n'est pas idéale pour un traitement ultérieur, c'est pourquoi nous allons diviser le tableau de tableaux en tableaux individuels.
Heureusement, il existe déjà un nœud par défaut dans votre palette qui fera le gros du travail pour vous.
Trouver le diviser sous séquence dans votre palette de nœuds sur le côté gauche de votre écran. Ajoutez-le à votre espace de travail, connectez-le après la feuille GS et faites suivre d'un nœud de débogagepuis appuyez sur Déployer et exécutez à nouveau votre flux.
Jetez un coup d'œil à la barre latérale de débogage et remarquez que la réponse nous parvient sous la forme d'une séquence de tableaux individuels. Nous pouvons ainsi les traiter un par un, au fur et à mesure de leur arrivée.

Régler le délai
Dans la plupart des cas, vous ne voudriez pas envoyer des messages à cette vitesse, que ce soit par courrier électronique, par SMS ou par le canal de votre choix.
Par exemple, l'API SMS de Vonage a une limite de débit de limite de débit pour les SMS sortants - toutes les clés API sont paramétrées par défaut avec une restriction de débit de 30 requêtes API par seconde. En outre, des restrictions s'appliquent à l'envoi de SMS à partir de certains numéros, de sorte que vous pouvez être limité à 1 SMS par seconde.
Pour vous assurer que vous n'atteignez pas les limites de débit, il est conseillé de définir un délai pour chaque tableau entrant dans le système msg.payload.
Pour ce faire, il faut trouver le délai dans la fonction fonction de votre palette de nœuds, et connectez-le après le nœud split et connectez-le après le nœud de scission. Double-cliquez dessus pour ouvrir les propriétés du nœud et réglez le délai sur 1 seconde - cela devrait couvrir la plupart des cas d'utilisation, mais n'hésitez pas à l'ajuster si nécessaire.
Préparation du message
À ce stade, nous disposons de toutes les informations nécessaires sur les destinataires, alors passons au message !
Bien que vous puissiez envoyer le même message à tous les destinataires, il est toujours bon de le rendre un peu plus personnel. Recevoir une mauvaise nouvelle est déjà suffisamment frustrant, et une mauvaise expérience utilisateur n'améliorera pas la situation.
L'ajout d'un modèle ne donnera pas seulement une touche personnelle à votre message, il le rendra également plus professionnel.
Ajouter un modèle nœud après délai. Double-cliquez dessus, définissez Propriété à msg.text et faites preuve de créativité avec votre message dans le champ de texte !
Ce champ de texte supporte Mustache templatingVous pouvez donc commencer par saluer le destinataire en utilisant son nom : {{payload.0}}. Cette expression fait référence au premier élément du fichier msg.payload le prénom du destinataire.

Une fois la modification terminée, appuyez sur Terminépuis sur Déployer.
Envoi de notifications par SMS
Il existe de nombreux moyens de transmettre vos notifications, mais en cas de mauvaises conditions météorologiques, le SMS peut s'avérer être la meilleure solution, c'est pourquoi nous commencerons par cette option.
Pour envoyer les messages SMS, nous utiliserons l'API SMS DE VONAGE.
Faites défiler vers le bas jusqu'à la page nexmo de votre palette de nœuds et ajoutez sendsms à votre espace de travail, connecté après le modèle nœud.
Configurez ce nœud en double-cliquant dessus et en remplissant les paramètres ci-dessous. Vous trouverez CLÉ DE L'API et SECRET API en cliquant sur le bouton d'édition à côté de Références Vonage.
| KEY | DESCRIPTION |
|---|---|
| API KEY | Your Vonage API key, shown in your account overview. |
| API SECRET | Your Vonage API secret, shown in your account overview. |
| TO | The number you are sending the SMS to, {{msg.payload.2}} in this case. |
| FROM | The number or text shown on a handset when it displays your message. You can also set a custom alphanumeric FROM value if this feature is supported in your country. |
| TEXT | The content of your message. Use {{msg.text}} to reference the templated message you've created earlier. |
Assurez-vous que Unicode est coché pour conserver le formatage de votre message, puis appuyez sur Terminé et Déployer.

Exécutez à nouveau votre flux et voyez vos messages modélisés apparaître dans la barre latérale de débogage.

Récépissés de livraison
Lorsque vous envoyez une requête à l'API SMS, celle-ci renvoie un tableau d'objets de message. Idéalement, chacun d'entre eux a un statut de 0, ce qui indique que l'envoi de votre message a été programmé avec succès. Il s'agit des objets de réponse que vous venez de voir dans la zone de débogage.
Bien que l'inspection de cette sortie soit très utile pour déterminer ce que l'API SMS de Vonage a fait, il n'y a aucune garantie que le message a atteint le combiné du destinataire. Ce n'est pas exactement ce que vous voulez entendre lorsque vous envoyez des alertes pour le jour de neige, n'est-ce pas ?
Une fois le message arrivé à destination, le transporteur renvoie un reçu de livraison à Vonage - pas de panique ! Tout ce que vous avez à faire, c'est de configurer un point de terminaison webhook pour que Vonage puisse transmettre ces accusés de réception à Vonage.
Connecter un http à un nœud de réponse réponse http ainsi qu'à un nœud débogage puis remplir le nœud URL avec /receipt dans le champ http dans le nœud d'entrée.
Ensuite, vous devrez indiquer à l'API SMS de Vonage où il doit transmettre les accusés de réception. Allez à vos paramètres de l'API dans la section Paramètres SMS par défaut par défaut. Définissez l'URL du webhook par défaut pour les accusés de réception comme suit YOUR_URL/receiptpuis Enregistrez les modifications.

Vous pouvez désormais être sûr que vos notifications de jour de neige ont bien été envoyées à toutes les personnes figurant sur votre liste ! Ne me croyez pas sur parole, allez dans la barre latérale de débogage et lisez vos reçus de livraison.

Quelle est la prochaine étape ?
Crédit supplémentaire : Inscrivez vos reçus de livraison sur la feuille Google
Bien que la barre latérale de débogage vous donne toutes les informations dont vous aurez besoin, il est parfois plus facile de saisir le résultat si les données sont présentées de manière plus structurée.
Dans cette section, nous allons étudier la possibilité de réinscrire vos accusés de réception dans la même feuille de calcul, sur une autre feuille de calcul (onglet).
Choisissez vos données
Les accusés de réception contiendront les propriétés suivantes du fichier msg.payload les propriétés suivantes de l'objet msg.payload :
| PROPERTY | DESCRIPTION |
|---|---|
| msisdn | The number the message was sent to. |
| to | Your Vonage number or the SenderID you've set when sending the SMS. |
| network-code | The Mobile Country Code Mobile Network Code (MCCMNC) of the carrier the destination phone number is registered with. |
| messageId | The Vonage ID for this message. |
| price | The cost of this message. |
| status | Will be one of: delivered, expired, failed, rejected, accepted, buffered or unknown, based on where the message is in the delivery process. |
| scts | When the delivery receipt was received from the carrier in YYMMDDHHMM format. For example, 2001011400 is at 2020-01-01 14:00 |
| err-code | The status of the request. Will be a non 0 value in case of an error. See the Delivery Receipt documentation for more details. |
| api-key | Your Vonage API key. |
| message-timestamp | The time when Vonage started to push this Delivery Receipt to your webhook endpoint. |
Décidez quels sont les paramètres qui vous importent, puis, à l'aide d'un changement définir msg.payload à un tableau des propriétés respectives.
Par exemple, je suis intéressé par l'horodatage, le numéro du destinataire, le statut, le code d'erreur et l'identifiant du message. msg.payload à l'expression suivante expression:
[payload.\`message-timestamp\`, payload.msisdn, payload.status, payload.\`err-code\`, payload.messageId]Connecter ce changement au nœud /receipt puis suivre avec une GSheet node.
Inscrire vos données dans la feuille Google
Ajoutez une autre feuille de calcul (onglet) à votre feuille Google et notez son nom - par défaut, il s'agira de "Feuille2".
Ensuite, retournez dans votre éditeur Node-RED et ouvrez le fichier feuille GS et ouvrez les propriétés du nœud. Sélectionnez vos informations d'identification dans le champ creds sélectionnez Ajouter une ligne comme MéthodeRemplissez votre ID de la feuille de calculpuis indiquez la plage de cellules dans laquelle vous souhaitez que les données soient écrites. Dans mon cas, ce sera Feuille2!A:Ecar je souhaite que les données soient réparties dans les colonnes A à E de la feuille de calcul "Sheet2".

Lorsque vous êtes prêt, cliquez sur Terminé et Déployerpuis exécutez à nouveau votre flux.
Félicitations ! Vos reçus de livraison sont maintenant enregistrés sur la deuxième feuille de calcul de votre feuille de calcul. Rendez-vous sur votre feuille de calcul Google et consultez-les !

Autres idées de piratage
Fatigué de devoir ouvrir votre éditeur Node-RED pour démarrer votre flux ? Expérimentez différentes façons de le lancer !
Essayez de remplacer les injecter par un SMS entrant entrant. Envoyez un SMS à votre numéro Vonage pour accomplir votre tâche !
Appels entrants serait une autre option intéressante ! Vous pourriez même vous en inspirer et mettre en place un Menu de réponse vocale interactive
Mettre en place une interface utilisateur à l'aide des nœuds nœuds du tableau de bord
Ressources
Mieux comprendre les accusés de réception
Essayer un autre tutoriel
Partager:
Julia s'engage à aider ses collègues développeurs en créant des tutoriels, des guides et des ressources pratiques. Grâce à son expérience en matière de sensibilisation et d'éducation, elle vise à rendre la technologie plus accessible et à améliorer l'expérience globale des développeurs. Vous pouvez souvent la trouver lors d'événements communautaires locaux.
