Planen einer Nachricht in Twilio Studio
Lesezeit: 10 Minuten
Im August 2022 haben wir Twilio Message Scheduling zur allgemeinen Verfügbarkeit veröffentlicht! Diese Funktion bietet Ihnen die Möglichkeit, eine SMS-, MMS- oder WhatsApp-Nachricht für einen bestimmten Zeitpunkt in der Zukunft zu planen.
Sie können kostenlos Nachrichten planen, indem Sie Ihrer API-Anfrage einen der folgenden zusätzlichen Parameter beifügen:
ScheduleType
: Gibt an, ob Sie eine Nachricht planen möchtenSendAt
: Gibt an, wann Twilio eine Nachricht sendet
Zum Zeitpunkt der Veröffentlichung dieses Blogbeitrags ist in Twilio Studio, unserer Low-Code- bzw. No-Code-Plattform zur Anwendungsentwicklung, noch keine Funktion zum Planen von Nachrichten integriert. In diesem Blogbeitrag erfahren Sie, dass es dafür auch eine alternative Methode mithilfe von Studio- und etwas Python-Code gibt.
Dieser Blogbeitrag ist wie folgt aufgebaut (Sie können an die gewünschte Stelle springen):
- Python 3.7 oder höher auf Ihrem Computer installiert
- ngrok auf Ihrem Computer installiert. Dabei handelt es sich um ein nützliches Tool zum Verbinden Ihres lokalen Servers mit einer öffentlichen URL. Sie können ein kostenloses Konto erstellen und ngrok herunterladen.
- Zugang zu einem Telefon, auf dem Sie SMS-Nachrichten erstellen und empfangen können
Es juckt Ihnen in den Fingern, Twilio zu testen? Dann registrieren Sie sich für ein kostenloses Twilio-Konto. Die Registrierung ist schnell erledigt, eine Kreditkarte benötigen Sie nicht.
Als Sicherheitsmaßnahme wird bei der Registrierung Ihre persönliche Telefonnummer verifiziert.
Um Nachrichten über Twilio zu versenden, kaufen Sie eine Twilio-Telefonnummer, also eine über Twilio erworbene Telefonnummer, falls Sie das noch nicht getan haben.
Melden Sie sich nach der Registrierung eines Kontos bei der Twilio-Konsole an. Navigieren Sie dann zur Seite Telefonnummern. Klicken Sie auf Buy a Number (Nummer kaufen), um eine Twilio-Telefonnummer zu kaufen.
Bitte beachten Sie, dass in Deutschland und vielen anderen Ländern ein Regulatory Bundle benötigt wird, um eine Telefonnummer zu erwerben. Lesen Sie diesen Artikel, um mehr darüber zu erfahren: Wie kaufe ich eine Twilio-Rufnummer mit Regulatory Bundles.
Um Message Scheduling nutzen zu können, müssen Sie Ihre Twilio-Nummer mit einem Messaging-Dienst konfigurieren.
Rufen Sie in der Twilio-Konsole die Seite „Messaging Services“ (Messaging-Dienste) auf und klicken Sie auf die Schaltfläche Create Messaging Service (Messaging-Dienst erstellen). Befolgen Sie dann die weiteren Anweisungen.
Geben Sie auf dem nächsten Bildschirm einen leicht verständlichen Namen ein, zum Beispiel: „Nachricht-planen“. Klicken Sie dann auf die Schaltfläche Create Messaging Service (Messaging-Dienst erstellen).
Klicken Sie auf die Schaltfläche Add Senders (Absender hinzufügen), um diesem Messaging-Dienst Ihre Twilio-Telefonnummer hinzuzufügen.
Wählen Sie im Drop-down-Menü Sender Type (Art von Absender) Phone Number (Telefonnummer) aus und klicken Sie auf Continue (Weiter).
Wählen Sie Ihre Twilio-Telefonnummer aus, indem Sie das Kontrollkästchen neben der Nummer aktivieren, die Sie als Absender verwenden möchten. Klicken Sie dann auf die Schaltfläche Add Phone Numbers (Telefonnummern hinzufügen).
Oben rechts auf dem Bildschirm sollte nun eine Bestätigungsbenachrichtigung angezeigt werden. Diese lautet: „Numbers {YOUR-NUMBER} were successfully assigned to the service“ (Nummern {IHRE-NUMMER} wurden dem Dienst erfolgreich hinzugefügt“).
Klicken Sie zum Fortfahren auf die Schaltfläche Step 3: Set up integration (Schritt 3: Integration einrichten).
In diesem Schritt können Sie die Standardeinstellungen festlegen. Klicken Sie anschließend auf Step 4: Add compliance info (Schritt 4: Compliance-Info hinzufügen).
Klicken Sie dann auf die Schaltfläche Complete Messaging Service Setup (Einrichtung des Messaging-Diensts beenden), um die Erstellung des Messaging-Diensts abzuschließen.
Sie können Ihren Messaging-Dienst testen, indem Sie auf die Schaltfläche Try sending a message (Testnachricht senden) klicken.
Geben Sie dann im selben Bildschirm die folgenden Informationen ein:
- To phone number (An-Telefonnummer): Telefonnummer, an die die Nachricht gesendet werden soll
- Wählen Sie im Drop-down-Menü From (Von) Messaging Service (Messaging-Dienst) aus.
- Wählen Sie den von Ihnen erstellten Messaging-Dienst aus.
- Geben Sie in das Feld Body (Text) Ihre Nachricht ein und klicken Sie auf die Schaltfläche Send test SMS (Test-SMS senden).
Wenn der Vorgang erfolgreich war, erhalten Sie eine SMS an Ihre Testnummer. Außerdem sehen Sie in der Konsole eine Meldung wie diese:
Nachdem Sie einen Messaging-Dienst erstellt haben, sollten Sie sich die entsprechende SID notieren. Diese finden Sie in der Liste der Messaging-Dienste. Sie sollte ungefähr wie folgt aussehen: MGXXXXXXXXXXX
Nachdem Sie Ihren Messaging-Dienst erfolgreich eingerichtet haben, können Sie mit der entsprechenden ID in diesem Schritt ein Projekt erstellen.
Öffnen Sie ein Terminalfenster und erstellen Sie ein leeres Projektverzeichnis namens twilio-schedule-message:
Gehen Sie dann zu diesem Verzeichnis, in dem sich Ihr Code befinden wird.
Für dieses Tutorial wird Python-Code verwendet. Erstellen Sie dafür eine virtuelle Umgebung:
Aktivieren Sie Ihre virtuelle Umgebung:
Installieren Sie dann mit dem Paketmanager pip die erforderlichen Abhängigkeiten in Ihrer virtuellen Umgebung:
Sobald Ihre lokale Umgebung eingerichtet ist, können Sie die Umgebungsvariablen konfigurieren. So bleiben Ihre Anmeldeinformationen geheim. Wenn Sie mit sensiblen Daten wie API-Schlüsseln und Passwörtern arbeiten, müssen Sie einen ausreichenden Schutz dieser Daten vor Fremdzugriff sicherstellen.
Erstellen Sie im Stammverzeichnis des Projekts (twilio-schedule-message/) eine .env-Datei, in der Sie Ihre API-Schlüssel speichern.
Erstellen Sie in der .env-Datei folgende Umgebungsvariablen:
Ersetzen Sie Platzhalter durch die Account-SID und den Auth-token, die zu Ihrem Twilio-Konto gehören. Diese Informationen finden Sie auf der Startseite Ihrer Twilio-Konsole unter Account Info (Kontoinformationen).
Fügen Sie außerdem die Messaging-Dienst-SID Ihres zuvor erstellten Messaging-Diensts ein. Diese Angabe finden Sie in der Liste der Messaging-Services.
Wenn Sie diesen Code in ein Git-Repository schreiben, achten Sie darauf, die .env-Datei zu .gitignore hinzuzufügen, damit diese Anmeldeinformationen geschützt sind, d. h. echo ".env" >> .gitignore
In diesem Schritt interagieren Sie mit der Twilio SMS-API, um eine geplante Nachricht zu erstellen.
Den zu diesem Blogeintrag gehörenden Code finden Sie in diesem GitHub-Repository.
Erstellen Sie in Ihrem Projektverzeichnis eine Datei namens planer.py und kopieren Sie den folgenden Code in das Verzeichnis:
Hier ist eine Übersicht über den Code in planer.py:
- Zeilen 1 bis 5 sind Modulimporte, deren Funktionalität genutzt wird.
- Zeilen 1 und 2 ermöglichen den Zugriff auf Betriebssystem- und Datumsfunktionen.
- Zeilen 3 und 4 ermöglichen den Zugriff auf Funktionen innerhalb der Twilio-API.
- Zeile 5 ermöglicht den Zugriff auf Umgebungsvariablen aus der .env-Datei.
- Zeile 7 liest die Umgebungsvariablen aus der .env-Datei.
- Zeilen 9 und 10 weisen Variablen aus den Werten Ihrer Twilio-Anmeldeinformationen zu.
- Zeile 12 erstellt mit Ihren Twilio-Anmeldeinformationen ein Client-Objekt.
- Zeilen 16 bis 29 legen eine Funktion fest, die mithilfe der Twilio-API eine geplante Nachricht versendet.
- Zeile 20 enthält den Parameter
messaging_service_sid
, der auf die Umgebungsvariable Ihrer Messaging-Dienst-SID eingestellt ist. Diese gibt an, über welchen Messaging-Dienst die Nachricht gesendet wird. - Zeile 21
to
enthält den Parameter , der als Nachrichtenempfänger:in verwendet wird.IHRE_NUMMER
müssen Sie durch die Telefonnummer der Person ersetzen, die die Nachricht erhalten soll. - Zeile 22 enthält den Parameter
body
, der den Nachrichtentext festlegt. - Zeile 23 enthält den Parameter
schedule_type
, der angibt, dass Sie eine Nachricht planen möchten.fixed
bedeutet, dass die Nachricht zu einem fixen Zeitpunkt geplant ist. - Zeile 24 enthält den Parameter
send_at
, der angibt zu welcher Uhrzeit Twilio die Nachricht versendet. Dieser Parameter muss im ISO 8601-Format angegeben werden. In diesem Beispiel soll die Nachricht am 3. März 2023 um 5:55 Uhr gesendet werden.
- Zeile 20 enthält den Parameter
- Zeile 31 ruft die Funktion
schedule_message()
auf und versendet eine Textnachricht.
Führen Sie die Datei planer.py mit dem folgenden Befehl in Ihrem Terminalfenster aus, um die Nachricht zu testen:
Ihre Anwendung ist nun dazu in der Lage, eine geplante Nachricht zu einem festgelegten Zeitpunkt in der Zukunft zu versenden. Doch durch Bearbeiten der Datei planer.py können Sie die Funktion schedule_message()
so einstellen, dass dynamische Parameter akzeptiert werden. So müssen Werte nicht fest in die Funktion codiert werden, sondern können zur Ausführungszeit bereitgestellt werden. So arbeiten Sie flexibler. Hier sehen Sie die Änderungen, die an der Datei planer.py vorgenommen wurden:
Im Folgenden sind die an planer.py vorgenommenen Änderungen aufgelistet:
- Zeile 3 gewährt Zugriff zum Bearbeiten von Datum und Uhrzeit.
- Zeile 18 enthält die Funktion
schedule_message()
, die nun zwei Parameter akzeptiert:minutes
undbody
. Mit dem Parameterminutes
können Sie angeben, wie viele Minuten im Voraus Sie eine Nachricht planen möchten. Mit dem Parameterbody
können Sie den Text einer Textnachricht einfügen. - Zeile 24 enthält den Parameter
body
, der eine Nachricht in Form eines Parameters aufnimmt. - Zeile 26 enthält den Parameter
send_at
, der eine neue Funktion namensminutes_from_now()
aufruft, die ein Datum/Uhrzeit-Objekt zurückgibt. - Zeilen 33 bis 37 definieren eine Funktion, die auf Basis des Eingabeparameters ein Datum/Uhrzeit-Objekt zurückgibt.
- Zeilen 34 bis 35 geben ein Datum/Uhrzeit-Objekt zurück, wenn der Eingabeparameter innerhalb von 15 Minuten bis 7 Tage in der Zukunft liegt.
- Zeile 40 löst die Funktion
schedule_message()
aus und plant 16 Minuten im Voraus eine Textnachricht.
Sie können Ihre Planung testen, in dem Sie die Datei planer.py mit diesem Befehl in Ihrem Terminalfenster erneut ausführen:
Eine Änderung müssen Sie noch an der Funktion vornehmen, bevor Sie mit dem nächsten Schritt fortfahren können. Anstatt die empfangende Telefonnummer fest zu codieren, können Sie sie auch als Parameter angeben. Folgende Änderungen wurden an schedule_message()
vorgenommen:
- Zeile 1 fügt der Funktion den neuen Parameter
to_number
hinzu. - Zeile 6 überträgt den Wert von
to_number
zum Parameterto
. - Löschen Sie den Aufruf von
schedule_message()
am Ende der Datei.
Im Schritt zuvor haben Sie eine Funktion namens schedule_message()
erstellt, die eine Nachricht mithilfe der Twilio SMS-API plant. In diesem Schritt erstellen Sie einen Endpunkt mit Flask, einem Webframework für Python. Dieser Endpunkt wird später in Studio verwendet, wo er mit dem Widget zum Erstellen von HTTP-Anfragen interagieren wird.
Erstellen Sie in Ihrem Projektverzeichnis eine Datei namens app.py und kopieren Sie folgenden Code in das Verzeichnis:
Hier ist eine Übersicht über den Code in app.py:
- Zeilen 1 bis 3 sind Modulimporte, mit denen die Funktionalität von Flask genutzt wird.
- Zeile 5 ist ein Funktionsimport aus der zuvor erstellten Datei planer.py.
- Zeile 8 erstellt eine Flask-Instanz.
- Zeilen 11 bis 23 legen eine Funktion fest, die einen Kanal für die App Flask festlegt. Mit diesem kann die App über den
/v1/message/schedule
Endpunkt auf HTTP-POST-Anfragen antworten. - Zeilen 13 bis 17 extrahieren JSON-Daten aus dem Anfragetext und weisen diese Variablen zu.
- Zeilen 19 bis 20 rufen die Funktion
schedule_message()
auf und übergeben die Daten aus der JSON-Anfrage. Wenn der Funktionsaufruf erfolgreich war, wird ein Response-Objekt mit einer erfolgreichen Antwort und dem Statuscode 201 zurückgegeben. - Wenn der Funktionsaufruf fehlschlägt, geben Zeilen 21 bis 23 ein Response-Objekt mit einer Fehlerantwort und dem Statuscode 500 zurück.
- Zeile 26 startet die App Flask, die auf Port 8080 von localhost überwacht wird.
Führen Sie in einem neuen Terminalfenster app.py mit dem folgenden Befehl aus:
Zu diesem Zeitpunkt sollte Ihr Server auf http://localhost:8080 laufen. Aktuell läuft Ihre Anwendung nur auf einem Server auf Ihrem PC. Sie benötigen jedoch eine öffentlich zugängliche URL (nicht http://localhost). Sie haben die Möglichkeit, Ihre Anwendung auf einem Remote-Host bereitzustellen. Sie können Ihre Webanwendung mit einem Tool namens ngrok allerdings auch schneller vorübergehend online verfügbar machen.
Führen Sie in einem anderen Terminalfenster den folgenden Befehl aus:
Auf diese Weise erzeugen Sie einen „Tunnel“ vom öffentlich zugänglichen Internet zu Port 8080 auf Ihrem lokalen Rechner, auf dem die App Flask auf Anfragen wartet. Die Ausgabe sollte ungefähr wie folgt aussehen:
Sehen Sie sich die Zeile mit „Forwarding“ genauer an. In der Abbildung oben steht: https://5bad813c2718.ngrok.io -> http://localhost:8080
.
Das bedeutet, dass Ihre lokale Anwendung öffentlich auf https://5bad813c2718.ngrok.io
zugänglich ist und dass Ihr Endpunkt auf https://5bad813c2718.ngrok.io/v1/message/schedule
verfügbar ist.
Das Back-End zum Planen von Nachrichten haben Sie erfolgreich erstellt. Jetzt ist es an der Zeit, mit Twilio Studio unter Einsatz Ihrer Back-End-Anwendung eine Nachricht zu planen.
Sie können einen bereits vorhandenen Studio-Flow verwenden oder einen neuen Flow erstellen.
So erstellen Sie einen neuen Flow:
- Navigieren Sie in der Konsole zum Abschnitt „Studio Flows“.
- Klicken Sie auf die Schaltfläche Create new Flow (Neuen Flow erstellen), um einen neuen Flow zu erstellen.
- Geben Sie dem Flow einen Namen. Wählen Sie für dieses Projekt den Namen „SMS in Studio planen“. Klicken Sie dann auf Next (Weiter).
- Wählen Sie die Option Start from scratch (Von vorne anfangen) aus. Klicken Sie dann auf Next (Weiter).
Ziehen Sie aus der Widget-Bibliothek das Widget Make HTTP Request (HTTP-Anfrage stellen) und legen Sie es auf der Arbeitsfläche ab. Erstellen Sie dann über das Widget Trigger (Auslösen) den Übergang von Incoming Message (Eingehende Nachricht) zum Widget Make HTTP Request (HTTP-Anfrage stellen). Ihr Flow sollte in etwa wie folgt aussehen:
Wählen Sie das Widget Make HTTP Request (HTTP-Anfrage stellen) aus, um die folgenden Eigenschaften zu konfigurieren:
- Legen Sie als Widget Name (Widget-Name) zum Beispiel „nachricht_planen“ fest.
- Wählen Sie im Drop-down-Menü „POST“ als Request Method (Anfragemethode) aus.
- Legen Sie die Request URL (Anfrage-URL) auf „{YOUR-NGROK-URL}/v1/message/schedule“ fest.
- Ändern Sie im Drop-down-Menü den Content Type (Inhaltstyp) zu „Application/JSON“.
- Fügen Sie dem Request Body (Anfragentext) Folgendes hinzu:
Die Request URL (Anfrage-URL) muss auf eine öffentlich verfügbare URL verweisen. Falls Sie ngrok verwendet haben, fügen Sie die Weiterleitungs-URL aus der Ausgabe der Ausführung von ngrok http 8080
ein.
Achten Sie beim Bearbeiten von minutes (Minuten) darauf, den Bereich (> 15 und < 10080 Minuten) einzuhalten. Grund dafür ist, dass die Nachrichtenplanung nur Nachrichten unterstützt, die mehr als 15 Minuten und weniger als 7 Tage im Voraus geplant werden müssen.
Speichern Sie diese Änderungen durch Klicken auf die Schaltfläche Save (Speichern). Veröffentlichen Sie dann Ihren Flow, indem Sie auf die Schaltfläche Publish (Veröffentlichen) klicken.
Der Flow wird zwar veröffentlicht, für einen Testdurchlauf müssen Sie aber noch Ihre Twilio-Nummer konfigurieren.
Klicken Sie auf das Widget Trigger (Auslösen). Klicken Sie in der Flowkonfiguration unter Active configurations for this Flow (Aktive Konfigurationen für diesen Flow) auf den Link Manage Phone Numbers (Telefonnummern verwalten).
Wählen Sie Ihre Twilio-Telefonnummer aus und scrollen Sie nach unten zum Abschnitt Messaging. Wählen Sie unter A Message Comes In (Eingehende Nachricht) die Option Studio Flow (Studio-Flow) aus. Wählen Sie dann den Namen des zuvor erstellten Studio-Flows aus. Falls Sie den vorgeschlagenen Beispielnamen verwendet haben, müsste er „SMS in Studio planen“ lauten. Klicken Sie dann auf Save (Speichern).
Wenn Ihr Flow veröffentlicht ist und wenn der Webserver und ngrok ausgeführt werden, können Sie einen Testlauf starten.
Stellen Sie sicher, dass Ihr Webserver und ngrok ausgeführt werden, bevor die Nachricht versendet werden soll (in diesem Fall in 16 Minuten).
Der Flow wird durch eine eingehende Nachricht ausgelöst. Senden Sie also eine Textnachricht an Ihre Twilio-Nummer, um die geplante Nachricht auszulösen.
Zur Erinnerung: Wenn Ihr Flow ausgelöst wird, sendet er eine HTTP-Anfrage an Ihren Endpunkt /v1/message/schedule
. Dort wird die Funktion schedule_message()
aufgerufen, die auf Basis der Eingabe aus Studio eine geplante Nachricht sendet.
Sehr gut, Sie haben es geschafft! Aber es geht noch weiter. Es gibt viele weitere Funktionen und Anwendungsfälle, die Sie in Ihre eigene Flows integrieren können. Beispielsweise können Sie eine Liste der geplanten Nachrichten anzeigen und das Versenden einer geplanten Nachricht abbrechen.
Weitere Informationen zum Planen von Nachrichten sowie Antworten auf häufig gestellte Fragen finden Sie in den FAQ zur Nachrichtenplanung.
Den zu diesem Blogeintrag gehörenden Code finden Sie in diesem GitHub-Repository.
Vielen Dank fürs Lesen! Wenn Sie dieses Tutorial hilfreich finden, Fragen haben oder mir Ihr Projekt zeigen möchten, melden Sie sich online bei mir. Wenn Sie mehr über mich erfahren möchten, lesen Sie meinen Vorstellungs-Blogeintrag.
Anthony Dellavecchia ist Developer Evangelist für Twilio und schreibt Code live auf der Bühne vor Publikum. Er ist ein erfahrener Softwareentwickler, der Tausenden von Menschen beibringt, wie sie die Welt mit Code verändern können. Er möchte Ihnen dabei helfen, intensive Erlebnisse und Verbindungen mit Technologie aufzubauen, die Ihnen für immer in Erinnerung bleiben.
Sie finden @anthonyjdella auf: Twitter • Linkedin • GitHub • TikTok • Medium • Dev.to • E-Mail • anthonydellavecchia.com 👈
Verwandte Posts
Ähnliche Ressourcen
Twilio Docs
Von APIs über SDKs bis hin zu Beispiel-Apps
API-Referenzdokumentation, SDKs, Hilfsbibliotheken, Schnellstarts und Tutorials für Ihre Sprache und Plattform.
Ressourcen-Center
Die neuesten E-Books, Branchenberichte und Webinare
Lernen Sie von Customer-Engagement-Experten, um Ihre eigene Kommunikation zu verbessern.
Ahoy
Twilios Entwickler-Community-Hub
Best Practices, Codebeispiele und Inspiration zum Aufbau von Kommunikations- und digitalen Interaktionserlebnissen.