https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-send-sms-messages-with-python-flask-and-vonage/python-flash_sms.png

Wie man SMS-Nachrichten mit Python, Flask und Vonage versendet

Zuletzt aktualisiert am November 1, 2023

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 SettingsVonage 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.

pip install virtualenv

Erstellen Sie die virtuelle Umgebung

python3 -m venv venv

Aktivieren Sie Ihre virtuelle Umgebung

source venv/bin/activate

Installieren Sie das Vonage Python SDK

pip install vonage

REPL, die Python-Shell, ausführen

python

Importieren Sie das Vonage Python SDK

import vonage

Erstellen Sie ein Vonage-Client-Objekt, das wiederverwendet werden kann und Ihren Vonage-API-Schlüssel und dessen Geheimnis kennt.

client = vonage.Client(key='YOUR-VONAGE-API-KEY', secret='YOUR-VONAGE-API-SECRET')

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.

client.sms.send_message({"from": "Vonage APIs", "to": "**6**84**7*", "text": "A text message sent using the Vonage SMS API"})

Erwartetes Ergebnis

{'messages': [{'to': '**6**84**7*', 'message-id': '59a00000-1c17-40c9-40c9-5ebc****4196', 'status': '0', 'remaining-balance': '**.12347500', 'message-price': '0.03430000', 'network': '2**0*'}], 'message-count': '1'}

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 APIScreenshot 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:

# Do not use this in production: FLASK_DEBUG=true # Replace the following with any random value you like: FLASK_SECRET_KEY=RANDOM-STRING_CHANGE-THIS-Ea359 # Sender ID (or SMS sender name), VONAGE_BRAND_NAME VONAGE_NUMBER=Vonage APIs # Get the following from ${CUSTOMER_DASHBOARD_URL}/settings VONAGE_API_KEY=paste-your-api-key VONAGE_API_SECRET=paste-your-api-secret

Erstellen Sie requirements.txt und legen Sie die entsprechenden Abhängigkeiten wie in diese Datei

Starten Sie Ihre Anwendung mit folgendem Befehl

FLASK_APP=server.py flask run

ö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.

git clone https://github.com/obvonage/tutorial-sms-flask-python-sdk

Wechseln Sie in den Projektordner.

cd tutorial-sms-flask-python-sdk

Installieren Sie die Abhängigkeiten.

pip install -r requirements.txt

Starten Sie Ihre Anwendung mit dem folgenden Befehl.

FLASK_APP=server.py flask run

Erwartetes Ergebnis:

* Serving Flask app 'server.py' * Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit * Restarting with stat * Debugger is active! * Debugger PIN: 648-303-150

Ö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 SDKPython 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.

Weiteres Lesen

Teilen Sie:

https://a.storyblok.com/f/270183/400x409/b965ab37c0/oleksii-borysenko.png
Oleksii BorysenkoVonage Ehemalige

Oleksii ist ein Developer Advocate bei Vonage, Autor und Geschichtenerzähler. Seine Interessen umfassen KI/ML, Unified Communications, Bildungstechnologien, Cloud-Technologien und Open Source.