L'auteur de l'article raconte comment il a réussi à appliquer des compétences en programmation pour automatiser les processus de routine de son propre événement de mariage.Pour la plupart des gens, le 3 septembre 2016 était le samedi le plus courant, mais dans ma mémoire cette date restera pour toujours, car c'est ce jour-là que ma femme et moi avons célébré un mariage.

Lors de la planification d'un mariage, vous devez prendre en compte de nombreux points: la nourriture, la décoration et la décoration, les lampes de table (oui, séparées de la décoration), les fleurs, l'hébergement, le transport, les divertissements et le choix du lieu. En général, lors de la planification d'un mariage, vous êtes confronté à de nombreuses inconnues, mais j'étais sûr d'une chose: aucun mariage ne peut se passer de tout un tas de listes, de listes imbriquées qui ne se terminent pas jusqu'au bout. Plus les listes flottaient devant mes yeux, plus je commençais à réfléchir à la façon d'améliorer le processus de préparation. C'était douloureusement inefficace et tout le travail a été effectué manuellement. J'étais sûr que la technologie pouvait certainement aider à améliorer au moins certains points.
Vous serez peut-être surpris d'apprendre que l'invitation à un mariage coûte cher (plus de 380 livres par personne). Vous devez d'abord envoyer des invitations préliminaires avec une date et une brève notification, puis seulement - à part entière, avec une description plus détaillée de l'événement. Tout cela, d'ailleurs, est envoyé par courrier, ce qui signifie que c'est lent. Les tentatives pour «attraper» les invités et obtenir une réponse de leur part pour savoir s'ils veulent venir à la fête avec de la nourriture et des boissons gratuites (même si, semble-t-il, qui ne veut pas?!) Prennent beaucoup de temps. Et enfin, envoyer des invitations n'est pas respectueux de l'environnement, car les cartes papier sont une chose unique, elles oublient rapidement et deviennent inutiles pour tout le monde.
Mais revenons aux listes. Nous divisons les invités en plusieurs groupes:
- Ceux que vous aimeriez voir au festival
- Ceux qui ont répondu à la deuxième invitation en demandant une réponse
- Ceux qui ont accepté l'invitation
- Ceux qui ont accepté l'invitation et choisi la nourriture
Mais j'aime les listes: elles ont des exigences prédéfinies qui en font un excellent objet pour l'automatisation.
Message dans une bouteille
J'étais sûr que tous les invités potentiels, quel que soit leur âge, avaient un téléphone portable, ce qui signifiait que le moment était venu pour Twilio. Le code donné ici peut être ignoré en toute sécurité si vous le souhaitez, car il est toujours disponible dans le
référentiel GitHub correspondant.
Le SMS comme canal de communication répond parfaitement à mes besoins. Je pouvais mettre en place un envoi massif de messages, traiter rapidement et efficacement les réponses. En faisant les premières esquisses de travail du produit et en considérant les options de base de données, j'ai essayé de faire quelque chose de simple qui pourrait être facilement partagé et je ne voulais pas consacrer beaucoup de temps à l'apparence. En fin de compte, je suis tombé sur la bibliothèque gspread python, qui m'a permis de lire et d'écrire sur les
tables google . Ce n'était pas l'option la plus rapide, mais plutôt flexible, ce qui facilitait l'accès aux tableaux et la lecture des résultats.
Pour la première invite, j'ai
créé un tableau avec trois colonnes:
- Nom
- Numéro de téléphone
- Confirmation_status (Statut de confirmation)
- Statut des détails du contact
- Message_count (Le nombre de messages envoyés à l'invité a été utile à l'avenir)
Après avoir terminé la saisie des données de base, j'ai
parcouru la liste via
gspread , qui a envoyé un SMS à chaque invité possédant un numéro de mobile:
import json import time import gspread from oauth2client.client import SignedJwtAssertionCredentials from twilio.rest import TwilioRestClient
Et comme les SMS sont généralement un peu ennuyeux, j'ai ajouté du
Unicode pour le pimenter. Voici à quoi ressemblait le message pour les invités chanceux:

Ensuite, j'ai utilisé Flask comme serveur Web, fait ma demande d'URL pour Twilio Messaging pointer vers / messages et ajouté des vérifications if simples pour analyser les réponses:
@app.route("/messages", methods=['GET', 'POST']) def hello_guest(): if "yes" in body_strip: # confirmation_status wks_attendees.update_acell("F"+str(guest_confirmation_cell.row), 'Accepted') # « » resp.message(u"\u2665" + "Thanks for confirming, we'll be in touch!" + u"\u2665") # r , elif "no" in from_body.lower(): # « » wks_attendees.update_acell("F"+str(guest_confirmation_cell.row), 'Declined') # resp.message("Sorry to hear that, we still love you though!") else: # , resp.message("You sent a different keyword, we need a yes or a no, you sent: "+ from_body) return str(resp)


Le premier message a été envoyé à 8 h 37 le 19 février et la première confirmation a été reçue un peu plus tard à 8 h 40. À 9 h 38, j'avais déjà reçu 23 confirmations, soit 32% des réponses étaient dans ma poche! 2 jours après le début du publipostage, 58% des invités ont déjà confirmé leur participation. Malgré le succès évident, ma future épouse n'a pas encore été impressionnée à 100% par mon service SMS pour les invitations de mariage, et j'ai décidé d'ajouter des fonctionnalités supplémentaires à l'application.
Statistiques! Je pourrais créer une liste d'invités à jour et la fournir sur demande, en donnant à ma future mariée une rétroaction instantanée. Le code s'est avéré assez simple, car j'avais déjà configuré certains des compteurs les plus simples du tableau auparavant, et donc tout se résumait à obtenir le contenu des cellules individuelles et à les ajouter à SMS:
Exemple de SMS envoyé par ce code:

Cela peut ne pas être très beau, mais c'est très instructif.
Le fait que Lauren puisse désormais suivre les mises à jour automatiques de la liste des invités nous a évité bien des maux de tête. En conséquence, j'ai reçu son approbation pour l'intégration généralisée de SMS, et bientôt cet outil a été utilisé dans presque tous les processus où cela était possible. Certaines applications étaient évidentes, par exemple, l'envoi de notifications par SMS sur le lancement d'un site de mariage (réalisé, en passant, sur
Heroku ), ou l'utilisation de listes de cadeaux de mariage et de nombreuses autres solutions dont je suis fier à ce jour.
Fête glorieuse
Après avoir compilé la liste des invités et recueilli les réponses, il est venu à la leçon, qui est généralement reportée à plus tard - découvrir les préférences gustatives des invités. La première étape a été d'envoyer un autre SMS informant les clients de la nécessité de visiter le site Internet et de sélectionner les catégories de plats servis à l'aide du formulaire google. Le formulaire avait l'air assez ordinaire, mais il remplissait le même fichier dans lequel il y avait des données sur les visiteurs. Ainsi, nous avions maintenant à la fois un tableau des visiteurs qui acceptaient les invitations et un tableau qui remplissait le formulaire de sélection des aliments. Si nous parlions d'un outil d'automatisation ordinaire, je devrais attendre que les invités choisissent lentement leur vaisselle, cependant, mon mariage a eu lieu avec le soutien de Twillio, et cela signifie que je pouvais obtenir une réponse des invités avec un minimum d'effort.
Il a fallu vérifier deux tables au nom des convives et mettre à jour le statut des plats sélectionnés dès réception de nouvelles informations. Cela a nécessité quelques cloches et sifflets supplémentaires dans le code, mais dès que j'en ai fini avec eux, j'ai pu exécuter le script dès que nécessaire, en recevant un SMS avec les dernières informations:
import json import time import gspread from oauth2client.client import SignedJwtAssertionCredentials from twilio.rest import TwilioRestClient
Maintenant que j'avais une liste d'invités précise et une liste de plats constamment mise à jour, il était logique de rendre ces statistiques accessibles au public à l'aide de l'application principale. Pour cela, il a seulement fallu ajouter le contenu des cellules correspondantes à la réponse SMS:

Cette mesure s'est avérée très utile, car elle a permis à l'entreprise au service des vacances de prendre connaissance de nos progrès et a fourni des informations très pratiques à ceux qui n'avaient pas encore fait leur choix. Le concurrent suivant pour l'automatisation était le processus de réception des réponses des invités. Pour ce faire, il suffit de parcourir la liste, d'y trouver des "contrevenants" qui n'ont pas choisi leurs plats, et de leur envoyer des messages!
for num in range(2, 72):

Le grand jour approchait plus vite que nous ne pouvions l'imaginer. La seule chose que nous devions faire était d'envoyer le dernier SMS, rappelant aux clients les détails de base et la nécessité de s'armer d'un parapluie, ce qui aiderait à se protéger de l'été britannique typiquement pluvieux:

En conclusion
Organiser un mariage n'est jamais facile. À tout moment, il peut vous sembler que de nombreux aspects de l'événement sont hors de votre contrôle. L'automatisation m'a vraiment facilité la vie en fournissant un canal de communication direct avec les clients et d'innombrables outils pour suivre leurs réponses et leur rappeler tout besoin de décider et de répondre. Elle nous a aidés à prendre en main l'une des questions les plus fastidieuses accompagnant de tels événements, et nous a permis de gagner beaucoup de temps et de nous concentrer sur d'autres éléments importants d'un événement aussi important dans nos vies.
Créer des solutions évolutives pour des tâches complexes n'est jamais facile, et même l'une des versions finales de mon application pourrait à peine faire face aux tâches par endroits. Au départ, j'avais prévu de développer une solution plus complète, avec visualisation des progrès, intégration vocale, moins dépendante des scripts CLI, mais le temps a prévalu dans cette course. En général, je suis satisfait de la façon dont tout s'est passé. Il n'y a pas de systèmes de communication parfaits. Vous devez toujours utiliser la chaîne qui convient le mieux à votre public, que ce soit
SMS ,
Voice ,
Chat ,
Video ou
sémaphore .
Si vous voulez parler de l'automatisation du mariage, écrivez-moi sur
Twitter .
