
Teilen Sie:
Oleksii ist ein Developer Advocate bei Vonage, Autor und Geschichtenerzähler. Seine Interessen umfassen KI/ML, Unified Communications, Bildungstechnologien, Cloud-Technologien und Open Source.
Wie man SMS-Nachrichten mit Python, Flask und Vonage versendet
Lesedauer: 19 Minuten
Heutzutage nutzt fast jeder SMS. Textnachrichten bieten eine einfache und bequeme Möglichkeit, mit Freunden zu chatten, wichtige Updates zu erhalten und grundlegende Sicherheitsaufgaben wie 2FA zu erledigen. Wenn Sie ein Entwickler sind, bietet Python eine ähnliche Einfachheit und Bequemlichkeit, was es zu einer der weltweit beliebtesten Programmiersprachen macht.
Warum also nicht diese beiden Methoden zusammenführen und Python zum Versenden von SMS-Nachrichten verwenden?
In diesem Tutorial zeigen wir Ihnen, wie Sie mit Python und Flask eine SMS versenden können. Wir haben ein kleines Codebeispiel vorbereitet, das ein hervorragender Ausgangspunkt für die Erstellung Ihrer Anwendung sein wird.
Vonage API-Konto
Um Ihre Python-SMS-App zu erstellen, benötigen Sie ein Vonage-API-Konto. Für die Nutzung der Vonage-Nachrichten-APInutzen zu können, müssen Sie eine Vonage-Anwendung über das Entwicklerportal erstellen.
Öffnen Sie API-Einstellungen. Auf der Registerkarte API-Schlüssel finden Sie Ihren API-Schlüssel und Ihr Kontogeheimnis (API-Geheimnis). Wir werden diese Anmeldeinformationen später verwenden.
Vonage Application Settings
Installieren Sie das Vonage Python SDK
Stellen Sie zunächst sicher, dass Ihr Laptop/Server über Python 3 installiert ist. Wir werden dann venv verwenden, um eine isolierte Umgebung mit nur den notwendigen Paketen zu erstellen.
Installieren Sie virtualenv über pip.
Erstellen Sie die virtuelle Umgebung
Aktivieren Sie Ihre virtuelle Umgebung
Installieren Sie das Vonage Python SDK
REPL, die Python-Shell, ausführen
Importieren Sie das Vonage Python SDK
Erstellen Sie ein Vonage-Client-Objekt, das wiederverwendet werden kann und Ihren Vonage-API-Schlüssel und dessen Geheimnis kennt.
Verwenden Sie send_message method um eine SMS zu senden. Sie können "Vonage APIs" durch die entsprechende Absender-ID (Name des SMS-Absenders) ersetzen.
Erwartetes Ergebnis
Wir erhalten ein Wörterbuch, aus dem wir die folgenden Informationen auswerten können: Wurde die Nachricht erfolgreich gesendet? Der "Status": "0" bedeutet, dass alles in Ordnung ist. In wie viele Nachrichten wurde Ihre SMS aufgeteilt? Wie hoch sind die Kosten für den Versand der Nachricht? Das hängt von der Anzahl der Symbole in der SMS und dem Land des Empfängers ab.
Überprüfen Sie die Benachrichtigung Ihres Telefons. Sie sollten eine SMS-Nachricht erhalten. Falls nicht, überprüfen Sie den Inhalt der Antwort.
Screenshot of an SMS message sent with the Vonage SMS API
Sie können die SMS-Zustellung überwachen und Fehler beheben auf dem Vonage API Dashboard
Erstellen eines SMS-Senders mit Python und Flask
Wir wollen eine kleine Webanwendung mit Flask und Python erstellen, um eine SMS zu versenden. Unsere Anwendung sollte ein Formular für eine Telefonnummer und eine SMS-Nachricht enthalten. Wenn der Benutzer auf "SMS senden" klickt, wird eine zweite Ansicht aufgerufen, die die SMS über die Vonage-SMS-API versendet. Erstellen Sie eine Datei server.py und fügen Sie den entsprechenden Code dort ein.
from dotenv import load_dotenv
from flask import Flask, flash, redirect, render_template, request, url_for
import vonage
from os import environ as env
# Load environment variables from a .env file:
load_dotenv('.env')
# Load in configuration from environment variables:
VONAGE_API_KEY = env['VONAGE_API_KEY']
VONAGE_API_SECRET = env['VONAGE_API_SECRET']
VONAGE_NUMBER = env['VONAGE_NUMBER']
# Create a new Vonage Client object:
client = vonage.Client(
key=VONAGE_API_KEY, secret=VONAGE_API_SECRET
)
# Initialize Flask:
app = Flask(__name__)
app.config['SECRET_KEY'] = env['FLASK_SECRET_KEY']
@app.route('/')
def index():
""" A view that renders the Send SMS form. """
return render_template('index.html')
@app.route('/send_sms', methods=['POST'])
def send_sms():
""" A POST endpoint that sends an SMS. """
# Extract the form values:
to_number = request.form['to_number']
message = request.form['message']
# Send the SMS message:
result = client.sms.send_message({
'from': VONAGE_NUMBER,
'to': to_number,
'text': message,
})
# Redirect the user back to the form:
return redirect(url_for('index'))Lassen Sie uns nun eine Vorlage erstellen unter templates/index.html Das folgende HTML enthält das Bootstrap-CSS-Framework und rendert dann ein Formular mit zwei Feldern: to_number für die Eingabe der Zielrufnummer und messagedamit der Benutzer seine SMS-Nachricht eingeben kann.
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<title>Send an SMS</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.5.0.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.7/dist/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="container">
<h1>Send an SMS</h1>
<form action="/send_sms" method="POST">
<div class="form-group"><label for="destination">Phone Number</label>
<input id="to_number" class="form-control" name="to_number" type="tel" placeholder="Phone Number" /></div>
<div class="form-group"><label for="message">Message</label>
<textarea id="message" class="form-control" name="message" placeholder="Your message goes here"></textarea></div>
<button type="submit" class="btn btn-primary">Send SMS</button>
</form>
</div>
</body>
</html>
In diesem Tutorial werden wir die python-dotenv-Bibliothek verwenden, um eine .env Datei zu laden. Bevor Sie Ihren Server starten, müssen Sie eine Konfiguration in einer .env Datei angeben. Beginnen Sie mit der folgenden Datei und geben Sie Ihre Daten ein:
Erstellen Sie requirements.txt und legen Sie die entsprechenden Abhängigkeiten wie in diese Datei
Starten Sie Ihre Anwendung mit folgendem Befehl
öffnen http://localhost:5000/ in Ihrem Browser und navigieren Sie zum Kapitel "Senden einer SMS mit der Python-Anwendung".
Bereitstellung aus der Codequelle
Alternativ können Sie eine Anwendung auch mithilfe eines vorbereiteten Codebeispiels bereitstellen. Um die Anwendung bereitzustellen, müssen Sie das Repo mit git und aktualisieren .env mit Ihren Anmeldeinformationen
Klonen Sie den Quellcode.
Wechseln Sie in den Projektordner.
Installieren Sie die Abhängigkeiten.
Starten Sie Ihre Anwendung mit dem folgenden Befehl.
Erwartetes Ergebnis:
Öffnen Sie dann http://localhost:5000/ in Ihrem Browser und Sie sollten die folgende Webseite sehen
Senden einer SMS mit der Python-Anwendung
Python App for Sending SMS Using Vonage Python SDK
Lassen Sie uns eine SMS über diese Schnittstelle senden. Vergewissern Sie sich, dass die Nummer im internationalen Format ohne das "+" am Anfang angegeben ist. Klicken Sie auf "Send SMS" und überprüfen Sie Ihr Telefon! Sie finden den Quellcode dieser Anwendung hier.
Nachbereitung
Herzlichen Glückwunsch! Sie haben nun eine Anwendung zum Senden von SMS erstellt. Sie können auch die Vonage-Nachrichten-API verwenden, um Nachrichten mit Viber Business Messages, Facebook Messenger und WhatsApp zu versenden.
Lassen Sie uns wissen, wie wir helfen können! Beteiligen Sie sich am Gespräch auf unserem Vonage Community Slack oder senden Sie uns eine Nachricht auf Twitter.