https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receive-an-sms-with-python-dr/receive-an-sms-with-python.png

Wie man SMS-Nachrichten in Python empfängt

Zuletzt aktualisiert am October 11, 2023

Lesedauer: 12 Minuten

Dieser Artikel wurde im August 2025 aktualisiert.

Einführung

Dieses Tutorial zeigt Ihnen, wie Sie mit Hilfe der Vonage API SMS-Nachrichten in Python empfangen können.

Vonage verfügt über zwei verschiedene APIs für den Empfang von SMS: die SMS API, die ausschließlich für SMS-Nachrichten verwendet wird, und die Messages API, mit der Sie andere Kanäle wie WhatsApp nutzen können. In diesem Lernprogramm verwenden wir die Messages API um eingehende SMS-Nachrichten mit Python zu empfangen.

Die eingehenden SMS-Nachrichten werden über einen öffentlich zugänglichen Webhook. In diesem Artikel erfahren Sie, wie Sie diesen Webhook einrichten und mit Ihrem Vonage Account verbinden.

Voraussetzungen

Um eine Python-Anwendung für den Empfang eingehender SMS-Nachrichten zu erstellen, benötigen Sie die folgenden Programme.

Python

Für die Verwendung der Flask-Bibliothek wird Python benötigt. Besuchen Sie die offizielle Python-Download-Seite um eine Python-Version herunterzuladen, die für Sie geeignet ist.

Flachmann

Sie verwenden Flask um Ihren Webhook zu schreiben. Bevor Sie Flask installieren, erstellen Sie Ihr Projektverzeichnis und navigieren Sie wie folgt dorthin:

mkdir receive_sms
cd receive_sms

Sie können Flask mit dem pip-Paketmanager installieren, der mit Python installiert wird. Verwenden Sie den folgenden Terminalbefehl, um Flask in dem neu erstellten Ordner zu installieren.

pip install flask

Vonage-API

Um die Vonage Messages API zu nutzen, benötigen Sie einen Vonage API Account. Greifen Sie auf Ihr Vonage API Dashboard zu, um Ihren API-Schlüssel und Ihr API-Geheimnis zu finden, die Sie oben auf der Seite finden.

Vonage CLI

Die Vonage CLI Paket kann verwendet werden, um eine virtuelle Vonage-Nummer zu erwerben, anstatt den Kauf über die Benutzeroberfläche Ihres Dashboards durchzuführen. Es kann auch zum Senden einer Test-SMS verwendet werden.

Installieren Sie die Vonage CLI global in Ihrem Terminal, indem Sie diesen Befehl ausführen:

npm install -g @vonage/cli

Um eine Vonage Telefonnummer über CLI zu erwerben, richten Sie zunächst Ihre API-Anmeldedaten mit vonage config:set --apiKey=XXXXXX --apiSecret=XXXXXXein, suchen Sie dann nach verfügbaren Numbers mit vonage numbers:search [Alpha-2 Country Code] und kaufen Sie eine mit vonage numbers:buy [Number] [Country Code].

Alternativ können Sie eine Nummer auch direkt über die Nummer kaufen in Ihrem Dashboard erwerben.

Empfangen von SMS-Nachrichten in Python mit der Vonage API

Sobald Sie Python, Flask und die Vonage CLI erfolgreich installiert haben, können Sie loslegen. Im Folgenden erklären wir Ihnen, wie Sie diese Tools verwenden, damit Python Textnachrichten von der Vonage API empfangen kann. Um eine Python-Anwendung zu erstellen, die SMS-Nachrichten empfängt, folgen Sie einfach diesen 4 Schritten:

  1. Erstellen Sie einen Webhook für eingehende SMS

  2. Machen Sie die Webhook-URL öffentlich zugänglich

  3. Konfigurieren Sie Ihr Vonage-Konto

  4. Senden und Empfangen einer Test-SMS

1. Erstellen Sie den Webhook für eingehende SMS

Der erste Schritt zum Empfang einer SMS in Python besteht darin, einen Webhook für eingehende Textnachrichten zu erstellen.

Beim Empfang einer SMS-Nachricht auf Ihrem Vonage Account überprüft Vonage, ob Sie einen Webhook eingerichtet haben. Wenn es einen Webhook findet, kann es die Nachricht an Ihre Anwendung weiterleiten. Sie können den Webhook so konfigurieren, dass er entweder für eine einzelne Nummer oder für alle Nummern in Ihrem Account funktioniert.

Um eingehende Nachrichten zu verarbeiten, wird Ihr Webhook-Handler so konzipiert sein, dass er eine POST Anfrage. Um dies zu erleichtern, werden Sie einen Flask-Endpunkt erstellen, der für die Bearbeitung der eingehenden Anfragen zuständig ist.

Erstellen Sie eine sms-receive.py Datei in Ihrem Flask-Projekt und fügen Sie den folgenden Code hinzu:

from flask import Flask, request, jsonify
  
app = Flask(__name__)
  
@app.route("/webhooks/inbound-message", methods=['POST'])
def inbound_message():
 if request.is_json:
    data = request.get_json()
    print(data)
 else:
    data = dict(request.form) or dict(request.args)
    print(data)
 return "200"
  
if __name__ == '__main__':
 app.run(host="", port=3000)

Packen wir das mal aus, um zu sehen, wie dieser Code funktioniert. Im vorherigen Codeausschnitt:

  • Sie haben einen Webhook-Endpunkt mit dem Namen /webhooks/inbound-message. Dieser Endpunkt ist für den Empfang und das Parsen der Daten in den Nutzdaten eingehender Nachrichten zuständig.

@app.route("/webhooks/inbound-message", methods=['POST'])
def inbound_message():
  • Die Methode request.get_json() Methode wird verwendet, um zu überprüfen, ob die Anfrage im JSON-Format vorliegt. Liegt die Anfrage nicht im JSON-Format vor, werden die Schlüssel/Wertpaare im Anfragetrumpf oder im URL-Abfrage-String mit request.form und request.argsabgerufen.

if request.is_json:
    data = request.get_json()
  • Die Anfragedaten werden geparst und in der data Variable gespeichert und dann mit print.

data = request.get_json()
print(data)

Schließlich geben Sie an, dass die Anwendung in Port 3000.

if __name__ == '__main__':
 app.run(host="", port=3000)

Webhook-URL öffentlich zugänglich machen

Um eingehende SMS-Nachrichten zu empfangen, muss der Webhook-Endpunkt Ihrer Python-Anwendung über das öffentliche Internet erreichbar sein. Dadurch kann Vonage eine Anfrage an Ihren Endpunkt stellen, sobald eine SMS empfangen wird.

Normalerweise benötigen Sie im Produktionsmodus einen Server mit einer öffentlichen Domäne, um den Endpunkt anzuhängen. Für Tests im Entwicklungsmodus werden wir jedoch ngrok, um die Serverumgebung zu imitieren.

Sie können ngrok von der offiziellen Website herunterladen oder installieren Website herunterladen oder installieren.. Überprüfen Sie Website von ngrok für Details über die Grenzen des kostenlosen Plans.


Als Nächstes starten Sie ngrok in Ihrem Terminal:

ngrok http 3000

Sobald ngrok gestartet ist, generiert es eine öffentliche URL für Sie, ähnlich der folgenden:

https://f9db-102-89-43-137.eu.ngrok.io -> http://localhost:80

Sie können dann Ihren Endpunkt an die neu generierten ngrok-URLs anhängen, um Ihre Webhook-URLs wie folgt zu bilden:

Diese URL benötigen Sie bei der Erstellung Ihrer Anwendung im nächsten Abschnitt dieses Lernprogramms.

Vonage-Account konfigurieren

Als nächstes müssen Sie Ihren Vonage Account so konfigurieren, dass er die richtige API für SMS-Nachrichten verwendet. Wir verwenden die Messages API für unsere Anwendung anstelle der SMS API.

Um diese Einstellung anzupassen, gehen Sie zu Ihrem Dashboard Einstellungen Seite. Gehen Sie dann zu den SMS-Einstellungen und wählen Sie Messages API.

Select Messages API in the dashboard Settings pageMessages

Gehen Sie dann zu den Applications um eine Anwendung zu erstellen.

Klicken Sie auf die Schaltfläche + Anwendung erstellen Schaltfläche.

Geben Sie den gewünschten Namen im Feld Name Feld ein.

Wählen Sie im Abschnitt Fähigkeiten Nachrichten und geben Sie Ihren Webhook ein Eingehende URL. Sie können sich unser Lernprogramm nachlesen, wie Sie die Status-URL für die Annahme des Zustellungsstatus ausgehender SMS einrichten.

Setting webhook URLs to receive inbound messages.Messages Webhooks

Klicken Sie auf Neue Anwendung generieren um den Vorgang abzuschließen. Sie werden dann auf die Seite mit dem neu erstellten Antrag weitergeleitet. Auf dieser Seite können Sie Ihre Nummer verknüpfen oder für eine virtuelle Nummer bezahlen.

4. Senden und Empfangen einer Test-SMS

Ihre Anwendung ist nun bereit, eingehende SMS-Nachrichten zu empfangen!! Ihr ngrok-Server läuft auf Port 3000und Sie haben Ihre Anwendung mit einer virtuellen Nummer in Ihrem Vonage Account konfiguriert.

Jetzt können Sie die Flask-Anwendung in einem anderen Terminalfenster starten, damit das vorherige Terminalfenster mit ngrok weiterläuft.

python sms-`receive.py

Wenn Sie diesen Befehl ausführen, wird Ihre Flask-Anwendung auf dem lokalen Host-Port gestartet 3000. Dieser Port wird automatisch von ngrok erkannt, so dass Sie Ihre Anwendung über die öffentliche URL von ngrok im Internet bereitstellen können.

Verwenden Sie nun den folgenden Vonage CLI-Befehl, um eine Test-SMS an Ihre Vonage-Nummer auf Ihrem Terminal zu senden.

curl -X "POST" "https://rest.nexmo.com/sms/json" \ -d "from=VONAGE_VIRTUAL_NUMBER" \ -d "text=Testing SMS Webhooks!" \ -d "to=YOUR_PERSONAL_NUMBER" \ -d "api_key=XXXXXXXX" \ -d "api_secret=XXXXXXXXX"

In dem Terminal-Fenster, in dem Ihre Python-Anwendung läuft, sollten Sie sehen, dass Ihr Webhook die eingehende SMS empfangen hat:

{ "messages": [ { "to":"YOUR_PERSONAL_NUMBER", "message-id":"42f2dr19-f80a-1493-a6z3-3bhe27bu0465", "status":"0", "remaining-balance":"9.69450000", "message-price":"0.17430000", "network":"62130" } ],"message-count":"1" }

Sie erhalten auch eine SMS-Nachricht auf Ihrem Mobiltelefon, wie auf dem folgenden Screenshot zu sehen ist:

Screenshot of SMS received on mobile phoneSMS Screenshot

Schlussfolgerung

In diesem Tutorial haben Sie den Prozess des Empfangs eingehender SMS-Nachrichten mit Python kennengelernt. Jetzt können Sie die Vonage Messages API in Ihre Python-Applikationen integrieren und diese Anwendungen zur Verarbeitung eingehender Textnachrichten verwenden.

Haben Sie eine Frage oder möchten Sie uns mitteilen, was Sie gerade bauen?

Bleiben Sie auf dem Laufenden und halten Sie sich über die neuesten Nachrichten, Tipps und Veranstaltungen für Entwickler auf dem Laufenden.

Weitere Lektüre

In den Ressourcen von Vonage finden Sie weitere Informationen zur Messages API:

  1. Messages API Übersicht

  2. Messages API-Referenz

  3. Verkettung und Kodierung

  4. Wie man SMS mit Python versendet

  5. Wie man SMS-Zustellungsbestätigungen in Python empfängt

Teilen Sie:

https://a.storyblok.com/f/270183/400x397/505bfb0eb9/jekayinoluwa-olabemiwo.png
Jekayinoluwa Olabemiwo

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.