Ein 20-zeiliges Python-Skript, das Eltern jeden Tag über WhatsApp einen guten Morgen wünscht

Der Autor des Materials, dessen Übersetzung wir heute veröffentlichen, sagt, dass moderne Menschen, deren Leben voller Arbeit ist, oft vergessen, Nachrichten an ihre Freunde und Verwandten zu schreiben. Als er sah, wie seine Eltern jeden Morgen inspirierende Zitate und nützliche Gesundheitstipps an WhatsApp schickten, entschied er, dass es Zeit war, sich zu revanchieren.

In diesem Handbuch schreiben wir ein einfaches Python-Skript zum Senden von WhatsApp-Nachrichten. Im Laufe der Arbeit werden wir das Twilio Python-Paket verwenden. Um den täglichen Start des Skripts zu einem bestimmten Zeitpunkt zu organisieren, platzieren wir den Code in der Cloud.



Ein Ansatz zur Lösung dieses Problems besteht darin, das Selenium Python-Paket und die WhatsApp-Webversion anstelle des Twilio-Dienstes zu verwenden, für den nach Ausschöpfung der Möglichkeiten des kostenlosen Angebots bezahlt werden muss. Da für die Arbeit mit der WhatsApp-Webversion der QR-Code regelmäßig mit einem Mobiltelefon gescannt werden muss, kann das Senden von Nachrichten mit diesem Ansatz nicht automatisiert werden.

Die Arbeit an dem Projekt besteht aus drei Schritten:

  1. Twilio-Setup.
  2. Code lernen und ändern.
  3. Bereitstellen eines Projekts in der Cloud und Einrichten eines Triggers.

Schritt 1. Twilio Setup


Erstellen Sie ein kostenloses Konto auf der Twilio- Website, bestätigen Sie Ihre E-Mail-Adresse und Telefonnummer.


Registrierung des Twilio-Kontos

Darüber hinaus müssen Sie im Rahmen des kostenlosen Twilio-Angebots die WhatsApp-Sandbox (WhatsApp-Sandbox) verwenden. Dies bedeutet, dass Sie Ihre eigene Telefonnummer nicht verwenden können und dass Sie das Verfahren zum Erteilen der Berechtigung zum Empfangen von WhatsApp-Nachrichten durchlaufen müssen.

Sie können Ihre eigene Nachrichtennummer verwenden, nachdem WhatsApp Twilio die Verwendung Ihrer Nummer ermöglicht hat. Um die Erlaubnis zu erhalten, müssen Sie das Formular ausfüllen. Aus den Support- Materialien von Twilio können Sie lernen , dass Twilio zwar direkt mit WhatsApp zusammenarbeitet, es jedoch einige Zeit dauern kann, bis die Genehmigung erteilt wird. Darüber hinaus wird über den begrenzten Spielraum für die Erteilung von Genehmigungen gesprochen. Daher müssen viele die Twilio WhatsApp-Sandbox verwenden.

All dies macht nicht viel Freude, aber was uns im Rahmen des kostenlosen Twilio-Angebots zur Verfügung steht, ermöglicht es uns, unser Problem zu lösen. Darüber hinaus stellt sich heraus, dass die WhatsApp-Sandbox immer noch die einzige weit verbreitete Option ist.

Jetzt müssen Sie das Telefon des Empfängers der Nachrichten mit der Sandbox verbinden. Anschließend können Sie Nachrichten an dieses Telefon senden. Um zu erfahren, wie das geht, müssen Sie zum Abschnitt Twilio-Konsole gehen, der WhatsApp gewidmet ist. Insbesondere wird hier vorgeschlagen, eine WhatsApp-Nachricht mit dem angegebenen Text an eine bestimmte Nummer zu senden.


Twilio-Konsolenseite mit Anweisungen zum Anschließen eines Telefons, an das Sie Nachrichten senden können


Verbindungsanfrage vom Telefon gesendet

Speichern Sie die Ihnen erteilte WhatsApp-Nummer in Ihren Kontakten. Ihm kann ein beliebiger Name zugewiesen werden. Um mein Leben nicht zu verkomplizieren, rief ich diesen Kontakt Twilio Sandbox an und schickte ihm dann eine Nachricht vom Telefon meines Vaters (dies ist in der vorherigen Abbildung zu sehen). Dieser Vorgang wird nur einmal durchgeführt.

Jetzt müssen Sie zur Twilio- Konsole gehen und die SID und das Authentifizierungstoken für Ihr Konto abrufen. Diese Daten helfen Twilio, Sie zu erkennen, wenn Sie programmgesteuert mit dem Dienst arbeiten.

Schritt 2. Lernen und Ändern des Codes


Laden Sie dieses GitHub-Repository herunter und entpacken Sie das Archiv.


Inhalt der Zip-Datei

Hier finden Sie die Quelldatei ( whatsapp_messaging.py ) und das Projektbereitstellungspaket ( aws_lambda_deploy.zip ).

Hier ist der Skriptcode:

 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) 

Jetzt werden wir diesen Code analysieren. Hier der Einfachheit halber ein Screenshot mit nummerierten Zeilen.

Whatsapp_messaging.py-Dateicode mit nummerierten Zeilen

  • Zeile 1. Importieren Sie den Client für die Arbeit mit der Twilio REST-API.
  • Zeile 3. Erstellen der Funktion msg_mom_and_dad . Wir werden diese Funktion an AWS übergeben. Es wird täglich zur festgelegten Zeit aufgerufen.
  • Zeilen 6-7. Hier müssen Sie das vorhandene sid und auth_token im Code durch Ihr eigenes ersetzen (wir haben am Ende des vorherigen Abschnitts darüber gesprochen, sie zu erhalten).
  • Zeile 9. Erstellen Sie ein Twilio-Clientobjekt mit Anmeldeinformationen.
  • Zeile 13. Erstellen eines Wörterbuchs. Hier wird der Name des Nachrichtenempfängers als Schlüssel und seine Telefonnummer als Wert verwendet. Sie können diesem Wörterbuch zusätzliche Kontaktinformationen hinzufügen.
  • Zeile 15. Die for Schleife, in der das Wörterbuch durchlaufen wird (bisher enthält es nur einen Eintrag). Im body Sie den Nachrichtentext angeben. Ich habe eine einfache Nachricht mit dem Text „Guten Morgen“ erstellt, gefolgt von einem Wert aus dem Schlüssel des aktuellen Wörterbuchelements. In meinem Fall führt dies zur Bildung der Nachricht „Guten Morgen Papa!“. from_ gibt die WhatsApp-Nummer an, die wir zuvor erhalten haben. Notieren Sie sich die Nummer des Empfängers der Nachricht, von dem zuvor eine Anforderung zum Herstellen einer Verbindung mit der WhatsApp-Sandbox Twilio gesendet wurde.
  • Zeile 23. Um den Status der Nachricht zu überprüfen, zeigen wir hier ihre SID an. Wir werden diese Informationen nicht verwenden.

Um diesen Code zum Senden von Nachrichten zu verwenden, müssen Sie Folgendes ändern:

  • twilio_sid
    auth_token
    Kontaktverzeichnis
    from_
    Körper (dies ist optional)

Speichern Sie die Datei, nachdem Sie den Code geändert haben. Entpacken Sie dann das Archiv aws_lambda_deploy.zip , ersetzen Sie die Datei whatsapp_messaging.py durch Ihre Datei mit demselben Namen und packen Sie alles zurück in das ZIP-Archiv. Die Bedeutung dieser Aktionen besteht darin, Ihre Anmeldeinformationen und Informationen zu denen, an die Sie Nachrichten senden möchten, in den Code aufzunehmen. Alles andere im Paket, das für die Bereitstellung unter AWS konzipiert wurde, ist unverändert geblieben. Jetzt arbeiten wir mit AWS.

Schritt 3. Stellen Sie das Projekt in AWS bereit und konfigurieren Sie den Trigger


Der Code kann ausgeführt und WhatsApp-Nachrichten gesendet werden. Wenn Sie daran interessiert sind, welche Rolle andere Dateien aus dem Archiv aws_lambda_deploy.zip im Projekt spielen, beachten Sie, dass zu diesen Dateien das Twilio-Paket und alle anderen Projektabhängigkeiten gehören. Wir brauchen all dies, weil wir planen, AWS Lambda-Funktionen in einer Python-Umgebung zu verwenden, die kein Twilio-Paket enthält. Und warum beheben wir das nicht, indem wir einfach den Befehl pip install twilio , um das richtige Paket zu installieren? Tatsache ist, dass wir hier keinen Server haben.

Zu diesem Zweck verwenden wir AWS Lambda - eine serverlose Computerumgebung, in der Sie Codefragmente platzieren können, deren Aufruf entsprechend den Anforderungen des Benutzers durch verschiedene Ereignisse und Auslöser ausgelöst wird. Unser Code soll nur einmal am Tag ausgeführt werden. Die Verwendung eines EC2-Servers unter AWS, der rund um die Uhr funktioniert, ist eine Verschwendung von Rechenressourcen und Geld. Unsere Lambda-Funktion wird auf Anfrage eines Triggers täglich zu einem bestimmten Zeitpunkt aufgerufen, und ihre Implementierung nimmt nur sehr wenig Zeit in Anspruch.

Erstellen Sie eine Lambda-Funktion

Melden Sie sich bei Ihrem AWS-Konto an. Gehen Sie danach zu Services → Compute → Lambda → Create a function .


Bildschirm zur Erstellung der Lambda-Funktion

Geben wir der Funktion einen Namen.

Als Umgebung, in der die Funktion ausgeführt wird, wählen wir Python 3.6. Wir müssen keine Verbindung zu anderen AWS-Diensten herstellen. Daher sind wir mit der Berechtigungsstufe zufrieden, die in der Option Create a new role with basic Lambda permissions angegeben ist.

Klicken Create function nach Abschluss der Einstellungen einfach auf die Schaltfläche Create function . Jetzt befinden wir uns auf dem Hauptbedienfeld.


Schalttafel

Hier müssen Sie im Abschnitt Function code einen Handler angeben, mit dem das System unseren Code ausführen kann. In unserem Fall schreiben whatsapp_messaging. msg_mom_and_dad in das Feld Handler whatsapp_messaging. msg_mom_and_dad whatsapp_messaging. msg_mom_and_dad , wobei der Name der Datei mit dem Code und der Funktion angegeben wird, die aufgerufen werden soll.

Im Feld Function package müssen Sie unsere ZIP-Datei laden, dh die Datei, die wir im vorherigen Schritt erstellt haben.

Jetzt kann der Code ausgeführt werden. Sie können überprüfen, ob die Funktion funktioniert und Nachrichten senden, indem Sie auf die Schaltfläche Test klicken.

Der letzte Schritt unserer Arbeit besteht darin, einen Trigger einzurichten, der die Funktion zu einem bestimmten Zeitpunkt täglich aufruft. Folgen Sie dem Pfad Add trigger → CloudWatch Events .


Triggereinstellung

Wir müssen eine neue Regel ( Rule ) erstellen. Er muss einen Namen vergeben ( Rule name ). Falls gewünscht, können Sie eine Beschreibung hinzufügen ( Rule description ).

Geben Sie den Regeltyp ( Rule type ) als Schedule expression .

Die Funktionsaufrufzeit wird mit dem cron(30 1 * * ? *) Konstrukt cron(30 1 * * ? *) . Lassen Sie uns diese Konstruktion analysieren:

  • 30 1 bedeutet UTC-Zeit 1:30 Uhr morgens. Es ist 7 Uhr morgens in meiner IST-Zeit.
  • Die folgenden zwei Zeichen * * geben den Tag des Monats und des Monats an.
  • Die nächsten beiden Zeichen ? * ? * , können Sie den Wochentag und das Jahr angeben. Dieses Design bedeutet, dass die Funktion täglich aufgerufen wird, ohne Einschränkungen für Jahre und Monate.

Hier erfahren Sie, wie Sie Ihre eigenen Cron-Jobs einrichten.

Überprüfen Sie nach Abschluss des Trigger-Setups, ob das Kontrollkästchen Enable trigger aktivieren aktiviert ist, wodurch der Trigger aktiviert wird. Jetzt müssen Sie nur noch auf die Schaltfläche Add klicken und der Trigger wird erstellt.


Informationen auslösen


Details zur Lambda-Funktion

Auf dem Bedienfeld der Lambda-Funktion können Sie sehen, dass die Entität CloudWatch Events an die Funktion angehängt ist und dass die Funktion aufgerufen werden kann, wenn der entsprechende Trigger ausgelöst wird.

Zusammenfassung



Vom Python-Skript gesendete Nachricht

Wir haben die Arbeit an dem Projekt abgeschlossen. Jetzt können Sie den Namen des Twilio Sandbox-Kontakts auf dem Telefon des Nachrichtenempfängers in WhatsApp-Kontakten in Ihren eigenen ändern (ich habe ihn in Son geändert). Mit unserem System können Sie auch mit dem Empfänger von Nachrichten über das Twilio-Bedienfeld kommunizieren.

Liebe Leser! Verwenden Sie Twilio in Ihren Projekten?

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


All Articles