Un script Python de 20 lignes qui souhaite aux parents bonjour tous les jours via WhatsApp

L'auteur du document, dont nous publions la traduction aujourd'hui, dit que les gens modernes, dont la vie est remplie de travail, oublient souvent d'écrire des messages à leurs amis et parents. Lui, en regardant comment ses parents envoient chaque matin des citations inspirantes et des conseils de santé utiles à WhatsApp, a décidé que le moment était venu de leur rendre la pareille.

Dans ce guide, nous allons écrire un simple script Python conçu pour envoyer des messages WhatsApp. Au cours du travail, nous utiliserons le paquet Twilio Python. Pour organiser le lancement quotidien du script à un moment donné, nous allons placer le code dans le cloud.



Une approche pour résoudre ce problème consiste à utiliser le package Selenium Python et la version Web de WhatsApp au lieu du service Twilio, qui, après avoir épuisé les possibilités de l'offre gratuite, doit être payé. Mais comme travailler avec la version Web de WhatsApp nécessite une analyse périodique du code QR à l'aide d'un téléphone mobile, cela ne fonctionnera pas pour automatiser l'envoi de messages avec cette approche.

Le travail sur le projet comprendra trois étapes:

  1. Configuration de Twilio.
  2. Apprentissage et modification du code.
  3. Déployer un projet dans le cloud et configurer un déclencheur.

Étape 1. Configuration de Twilio


Créez un compte gratuit sur le site Twilio , confirmez votre adresse e-mail et votre numéro de téléphone.


Enregistrement de compte Twilio

De plus, dans le cadre de l'offre gratuite Twilio, vous devez utiliser le sandbox WhatsApp (WhatsApp Sandbox). Cela signifie que vous ne pouvez pas utiliser votre propre numéro de téléphone et que vous devez suivre la procédure pour émettre l'autorisation de recevoir des messages WhatsApp.

Vous pouvez utiliser votre propre numéro de messagerie après que WhatsApp ait autorisé Twilio à utiliser votre numéro. Pour obtenir la permission, vous devez remplir le formulaire. Vous pouvez apprendre des supports de Twilio que bien que Twilio fonctionne directement avec WhatsApp, il peut prendre un certain temps pour obtenir l'autorisation. En outre, il évoque les possibilités limitées de délivrance de permis. En conséquence, beaucoup doivent utiliser le bac à sable Twilio WhatsApp.

Tout cela ne provoque pas beaucoup de joie, mais ce qui est à notre disposition dans le cadre de l'offre gratuite Twilio nous permet de résoudre notre problème. De plus, il s'avère que le sandbox WhatsApp est toujours la seule option largement disponible.

Vous devez maintenant connecter le téléphone du destinataire des messages au bac à sable, après quoi vous pouvez envoyer des messages à ce téléphone. Pour savoir comment procéder, vous devez vous rendre dans la section console Twilio, dédiée à WhatsApp. En particulier, il est proposé ici d'envoyer un message WhatsApp avec le texte spécifié à un numéro spécifique.


Page de la console Twilio avec des instructions pour connecter un téléphone auquel vous pouvez envoyer des messages


Demande de connexion envoyée depuis le téléphone

Enregistrez le numéro WhatsApp qui vous a été attribué dans vos contacts. On peut lui attribuer n'importe quel nom. Afin de ne pas compliquer ma vie, j'ai appelé ce contact Twilio Sandbox, puis je lui ai envoyé un message depuis le téléphone de mon père (cela peut être vu dans la figure précédente). Cette procédure n'est effectuée qu'une seule fois.

Vous devez maintenant accéder à la console Twilio et obtenir le SID et le jeton d'authentification pour votre compte. Ces données aideront Twilio à vous reconnaître lorsque vous travaillez par programme avec le service.

Étape 2. Apprentissage et modification du code


Téléchargez ce référentiel GitHub et décompressez l'archive.


Contenu du fichier zip

Vous trouverez ici le fichier source ( whatsapp_messaging.py ) et le package de déploiement de projet ( aws_lambda_deploy.zip ).

Voici le code du script:

 from twilio.rest import Client def msg_mom_and_dad(event=None, context=None):    #    SID   ,     Twilio    twilio_sid = 'AC84c9f1602d7fb6af4eda5b0c39a03b37'    auth_token = '4a2021b28f1aa606d9c6945d3c248ebd'    whatsapp_client = Client(twilio_sid, auth_token)    #        ,    #         contact_directory = {'daddy':'+919624666836'}    for key, value in contact_directory.items():        msg_loved_ones = whatsapp_client.messages.create(                body = 'good morning {} !'.format(key),                from_= 'whatsapp:+14155238886',                to='whatsapp:' + value,            )        print(msg_loved_ones.sid) 

Nous allons maintenant analyser ce code. Ici, pour plus de commodité, une capture d'écran avec des lignes numérotées.

Code de fichier Whatsapp_messaging.py avec des lignes numérotées

  • Ligne 1. Importez le client pour travailler avec Twilio REST-API.
  • Ligne 3. Création de la fonction msg_mom_and_dad . Nous transmettrons cette fonction à AWS. Il sera appelé quotidiennement à l'heure définie.
  • Lignes 6-7. Ici, vous devez remplacer les sid et auth_token existants dans le code par les vôtres (nous avons parlé de les recevoir à la fin de la section précédente).
  • Ligne 9. Créez un objet client Twilio à l'aide des informations d'identification.
  • Ligne 13. Création d'un dictionnaire. Ici, le nom du destinataire du message est utilisé comme clé et son numéro de téléphone comme valeur. Vous pouvez ajouter des informations de contact supplémentaires à ce dictionnaire.
  • Ligne 15. La boucle for , dans laquelle le dictionnaire est parcouru (jusqu'à présent, il n'y a qu'une seule entrée). Dans le body vous devez spécifier le texte du message. J'ai créé un message simple avec le texte «Bonjour», suivi d'une valeur tirée de la clé de l'élément de dictionnaire actuel. Dans mon cas, cela conduit à la formation du message «bonjour papa!». from_ indique le numéro WhatsApp que nous avons reçu précédemment. Pour noter le numéro du destinataire du message - celui à partir duquel ils ont précédemment envoyé une demande de connexion au sandbox Twilio WhatsApp.
  • Ligne 23. Ici, afin de vérifier l'état du message, nous affichons son SID. Nous n'utiliserons pas ces informations.

Pour utiliser ce code pour envoyer des messages, vous devez modifier les éléments suivants:

  • twilio_sid
    auth_token
    contact_directory
    de_
    corps (c'est facultatif)

Après avoir apporté des modifications au code, enregistrez le fichier. aws_lambda_deploy.zip archive aws_lambda_deploy.zip , remplacez le fichier whatsapp_messaging.py par votre fichier du même nom, puis remettez tout dans l'archive .zip. Le sens de ces actions est d'inclure dans le code vos informations d'identification et des informations sur ceux à qui vous souhaitez envoyer des messages. Tout le reste du package, conçu pour un déploiement sur AWS, est resté inchangé. Travaillons maintenant avec AWS.

Étape 3. Déployez le projet sur AWS et configurez le déclencheur


Le code est prêt à s'exécuter et à envoyer des messages WhatsApp. Si vous êtes intéressé par le rôle que jouent les autres fichiers de l'archive aws_lambda_deploy.zip dans le projet, sachez que parmi ces fichiers se trouvent le package Twilio et toutes les autres dépendances du projet. Nous avons besoin de tout cela parce que nous prévoyons d'utiliser les fonctions AWS Lambda dans un environnement Python qui n'a pas de package Twilio. Et pourquoi ne pip install twilio nous pas cela en exécutant simplement la commande pip install twilio pour installer le bon package? Le fait est qu'ici nous n'avons pas de serveur.

Pour ce faire, nous utilisons AWS Lambda - un environnement informatique sans serveur dans lequel vous pouvez placer des fragments de code dont l'appel, conformément aux besoins de l'utilisateur, est déclenché par divers événements et déclencheurs. Notre code ne devrait fonctionner qu'une fois par jour, donc l'utilisation de quelque chose comme un serveur EC2 sur AWS, fonctionnant 24 heures sur 24, sera un gaspillage de ressources informatiques et d'argent. Notre fonction Lambda sera appelée quotidiennement à une heure précise à la demande d'un déclencheur, et sa mise en œuvre prendra très peu de temps.

Commencez à créer une fonction Lambda

Connectez-vous à votre compte AWS. Après cela, allez dans Services → Compute → Lambda → Create a function .


Écran de création de fonction Lambda

Donnons un nom à la fonction.

Comme environnement dans lequel la fonction sera exécutée, nous choisirons Python 3.6. Nous n'avons pas besoin de nous connecter à d'autres services AWS. Par conséquent, nous sommes satisfaits du niveau d'autorisation spécifié par l'option Create a new role with basic Lambda permissions .

Après avoir terminé les paramètres, cliquez simplement sur le bouton Create function . Maintenant, nous serons sur le panneau de commande principal.


Panneau de contrôle

Ici, dans la section Function code , vous devez spécifier un Handler avec lequel le système peut exécuter notre code. Dans notre cas, dans le champ whatsapp_messaging. msg_mom_and_dad , écrivez whatsapp_messaging. msg_mom_and_dad whatsapp_messaging. msg_mom_and_dad , en spécifiant le nom du fichier avec le code et la fonction que nous voulons appeler.

Dans le champ Function package , vous devez charger notre fichier .zip, c'est-à-dire le fichier que nous avons créé à l'étape précédente.

Maintenant, le code est prêt à fonctionner. Vous pouvez vérifier si la fonction fonctionne et envoyer des messages en cliquant sur le bouton Test .

La dernière étape de notre travail consistera à mettre en place un déclencheur qui appellera la fonction quotidiennement à une heure donnée. Suivez le chemin Add trigger → CloudWatch Events .


Paramètre de déclenchement

Nous devons créer une nouvelle règle ( Rule ). Il doit attribuer un nom ( Rule name ). Si vous le souhaitez, vous pouvez y ajouter une description ( Rule description ).

Spécifiez le type de règle (type de Rule type ) comme Schedule expression .

Le temps d'appel de la fonction est défini à l'aide de la construction cron(30 1 * * ? *) . Analysons cette construction:

  • 30 1 signifie l'heure UTC à 1h30 du matin. Il est 7h du matin dans mon heure IST.
  • Les deux caractères suivants, * * , indiquent le jour du mois et le mois.
  • Les deux personnages suivants ? * ? * , permet de spécifier le jour de la semaine et l'année. Cette conception signifie que la fonction sera appelée quotidiennement, sans restrictions sur les années et les mois.

Ici, vous pouvez apprendre à configurer vos propres tâches cron.

Une fois la configuration du déclencheur terminée, vérifiez si la Enable trigger est activée, ce qui active le déclencheur. Maintenant, il ne reste plus qu'à cliquer sur le bouton Add et le déclencheur sera créé.


Informations sur le déclencheur


Détails de la fonction Lambda

Sur le panneau de commande de la fonction Lambda, vous pouvez voir que l'entité CloudWatch Events est attachée à la fonction et que la fonction peut être appelée lorsque le déclencheur correspondant se déclenche.

Résumé



Message envoyé par le script Python

Nous avons terminé le travail sur le projet. Vous pouvez maintenant changer le nom du contact Twilio Sandbox en votre nom sur le téléphone du destinataire du message dans les contacts WhatsApp (je l'ai changé en Fils). Notre système vous permet également de communiquer avec le destinataire des messages du panneau de contrôle Twilio.

Chers lecteurs! Utilisez-vous Twilio dans vos projets?

Source: https://habr.com/ru/post/fr463933/


All Articles