https://d226lax1qjow5r.cloudfront.net/blog/blogposts/deploying-pythonanywhere-with-the-messages-api/messages_pythonanywhere_1200x600.png

Einsatz von PythonAnywhere mit der Nachrichten-API

Zuletzt aktualisiert am May 21, 2021

Lesedauer: 14 Minuten

Um eine Anwendung für die Endnutzer verfügbar zu machen, muss die Anwendung bereitgestellt werden. Die Bereitstellung von Anwendungen oder Software ist einer der wichtigsten Prozesse; durch diesen Prozess wird die Anwendung für die beabsichtigten Nutzer verfügbar.

Die Bereitstellung umfasst den Prozess der Übertragung einer Anwendung, von Updates, Modulen usw. vom Entwicklungsserver in die Produktion, wo die Benutzer über das Internet oder Intranet auf diese Anwendung zugreifen können.

Die meisten Softwareunternehmen und -entwickler stellen ihre Anwendungen manuell oder automatisch bereit, meistens sogar beides. Zu den beteiligten Prozessen gehören die Installation von Software und Paketen, das Testen, die Freigabe der Software und die Bereitstellung für den Einsatz.

In diesem Tutorial konzentrieren wir uns auf den Einsatz der Vonage Message API in der Produktion auf PythonAnywhere. Vonage Nachrichten-API lässt sich mit SMS, MMS und beliebten sozialen Chat-Apps integrieren, so dass Benutzer mit Ihren Kunden über jeden beliebigen Kanal kommunizieren können. Um auf die API zuzugreifen, müssen Sie ein Konto auf dem Vonage Developer Dashboard erstellen, wo Sie ein Guthaben erhalten, mit dem Sie die API testen können.

Zunächst werden wir eine einfache Anwendung auf PythonAnywhere erstellen, die WhatsApp-Nachrichten an Benutzer sendet, die wir anschließend einsetzen werden.

Anforderungen

<sign-up number></sign-up>

  • Ein PythonAnywhere-Konto, entweder ein kostenloses oder ein kostenpflichtiges Konto.

  • Python-Anwendung, die auf Ihrem System installiert ist.

  • Grundkenntnisse in Python.

Was ist PythonAnywhere?

PythonAnywhere ist eine Cloud-basierte Entwicklungs- und Hosting-Umgebung für Python-Anwendungen.

Diese Plattform wird für das Hosting von Python-Webanwendungen und -Skripten verwendet. PythonAnywhere dient als Hosting-Umgebung; Entwickler können Python-Anwendungen und -Skripte programmieren, ausführen und hosten; zu diesen Python-Anwendungen gehören Django, Flask, web2py und Bottle-Anwendungen.

Es ist kostenlos, anfängerfreundlich und bietet eine große Anzahl von standardmäßig installierten Python-Erweiterungen. Ein weiteres einzigartiges Merkmal von PythonAnywhere ist, dass es explizit für Python-Projekte entwickelt wurde und daher im Gegensatz zu anderen Cloud-Anbietern keine leeren Linux- und Ubuntu-Server bereitstellt.

Installation von PythonAnywhere

Wenn Sie noch kein PythonAnywhere-Konto haben, gehen Sie zunächst zu https://www.pythonanywhere.com/pricing/und erstellen Sie ein "Anfängerkonto". Damit können Sie ein kostenloses Konto erstellen, das für die Durchführung dieses Projekts ausreichend ist. Füllen Sie das Formular aus und erstellen Sie Ihr Konto.

Sie müssen den Benutzernamen mit Bedacht wählen, da er als Domänenname Ihrer Website dient, d. h. https://www.your-username.pythonanywhere.com. Stimmen Sie den "Allgemeinen Geschäftsbedingungen" zu und prüfen Sie dann Ihre E-Mail auf eine Bestätigungsnachricht.

Erstellen einer Bash-Konsole

Sobald Sie sich bei Ihrem Konto angemeldet haben, sehen Sie ein Dashboard mit verschiedenen Bereichen. Klicken Sie auf den Abschnitt "Konsolen" und wählen Sie Ihre bevorzugte Konsole, entweder Python oder Bash; in diesem Tutorial wird die Bash-Konsole verwendet. Klicken Sie auf "$ bash", und eine Bash-Konsole öffnet sich in Ihrem Browserfenster.

An example of the PythonAnywhere Bash ConsoleAn example of the PythonAnywhere Bash Console

In diesem Tutorial werden wir einen Whatsapp-Bot mithilfe der Vonage-API einrichten. Wir werden einen einfachen Bot erstellen, der WhatsApp-Nachrichten mithilfe der Flask framework. Dieser Bot nimmt die WhatsApp-Nummer des Benutzers und die angegebene Vonage-Nummer. Wir werden dafür eine Flask-Datei erstellen und einige Importe vornehmen, aber bevor wir beginnen, werde ich Ihnen kurz zeigen, wie Sie Ihr Vonage-Konto einrichten und Ihre Nummer zur Sandbox hinzufügen.

  • Flask ist ein leichtgewichtiges Python-Framework für Webanwendungen. Das wir für die Erstellung unserer Anwendung verwenden können

  • Vonage ist eine API-Bibliothek, die flexible Sprach-, Messaging-, Video- und Kommunikations-APIs bietet

Vonage Messages API - WhatsApp-Kanal

Mit der Vonage Messages API können Nutzer über den WhatsApp-Kanal Nachrichten an eine WhatsApp-Nummer senden. Um auf die Vonage API zuzugreifen, müssen Sie zunächst ein Vonage API-Konto auf dem Vonage Developer Dashboard erstellen. Anschließend erhalten Sie kostenloses Guthaben für die Nutzung der API sowie einen API-Schlüssel und ein API-Geheimnis oben auf dem Vonage Dashboard. Um den WhatsApp-Kanal zu nutzen, müssen Sie eine Sandbox einrichten.

Vonage Sandbox einrichten

Um die Vonage Message API Sandbox einzurichten, klicken Sie auf Messages and Dispatch und dann auf Sandbox. Die folgende Abbildung zeigt ein Beispiel für den Bildschirm, den Sie sehen werden:

A screenshot of the Vonage dashboard showing various social channels available for the Messages APIA screenshot of the Vonage dashboard showing various social channels available for the Messages API

Fügen Sie unter dem Abschnitt WhatsApp WhatsApp zur Sandbox hinzu. Anschließend wird dies auf dem Bildschirm angezeigt.

An example of the sandbox dashboard page with WhatsApp enabledAn example of the sandbox dashboard page with WhatsApp enabled

Sie können entweder den QR-Code scannen oder auf eine Einladungs-E-Mail klicken. Der Link führt zur WhatsApp-Anwendung, die eine Standardnachricht in dem von der Vonage-API benötigten Eingabefeld enthält.

Die folgende Abbildung zeigt ein Beispiel für die Darstellung der Seite:

A screenshot of a WhatsApp chatA screenshot of a WhatsApp chat

In diesem Lernprogramm lautet die Standardmeldung: "Flügel verbinden klebrig". Wenn Sie diese Nachricht senden, wird Ihre Nummer zur Whitelist für die Sandbox hinzugefügt. Sie können weitere Nummern hinzufügen, indem Sie denselben Text an den Empfänger senden und dabei die WhatsApp-Nummer verwenden, die Sie hinzufügen möchten.

Sobald dieser Prozess abgeschlossen ist, erstellen wir unsere Flask Anwendung in einer Datei namens whatsapp.py

import requests
import os
from os.path import join, dirname
from dotenv import load_dotenv
import vonage
from vonage import Client
from dotenv import load_dotenv

app = Flask(__name__)

dotenv_path = join(dirname(__file__), "../myapp.env")
load_dotenv(dotenv_path)

client = vonage.Client(
    key=os.getenv("VONAGE_API_KEY"), secret=os.getenv("VONAGE_API_SECRET")
)

data= {
    "from": { 
        "type": "whatsapp",
        "number": "VONAGE NUMBER",    
     },
    "to": { 
        "type": "whatsapp",
        "number": "YOUR NUMBER" },
    "message": {
      "content": {
        "type": "text",
        "text": "Thank you for registering with us. Welcome to Pharm services!"
      }
    }
}

url = "https://messages-sandbox.nexmo.com/v0.1/messages"
resp = requests.post(url, json=data, auth=(os.getenv("VONAGE_API_KEY"), os.getenv("VONAGE_API_SECRET")))

print (resp)

if __name__ == '__main__':
    app.run()

In dem obigen Code haben wir Vonage, unsere API-Bibliothek, importiert. Sie wurde bereits in unserem Terminal installiert; wir haben auch eine Anfrage importiert, um eine Anfrage an unsere POST-Anfrage zu senden, um unsere Umgebungsvariable und den Client aufzurufen, um Nachrichten über unsere Nachrichten-API zu senden.

N.B.: Fügen Sie die Vonage-Nummer und Ihre Nummer in den erforderlichen Abschnitt ein und fügen Sie kein "+" oder "000" an die Nummer an. Geben Sie nur Ihre Landesvorwahl an, z. B. "234817542367".

Sobald dies erfolgreich abgeschlossen ist, führen Sie python whatsapp.py in Ihrem Terminal aus. Sie erhalten eine 202 Antwort.

Für die Zwecke dieses Tutorials führen wir dieses Projekt mit python3. Um sicherzustellen, dass Sie diese Version von Python verwenden, führen Sie den folgenden Befehl aus, um die Version von Python zu überprüfen, mit der Sie arbeiten:

python --version

Wenn Ihre Versionsausgabe Python 2 ist. Bitte aktualisieren Sie alle Befehle, die Sie mit python3.

Hinzufügen einer Requirements.txt-Datei

A requirements.txt die alle Python-Pakete enthält, ist erforderlich, um die Anwendung auf PythonAnywhere zu installieren. Hier ist unser requirements.txt

argcomplete==1.12.3
boto3==1.17.66
botocore==1.20.66
cachetools==4.2.2
certifi==2020.12.5
cffi==1.14.5
cfn-flip==1.2.3
chardet==4.0.0
click==7.1.2
cryptography==3.4.7
csrf==0.1b1
Deprecated==1.2.12
dialogflow==1.1.0
durationpy==0.5
Flask==1.1.2
future==0.18.2
google-api-core==1.26.3
google-auth==1.30.0
googleapis-common-protos==1.53.0
grpcio==1.37.1
hjson==3.0.2
idna==2.10
itsdangerous==1.1.0
Jinja2==2.11.3
jmespath==0.10.0
jwt==1.2.0
kappa==0.6.0
MarkupSafe==1.1.1
packaging==20.9
pep517==0.10.0
pip-tools==6.1.0
placebo==0.9.0
protobuf==3.15.8
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.20
PyJWT==2.1.0
pyparsing==2.4.7
python-dateutil==2.8.1
python-dotenv==0.17.1
python-slugify==5.0.0
pytz==2021.1
PyYAML==5.4.1
requests==2.25.1
rsa==4.7.2
s3transfer==0.4.2
six==1.15.0
text-unidecode==1.3
toml==0.10.2
tqdm==4.60.0
troposphere==2.7.1
urllib3==1.26.4
vonage==2.5.5
Werkzeug==0.16.1
wrapt==1.12.1
wsgi-request-logger==0.4.6
zappa==0.52.0

In Ihrer PythonAnywhere-Bash-Konsole werden wir den nano Text-Editor. Der nächste Schritt ist das Hinzufügen der whatsapp.py und requirements.txt zu unserem PythonAnywhere-Konto hinzuzufügen; am besten kopieren Sie den Code und fügen ihn in die Zwischenablage ein. Öffnen Sie dann die Bash-Konsole mit Ihrem Texteditor:

nano whatsapp.py

Diese Codezeile führt Sie zum nano-Editor, fügen Sie den Code aus der [whatsapp.py](http://whatsapp.py) Datei ein. Verlassen Sie anschließend den Editor durch Eingabe von Ctrl-X und 'Ja' um die Änderungen zu speichern.

Wiederholen Sie den gleichen Vorgang für Ihre requirements.txt

nano requirements.txt

Mit den obigen Schritten haben Sie den Code von Ihrem lokalen Rechner zu PythonAnywhere verschoben, damit er dort gehostet wird.

Schaffung einer virtuellen Umgebung

Wir beginnen mit der Erstellung einer virtuellen Umgebung. Stellen Sie sicher, dass die virtuelle Umgebung auf Ihrem System installiert ist; führen Sie dazu den python package manager - **pip** *Befehl.*

python -m pip install --user virtualenv

Sobald virtual env installiert ist, fahren Sie mit dem Erstellen und Aktivieren einer virtuellen Umgebung fort.

virtualenv env

Aktivieren Sie die virtuelle Umgebung, indem Sie die folgenden Befehle ausführen:

source env/bin/activate

Sobald die virtuelle Umgebung läuft, installieren wir die erforderlichen Pakete für dieses Projekt, wie in unserer requirements.txt Datei zu sehen sind:

pip install -r requirements.txt

Lassen Sie uns nun eine Webanwendung auf PythonAnywhere erstellen.

Klicken Sie zunächst in der Navigationsleiste auf "Web". Dann "Neue Web-App hinzufügen".

Es sei denn, Sie haben ein kostenpflichtiges PythonAnywhere-Konto, in dem Sie einen benutzerdefinierten Domänennamen verwenden können. Andernfalls erstellt PythonAnywhere eine Domäne für Sie, die das Format "Ihr Benutzername.pythonanywhere.com" verwendet.

Klicken Sie auf die Schaltfläche "Weiter", um fortzufahren.

An example of the webapp runningAn example of the webapp running

Klicken Sie erneut auf "Weiter". Auf der nächsten Seite wählen Sie Ihr bevorzugtes Python-Webframework für dieses Projekt aus. Obwohl unsere Anwendung in Flask geschrieben ist, werden wir die manuelle Konfiguration verwenden, da sie für alle WSGI-kompatiblen Frameworks funktioniert.

A screenshot showing the creation of a new Python web app.A screenshot showing the creation of a new Python web app.

Klicken Sie auf 'Manuelle Konfiguration' und dann 'Weiter'. Auf **der nächsten Seite wählen Sie eine Python-Version aus. Ich werde "Python 3.8", und klicken Sie dann auf "**Next".**

Auf der folgenden Seite finden Sie Informationen zur manuellen Konfiguration. Klicken Sie auf "Weiter", um eine WSGI-Datei mit einer einfachen "Hello World"-Anwendung zu erstellen.

Die nächste Seite ist die letzte Konfigurationsseite, die Details zu Ihrer Webanwendung enthält. Ihre einfache "Hello World"-Anwendung ist nun erstellt.

Öffnen Sie eine neue Registerkarte in Ihrem Webbrowser, um die Anwendung anzuzeigen. Fügen Sie die folgende URL ein: "<your_username>.pythonanywhere.com". Mit dieser URL können wir überprüfen, ob die Bereitstellung der Anwendung erfolgreich war. Die Seite, die Ihnen angezeigt wird, sieht ähnlich aus wie das folgende Beispiel:

A screenshot showing a page served by PythonAnywhereA screenshot showing a page served by PythonAnywhere

Hinzufügen der Virtualenv-Konfiguration

Gehen Sie auf der PythonAnywhere-Seite zum Abschnitt "Virtualenv", wo wir den Speicherort der virtuellen Umgebung konfigurieren werden. Klicken Sie auf "Enter path to a virtualenv" und fügen Sie /home/ihrBenutzername/env d.h., wenn Ihr Benutzername MessageAPI ist. Sie sollten Folgendes eingeben /home/messageapi/env

Konfiguration: WSGI-Konfiguration

Auf der Konfigurationsseite gibt es einen Abschnitt "Code". Unter "Code" enthält die WSGI-Konfigurationsdatei den Pfad der WSGI-Konfigurationsdatei, die von PythonAnywhere hinzugefügt wurde.

A screenshot of the WSGI configurationA screenshot of the WSGI configuration

Notieren Sie sich die WSGI-Konfigurationsdatei, oder kopieren Sie den Pfad in die Zwischenablage, wenn Sie dies bevorzugen. Klicken Sie auf Ihre Bash-Konsole unter dem Abschnitt "Ihre Konsolen", nachdem Sie in der Navigationsleiste auf "Konsolen" geklickt haben. Die Bash-Sitzung ist das, was Sie als nächstes sehen werden.

Öffnen Sie die WSGI-Konfigurationsdatei in einem Texteditor und fügen Sie den kopierten Pfad hinzu:

nano /var/www/vonagemessageapi_pythonanywhere_com_wsgi.py

PythonAnywhere erzeugt eine lange Vorlagendatei, die einige Anweisungen enthält. Für dieses Lernprogramm müssen Sie jedoch den Inhalt dieser Datei entfernen und durch den folgenden Python-Code ersetzen:

from whatsapp import app as application

Drücken Sie am Anfang jeder Zeile Ctrl+k um sie zu löschen.

Diese Zeile benennt die Variable "app**"**, die in whatsapp.py angegebene Variable in "application" um und importiert sie. Die vom Flask-System exportierte WSGI-Anwendung speichert diese Variable. PythonAnywhere verwendet den vollständigen Namen "application" für den Zugriff darauf.

Anwendung neu laden

Sobald Sie diese Änderungen vorgenommen haben, speichern Sie die WSGI-Konfigurationsdatei. Kehren Sie dann zurück zu "Web" in der PythonAnywhere-Dashboard-Sektion zurück und klicken Sie auf die Schaltfläche "Neu laden" um die Webanwendung mit der endgültigen Konfiguration neu zu laden.

Verbindungs-URL

Über die Vonage "Nachrichten-API-Sandkasten" Seite, scrollen Sie nach unten zu "Webhaken". In diesem Abschnitt geben Sie die URL des Webhooks ein. Diese URL besteht aus der PythonAnywhere-URL, gefolgt von der /whatsapp-Route zum Webhook. Die URL hat in der Regel das Format http://<your-username>.pythonanywhere.com/bot im Allgemeinen. Wie unten gezeigt:

Creating the webhooks to handle WhatsApp messagesCreating the webhooks to handle WhatsApp messages

Speichern Sie die Webhooks. Führen wir nun unsere Anwendung aus

Chatten mit BOT

Mit diesem Schritt können Sie eine Anwendung erstellen, die Kunden eine Nachricht sendet; sobald sie sich auf Ihrer Website registrieren, sendet sie eine Anfrage an den Endpunkt des Bots, der auf PythonAnywhere läuft.

Hier ist ein Beispiel:

A screenshot of the activation of a WhatsApp BotA screenshot of the activation of a WhatsApp Bot

Schlussfolgerung

In diesem Tutorial haben wir gelernt, wie man eine Vonage Message API auf PythonAnywhere in Produktion bringt. Ich hoffe, Sie finden diese Richtlinien hilfreich. Neben der Nachrichten-API hat Vonage mehrere Produkte, die Sie in Ihrer Anwendung verwenden können.

Wenn Sie PythonAnywhere weiter nutzen möchten, können Sie ohne Einschränkungen auf ein kostenpflichtiges Konto umsteigen. Insbesondere erlaubt PythonAnywhere, dass kostenlose Anwendungen alle drei Monate manuell bestätigt werden.

Sie können die Vonage-Anwendung auch auf Heroku oder einer anderen Bereitstellungsplattform bereitstellen. Viel Spaß beim Programmieren!

Share:

https://a.storyblok.com/f/270183/400x359/a8f7069c7b/anita-achu.png
Anita Achu

Anita Achu is a software engineer, passionate about technical writing. She loves backend technologies and using these technologies to solve problems. Also, she is an ardent believer that rap is the best genre of music.