Le guide ultime pour envoyer des SMS groupés avec Twilio et Node.js
Temps de lecture: 6 minutes
Envoyer un seul SMS avec Twilio est une affaire relativement simple, mais que faire si vous devez envoyer 10 messages ? Ou 10 000 ?
Imaginez que vous êtes vendeur de glaces. Vous voulez améliorer vos affaires en envoyant des alertes SMS lorsque vous êtes dans votre camionnette afin que vos clients sachent que vous êtes sur le point de livrer des rafraîchissements.
Je sais ce que vous pensez : « On est en décembre, ce n'est pas la période des glaces ! ». Mais je suis à Melbourne en ce moment par une journée d'été à 31 °C, alors je pense beaucoup à des aliments froids et glacés.
Dans ce post, nous allons étudier comment partir de l'envoi du premier message à l'abonné numéro 1 jusqu'à 10 000 messages avec Node.js.
Préparation
Pour suivre ce post et coder les mêmes fonctionnalités, vous allez avoir besoin de quelques éléments :
- Node.js et npm (j'utilise la dernière version LTS de Node.js, 8.9.1)
- Un compte Twilio et un numéro Twilio pouvant envoyer des SMS
Une fois ces éléments en place, créez un nouveau répertoire dans lequel travailler et initialisez-le avec npm, puis installez les modules requis :
Dans ce cas, j'utilise dotenv
pour stocker les identifiants requis pour interagir avec l'API. Pour les charger encore plus facilement, j'ai également inclus le node-env-run de Dominik. Ajoutons maintenant ces informations d'identification. Créez un fichier nommé .env
et entrez les éléments suivants, en remplaçant les espaces réservés par vos identifiants de compte et votre numéro Twilio :
Vous avez tout ça ? Bien, envoyons quelques messages !
La première cuillère
Tout commence par un seul message à votre premier abonné. Il s'agit du test alpha pour votre abonnement aux alertes de livraison de crème glacée. Vous n'avez besoin d'envoyer qu'un seul message. Écrivons ce code.
Créez un fichier nommé firstsdoop.js
, ouvrez-le et ajoutez les éléments suivants :
Ce code importe le module Twilio Node.js et initialise un nouveau client API à l'aide de votre Account ID et de votre jeton d'autorisation (Auth Token). Nous configurons également le message que nous allons envoyer.
Nous avons besoin d'un numéro auquel envoyer le message. Puisqu'il s'agit du test alpha, vous pouvez peut-être ajouter votre propre numéro pour l'instant. Assurez-vous que votre numéro ici, et tout au long de ce post, est au format E.164.
Maintenant, utilisez le client API que nous avons créé ci-dessus pour envoyer le message de votre numéro Twilio à votre numéro.
Ceci crée le message et l'envoie. Si la demande réussit, le SID du message est enregistré, sinon le message d'erreur est consigné.
Pour faciliter l'exécution, ajoutez ce qui suit à votre fichier package.json
:
Testez le code en exécutant npm run firstscoop
. Vous devriez voir le SID du message sur la ligne de commande et recevoir votre première alerte de crème glacée. Ça marche ! Prenez une glace pour fêter ça !
Multi-pack
Les nouvelles de votre service d'alertes de glaces se sont répandues parmi vos amis. Vous avez maintenant un petit groupe de bénévoles disposés à agir comme votre groupe de testeurs bêta. Ils pensent également qu'ils obtiendront des glaces gratuites, mais vous pourrez en décider plus tard.
Vous pourriez simplement exécuter le fichier existant une fois pour chacun d'eux, en changeant le numéro à chaque fois, mais ce n'est pas très évolutif. Voyons comment le mettre à jour pour envoyer des messages à plusieurs numéros.
Créez un nouveau fichier, multipack.js
, et ouvrez-le dans votre éditeur. Le code commence alors de la même manière :
Cette fois, nous allons utiliser un tableau d'abonnés. Si vous ne disposez que d'un seul numéro à tester, le fait de le transformer en tableau nous permettra de nous rapprocher d'un groupe.
Nous devons maintenant passer en boucle ces numéros et envoyer les messages. Au préalable, il est judicieux d'envisager la croissance de l'activité. Vous avez peut-être 5 ou 10 abonnés pour l'instant, mais nous espérons que d'autres arriveront bientôt. Un numéro Twilio normal ne peut envoyer qu'un message par seconde. Si nous avons jusqu'à 60 abonnés, cela va prendre une minute entière pour envoyer les messages et cela va s'aggraver au-delà. Dans certains pays, les opérateurs implémentent le filtrage sur vos numéros, et l'envoi de messages à plus de 200 abonnés à partir d'un seul numéro peut déclencher ce filtrage.
Nous pouvons nous y préparer avec un service de messagerie. Les services de messagerie peuvent regrouper des numéros et faire évoluer l'envoi sur l'ensemble du pool. Au fur et à mesure que notre base d'abonnés augmente, nous pouvons ajouter des numéros pour répondre à la demande et éviter que nos messages ne soient filtrés.
Accédez à la console Twilio et créez un nouveau service de messagerie, entrez un nom convivial comme « Notifications de crème glacée » et sélectionnez « Notifications, outbound only » (Notifications, sortantes uniquement) dans la liste déroulante des cas d'utilisation.
Accédez maintenant à la section des numéros de ce service et ajoutez le numéro que vous avez utilisé pour envoyer des SMS.
Au lieu d'utiliser un numéro d'expéditeur (« de ») pour envoyer des messages, nous pouvons maintenant utiliser le SID de ce service de messagerie. Saisissez le SID et ajoutez-le à votre fichier .env
.
De retour dans multipack.js
, nous pouvons faire une boucle sur le tableau des numéros et leur envoyer chacun une alerte à l'aide du service de messagerie.
Dans ce code, nous mappons les numéros et envoyons un message pour chacun d'eux. Cela renvoie une promesse à chaque fois. Nous collectons donc les résultats de toutes les promesses à l'aide de Promise.all
et, une fois qu'elles sont terminées, nous affichons un message de réussite. Si l'une des promesses échoue, nous affichons l'erreur.
Ajoutons une autre ligne à package.json
pour faciliter l'exécution de ce fichier.
Maintenant, nous exécutons le code avec npm run multipack
et nous envoyons plusieurs messages à l'aide de notre nouveau service de messagerie.
« 99 problèmes, mais un flake n'en est pas un »
Votre abonnement aux alertes est public et vos amis en ont tous parlé à leurs amis. À mesure que vos chiffres commencent à augmenter, vous envoyez de plus en plus de notifications concernant la livraison imminente de crèmes glacées. Si vous avez beaucoup de succès, vous pourriez dépasser rapidement le cap des 100 abonnés, mais le succès peut engendrer des problèmes. En raison de la nature asynchrone de Node.js et des limites de simultanéité de l'API Twilio, vous pouvez rencontrer des erreurs.
Nous pourrions écrire le code pour mettre en file d'attente les messages à envoyer, ce qui crée une plus grande complexité dans notre application, ou nous pourrions piocher dans le sac des astuces de Twilio et en extraire une qui va nous faire gagner beaucoup de temps et réduire nos efforts.
L'astuce ici est Twilio Notify. Avec Notify, vous pouvez envoyer des centaines, voire des milliers de messages dans une seule requête API. Voyons comment.
Tout d'abord, vous devez créer vous-même un nouveau service Notify dans la console Twilio. Cela fait, vous devez le configurer avec le service de messagerie que vous avez créé à la dernière étape.
Saisissez le SID du service Notify et ajoutez-le à votre fichier .env
.
Il est temps d'écrire le code. Créez un fichier appelé 99flake.js
et ouvrez-le. Commencez par les mêmes 3 lignes à partir de multipack.js
.
Cette fois, nous allons utiliser notre service Notify :
Nous devons transformer nos numéros en format de liaison de Notify. Les liaisons sont normalement créées une seule fois et utilisées comme partie des segments lors de l'envoi de notifications par SMS, iOS, Android et d'autres canaux. Mais si nous voulons juste envoyer des messages immédiatement, nous pouvons créer les liaisons à la volée.
Pour ce faire, nous allons transformer chaque numéro en un objet JSON de type :{"binding_type":"sms", "address": NUMBER}
. Le code à utiliser se présente comme suit :
Twilio limite la taille d'une requête API à 1 Mo au total, ce qui est généralement suffisant pour l'envoi à environ 10 000 numéros. Si vous avez d'autres messages à envoyer, vous devrez diviser les requêtes.
Remarque : si vous envoyez à autant de numéros à la fois, vous voudrez peut-être ajouter plusieurs numéros ou un numéro court à votre groupe de numéros. Consultez les conseils de filtrage des opérateurs pour en savoir plus.
Utilisez le service pour créer une notification qui sera envoyée à chacune des liaisons :
Enregistrez le fichier et ajoutez cette ligne au fichier package.json
:
Exécutez npm run 99flake
et vous enverrez toutes vos notifications en utilisant la puissance combinée de Twilio Notify et de votre service de messagerie. Notify gère l'envoi des messages après votre appel d'API unique et le service de messagerie peut les distribuer sur les numéros de votre pool de numéros.
Des glaces pour tout le monde
Vous connaissez maintenant les différentes options dont vous disposez pour envoyer un message, quelques messages ou beaucoup de messages. Si vous devez les envoyer un par un, alors l'API normale suffit. Dès que vous avez besoin d'envoyer quelques messages, un service de messagerie peut aider à modifier l'échelle de cet envoi, et si vous avez des centaines ou des milliers de messages à envoyer, alors Notify vous couvre. Vous pouvez consulter le code de ce post sur GitHub.
Avez-vous d'autres questions sur l'envoi de SMS groupés avec Node.js ? Faites-le-moi savoir dans les commentaires, sur Twitter ou par e-mail à philnash@twilio.com.
Restez frais.
Articles associés
Ressources connexes
Twilio Docs
Des API aux SDK en passant par les exemples d'applications
Documentation de référence sur l'API, SDK, bibliothèques d'assistance, démarrages rapides et didacticiels pour votre langage et votre plateforme.
Centre de ressources
Les derniers ebooks, rapports de l'industrie et webinaires
Apprenez des experts en engagement client pour améliorer votre propre communication.
Ahoy
Le hub de la communauté des développeurs de Twilio
Meilleures pratiques, exemples de code et inspiration pour créer des expériences de communication et d'engagement numérique.