
Teilen Sie:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.
Ausgehende SMS-Zustellungsbestätigungen mit Python empfangen
Lesedauer: 10 Minuten
Sie haben bereits gelernt, wie man eine SMS mit Python zu versenden. Sie haben auch gelernt, wie man SMS-Nachrichten in Python-Applikationen zu empfangen. Aber wie können Sie sicher sein, dass Ihre SMS angekommen ist, wenn Sie keinen Zugang zu dem Gerät haben, an das Sie sie gesendet haben?
Mit der Vonage Messages API können Sie die Zustellung über Webhooks bestätigen und Zustellquittungen (auch DLRs oder Zustellberichte genannt) erstellen. In diesem Tutorial erfahren Sie, wie Sie mit Hilfe der Vonage API SMS-Zustellungsprüfungen in Python einrichten.
Hinweis: Es gibt zwei APIs für SMS-Applikationen in Vonage. Die SMS API kann für SMS-Nachrichten verwendet werden, während die Messages API können Sie sowohl SMS als auch Nicht-SMS-Kanäle wie WhatsApp, Facebook Messenger, Viber und MMS verwenden. In diesem Lernprogramm wird die Messages API verwendet.
Voraussetzungen
Um eine Python-Anwendung für die SMS-Zustellungsbestätigung zu erstellen, benötigen Sie zunächst ein Vonage API-Konto. Sobald Sie Ihr Vonage-Konto eingerichtet haben, müssen Sie auch die folgenden Tools installieren:
Python wird als Framework für Ihre Anwendung verwendet.
Flask wird verwendet, um Ihren Webhook für SMS-Zustellungsberichte zu schreiben.
Die Vonage CLI Paket ermöglicht es Ihnen, Ihren Vonage Account richtig zu konfigurieren. Es kann auch zum Erwerb einer virtuellen Nummer verwendet werden.
Python
Holen Sie sich die passende Version von Python für Ihr Betriebssystem auf der offiziellen Python-Download-Seite.
Vor der Installation von Flaskerstellen Sie Ihr Projektverzeichnis und navigieren Sie wie folgt dorthin:
mkdir delivery_receipt
cd delivery_receipt Flachmann
Installieren Sie Flask mit dem pip Paketmanager. pip wird zusammen mit Python installiert. Sie werden dann Flask verwenden, um Ihre Anwendung zu betreiben. Verwenden Sie den folgenden Terminalbefehl, um Flask in dem neu erstellten Ordner zu installieren.
pip install flask Vonage CLI
Installieren Sie die Vonage CLI global in Ihrem Terminal mit dem npm Paketmanager:
Anweisungen
Nachdem Sie die oben genannten Pakete erfolgreich installiert haben, können Sie mit der Erstellung Ihrer Python-Anwendung für SMS-Zustellungstests beginnen.
Im Folgenden werden die Schritte zur Erstellung einer Python-Anwendung beschrieben, die SMS-Zustellungsberichte empfängt:
Erstellen Sie einen Webhook für SMS-Zustellungsbestätigungen
Machen Sie die URL des Webhooks öffentlich zugänglich
Konfigurieren Sie Ihren Vonage Account für Lieferscheine
Senden Sie eine SMS, um Zustellungsberichte in Python zu testen
1. Erstellen Sie einen Webhook für SMS-Zustellungsbestätigungen
Der erste Schritt zum Empfang von SMS-Zustellungsbestätigungen ist die Erstellung eines Webbooks.
Wenn Sie Nachrichten über Ihre (Vonage-Anwendung)[https://developer.vonage.com/en/getting-started/concepts/glossary#vonage-application] versenden, wird die Zustellungsbestätigung an Ihre Python-Anwendung weitergeleitet, wenn Sie eine Webhook-URL in Ihrem Vonage-Dashboard eingerichtet haben. Wir werden den Vonage-Teil später einrichten, aber jetzt werden wir unsere Flask-Anwendung so konfigurieren, dass sie diese POST-Anfrage akzeptiert.
Sie akzeptieren eine POST Anfrage in Ihrem Webhook-Handler, um Aktualisierungen des Nachrichtenstatus zu erhalten. Messages API-Webhook-Anfragen sind POST Anfragen. Sie werden einen Flask-Endpunkt für die Anfrage erstellen.
Erstellen Sie eine receipt.py Datei in Ihrem Flask-Projekt und fügen Sie den folgenden Code hinzu:
#!/usr/bin/env python3
from flask import Flask, request, jsonify
from pprint import pprint
app = Flask(__name__)
@app.route("/webhooks/message-status", methods=['POST'])
def message_status():
if request.is_json:
data = request.get_json()
pprint(data)
else:
data = dict(request.form) or dict(request.args)
pprint(data)
return "200"
if __name__ == '__main__':
app.run(host="", port=3000)Im obigen Code haben Sie den Webhook-Endpunkt erstellt, /webhooks/message-statuserstellt, der den Statuscode von SMS über Webhooks entgegennimmt.
Der Endpunkt parst auch die eingehende Anfrage und verwendet dann die request.get_json() Funktion, um zu prüfen, ob die Anfrage im JSON-Format vorliegt. Bei JSON-kodierten Anfragen wird der mimetype auf application/json oder application/*+json.
Wenn die Anfrage nicht im JSON-Format vorliegt, dann request.form und request.args die Schlüssel/Wert-Paare im Anfragekörper bzw. im URL-Abfrage-String abrufen.
Der Endpunkt parst dann die Anfragedaten in die data Variable und druckt sie auf dem Terminal mit pprint. Der letzte Befehl führt den Server der Anwendung auf Port 3000.
2. Machen Sie die URL des Webhooks öffentlich zugänglich
Nun erstellen Sie eine öffentlich zugängliche URL, an die Vonage-APIs die Webhook-Anforderungen senden können. Auf diese Weise kann die Vonage-API auf den Webhook zugreifen, den Sie für Zustellungsquittungen erstellt haben.
ngrok ist eine leichtgewichtige und schnelle Engine, die einen Webserver imitiert. Daher müssen Sie keine DNS-Einstellungen, SSL-Konfigurationen und andere Dinge vornehmen, die Sie in einem echten Produktionsszenario benötigen würden. ngrok ist ein nützliches Tool für schnelle Tests in einer Entwicklungsumgebung. Sie können sich dieses Lehrgang um mehr Informationen über die Verwendung von ngrok.
Installieren Sie zunächst ngrok von der offiziellen Website.
Als Nächstes starten Sie ngrok in Ihrem Terminal:
Sie erhalten eine öffentlich zugängliche URL ähnlich der folgenden:
Sie können Webanfragen an die URL stellen, die ngrok für Sie generiert wurde. Sie wird auf dem Port 3000 Ihres lokalen Rechners bedient.
Beachten Sie die folgenden Punkte:
Die URL ändert sich bei jedem Neustart des
ngrokServer neu starten, wenn Sie den kostenlosen Tarif nutzen.Eine ngrok-Server-Sitzung dauert im kostenlosen Tarif 1 Stunde. Danach können Sie den Server erneut starten und Sie erhalten eine neue öffentliche URL.
Sie müssen Ihren Endpunkt an die neu generierte ngrok-URL anhängen, um Ihre Webhook-URL wie folgt zu bilden:
https://f9db-102-89-43-137.eu.ngrok.io/webhooks/message-status
Die obige URL ist Ihre vollständige Webhook-URL.
3. Konfigurieren Sie Ihren Vonage Account für Lieferscheine
Nachdem der Webhook für die Zustellungsbestätigung fertig ist, können Sie die Einrichtung in Ihrem Vonage Account abschließen.
Besuchen Sie die Einstellungen Seite auf Ihrem Dashboard und gehen Sie zu den SMS-Einstellungen und wählen Sie Messages API. Die anderen Standardeinstellungen, wie die Version der Messages API, können Sie unter 1.0.
Gehen Sie dann zu den Applications Seite, um eine Vonage-Anwendung zu erstellen. Klicken Sie auf die Schaltfläche + Anwendung erstellen Schaltfläche. Geben Sie dann den gewünschten Namen in das Feld Name Feld ein.
Wählen Sie im Abschnitt Fähigkeiten Nachrichten und geben Sie Ihren Webhook ein Status-URL. Sie müssen Ihre URL sowohl für Inboud als auch für Status URL eingeben. Sie können sich unsere Wie man SMS-Nachrichten in Python empfängt nachlesen, wie Sie die Eingangs-URL für den Empfang von eingehenden SMS-Nachrichten einrichten.
Ihr Dashboard sollte mit Ihren ngrok-URLs wie folgt aussehen:
ngrok-webhooks-configured-for-messages-api.png
Klicken Sie auf Neue Anwendung generieren um den Erstellungsprozess abzuschließen. Dies führt Sie automatisch zur Antragsseite
Auf der Anmeldeseite können Sie dann Ihre Nummer verknüpfen oder eine virtuelle Nummer kaufen, wenn Sie einen kostenpflichtigen Vonage Account nutzen.
4. Senden einer SMS zum Testen von Zustellungsberichten in Python
Zu diesem Zeitpunkt sollte Ihr ngrok-Server auf dem Port 3000Stellen Sie sicher, dass Sie Ihre Anwendung auch mit einer virtuellen Nummer in Ihrem Vonage Account konfiguriert haben.
Jetzt können Sie die Flask-Anwendung in einem anderen Terminalfenster starten, damit das vorherige Terminalfenster mit ngrok weiterläuft.
Verwenden Sie den folgenden Befehl, um die Anwendung über den angegebenen Port zu starten 3000. ngrok ruft die Anwendung vom Port ab und stellt sie über ihre öffentliche URL im Internet bereit.
Um unseren Code zu testen, müssen wir eine SMS von unserer Vonage-Nummer über die Messages API senden.
Zuerst erstellen wir eine neue Datei in unserem Projekt mit dem Namen send-sms.sh
In diese Datei fügen wir den folgenden Code ein:
curl -X POST https://api.nexmo.com/v1/messages \
-H 'Authorization: Bearer '$JWT\
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d $'{
"message_type": "text",
"text": "Vonage Delivery Receipt Testing",
"to": "'$TO_NUMBER'",
"from": "'$FROM_NUMBER'",
"channel": "sms"
}'Ersetzen Sie $TO_NUMBER durch Ihre persönliche Nummer, $FROM_NUMBER durch Ihre virtuelle Vonage-Nummer und $JWT durch ein JWT, das Sie für die Anwendung erstellen. Sie können unser Online-Tool zum Erstellen von JWTs verwenden.
Stellen Sie sicher, dass Sie Ihren Ländercode in
YOUR_PERSONAL_NUMBERwie z. B. 23400000001
Öffnen Sie dann eine neue Registerkarte in Ihrem Terminal und führen Sie den Befehl aus:
bash send-sms.shSie sollten eine Antwort mit der message_id erhalten, etwa so:
{"message_uuid":"6cdbd8ed-7217-4bbf-ba3f-da9cdcaeaf2b"}In der Registerkarte ngrok sehen Sie dann eine erfolgreiche POST-Anfrage, etwa so:
POST /webhooks/message-status 200 OKUnd schließlich sollten Sie auf der Registerkarte Ihrer Anwendung den Status des Lieferscheins im Terminal wie folgt sehen:
{'channel': 'sms',
'destination': {'network_code': '42507'},
'from': '972523083911',
'message_uuid': '30af1182-e2c9-4986-bf60-0129a14bbc79',
'sms': {'count_total': '1'},
'status': 'submitted',
'timestamp': '2023-06-19T10:23:16Z',
'to': '972532208911',
'usage': {'currency': 'EUR', 'price': '0.093'}}Beachten Sie, dass der Status lautet submitted. In ein paar Sekunden sollten Sie eine zweite Antwort erhalten, die wie folgt aussieht:
{'channel': 'sms',
'destination': {'network_code': '42507'},
'from': '972523083911',
'message_uuid': '30af1182-e2c9-4986-bf60-0129a14bbc79',
'status': 'delivered',
'timestamp': '2023-06-19T10:23:23Z',
'to': '972532208911'} Schlussfolgerung
Bei der Arbeit mit SMS-Nachrichten können Zustellungsbestätigungen entscheidend sein - vor allem, wenn Sie umfangreiche Anwendungen erstellen. Wenn Sie eine Python-Anwendung für Zustellungsbestätigungen erstellen, wissen Sie, dass die Zustellung fehlgeschlagen ist, und können korrigierende Maßnahmen ergreifen
Dieser Artikel zeigt, wie man Zustellbestätigungen für SMS-Nachrichten erhält, die über die Messages API von Vonage versendet wurden. Sie haben gelernt, wie Sie eine Python-basierte Anwendung für SMS-Zustellungsberichte erstellen, und Sie haben gelernt, wie Sie diese Anwendung mit ngrok testen können. Jetzt können Sie die Funktion der Zustellungsbestätigungen in jede Python-Applikation integrieren, die Sie erstellen.
Weitere Lektüre
Sie können einige unserer Ressourcen durchgehen, um mehr über die Messages API zu erfahren:
Hat Ihnen dieses Tutorial gefallen? Sind Sie stecken geblieben? Erreichen Sie uns auf Twitter oder dem Vonage Community Slack. Wir sind gespannt, was Sie bauen!
Teilen Sie:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.