Echtzeit-Dateneinspeisung in mehrere Kanäle über Messages API
Dieses Tutorial zeigt Ihnen, wie Sie mit der Messages API Daten in Echtzeit an mehrere Kanäle senden können. In diesem Lernprogramm wird das Senden von Daten an alle unterstützten Kanäle demonstriert. Es werden Informationen zum Testen aller Kanäle bereitgestellt. Wenn Sie Facebook Messenger zum Testen verwenden möchten, empfiehlt es sich, mit diese Anleitung zu lesen, da diese Anleitung viele Facebook-spezifische Informationen enthält. Um WhatsApp und Viber zu testen, benötigen Sie Business Accounts bei diesen Anbietern.
Beispielszenario
In diesem Tutorial werden Sie sich mit dem Senden von Echtzeit-Aktienkursen an einen Benutzer auf dem Kanal seiner Wahl beschäftigen. Ein Nutzer kann sich registrieren, um Daten über einen beliebigen unterstützten Kanal seiner Wahl zu erhalten. Er kann die Aktienkurse zum Beispiel über sein Mobiltelefon per SMS oder über den Facebook Messenger empfangen. WhatsApp und Viber werden ebenfalls unterstützt. Bei Facebook Messenger, WhatsApp und SMS können die Nutzer ihr Interesse an einer bestimmten Aktie anmelden. Viber unterstützt jedoch keine eingehenden Nachrichten an ein Unternehmen, so dass sich die Nutzer für den Empfang der Nachrichten über eine Website registrieren müssen, um Daten zu erhalten. Bei WhatsApp kommt erschwerend hinzu, dass WhatsApp ein Unternehmen benötigt, um dem Nutzer eine Nachricht zu senden. ein MTM bevor der Benutzer dem Empfang von Nachrichten zustimmen kann.
Bitte beachten Sie, dass in diesem Lernprogramm nur simulierte Aktienkurse verwendet werden.
Quellcode
Der Python-Quellcode für dieses Projekt ist in der Vonage Community verfügbar GitHub-Repository. Von besonderem Interesse ist ein generischer Client, der eine bequeme Möglichkeit bietet, mit einem einzigen Methodenaufruf eine Nachricht an jeden unterstützten Kanal zu senden. Sie werden auch Python-Code sehen, um eingehende Nachrichten auf WhatsApp, SMS und Messenger zu behandeln.
Voraussetzungen
- Vonage-Account erstellen
- Node JS installieren - die für die Verwendung der Vonage-Befehlszeilenschnittstelle (CLI) erforderlich sind.
- Installieren Sie die Vonage CLI
- Wissen, wie Sie Ihren Webhook-Server lokal testen können
- Python 3 installiert
- Kolben installiert
- Besitzen Sie Accounts für die Kanäle, die Sie unterstützen möchten, wie Facebook, Viber und WhatsApp.
Es kann auch nützlich sein, die folgenden Übersichtsthemen zu lesen:
Wenn Sie planen, diesen Anwendungsfall mit Facebook Messenger zu testen, wird empfohlen, dass Sie die folgenden Schritte durchführen diese Anleitung Erstens.
Die Schritte
Nachdem die Voraussetzungen erfüllt sind, gehen Sie wie folgt vor:
- Erstellen einer Vonage-Applikation
- Ngrok zum Laufen bringen
- Legen Sie Ihre SMS-Webhooks im Dashboard fest
- Schreiben Sie Ihre Basisanwendung
- SMS einsenden
- Überprüfen Sie den generischen Client-Code
- Der Anwendungsfall im Rückblick
- Testen der App
Es gibt verschiedene Möglichkeiten, das gleiche Ergebnis mit Vonage zu erzielen. In diesem Tutorial wird nur ein bestimmter Weg gezeigt, z. B. wie Sie die Anwendung über die Befehlszeile und nicht über das Dashboard erstellen. In anderen Tutorials werden andere Vorgehensweisen gezeigt.
Erstellen Sie Ihre Vonage Applikation
Falls Sie dies noch nicht getan haben, erstellen Sie ein neues Verzeichnis für Ihr Projekt, z. B. real-time-app. Wechseln Sie in dieses Verzeichnis.
Verwenden Sie die CLI, um Ihre Vonage-Anwendung zu erstellen:
Notieren Sie sich die generierte Application ID. Sie können dies auch in der Dashboard.
Mit diesem Befehl wird auch ein privater Schlüssel erstellt, real_time_app.key in Ihrem aktuellen Verzeichnis, sowie die Aktualisierung/Erstellung von vonage_app.json.
Mit diesem Befehl werden auch die beiden Webhooks festgelegt, über die die gesamte Interaktion zwischen Ihrer Anwendung und Vonage erfolgt. Sie müssen einen Server haben, der für Vonage unter diesen URLs erreichbar ist.
Ngrok zum Laufen bringen
Stellen Sie sicher, dass Sie Ngrok zum Testen lokal laufen lassen. Um Ngrok zu starten, geben Sie ein:
Um eine temporäre Ngrok-URL zu erzeugen. Wenn Sie ein bezahlter Abonnent sind, können Sie eingeben:
Beachten Sie, dass Ngrok in diesem Fall die Vonage-Webhooks, die Sie bei der Erstellung Ihrer Vonage-Anwendung angegeben haben, an localhost:9000.
Legen Sie Ihre SMS-Webhooks im Dashboard fest
Gehen Sie im Dashboard auf Account-Einstellungen. Hier können Sie Ihre SMS-Webhooks auf Account-Ebene einstellen:
| Webhook | URL |
|---|---|
| Lieferschein | https://abcd1234.ngrok.io/webhooks/delivery-receipt |
| Eingehende SMS | https://abcd1234.ngrok.io/webhooks/inbound-sms |
Beachten Sie, dass Sie "abcd1234" in den Webhook-URLs durch Ihre eigenen Informationen ersetzen müssen. Wenn Sie einen bezahlten Ngrok Account haben, kann das Ihre eigene Domain sein.
HINWEIS: Dieser Schritt ist erforderlich, da die Messages und Dispatch Applications derzeit nur ausgehende SMS unterstützen, nicht aber eingehende SMS. Aus diesem Grund werden Sie die SMS-Webhooks auf Account-Ebene verwenden, um eingehende SMS zu unterstützen, aber Sie werden die Messages API für den Versand ausgehender SMS verwenden.
Schreiben Sie Ihre Basisanwendung
Im einfachsten Fall würde Ihre Anwendung Informationen über eingehende Nachrichten sowie Daten über den Empfang und den Status von Nachrichten protokollieren. Dies würde wie folgt aussehen:
from flask import Flask, request, jsonify
from pprint import pprint
app = Flask(__name__)
@app.route('/webhooks/inbound', methods=['POST'])
def inbound_message():
print ("** inbound_message **")
data = request.get_json()
pprint(data)
return ("inbound_message", 200)
@app.route('/webhooks/status', methods=['POST'])
def message_status():
print ("** message_status **")
data = request.get_json()
pprint(data)
return ("message_status", 200)
@app.route('/webhooks/inbound-sms', methods=['POST'])
def inbound_sms():
print ("** inbound_sms **")
values = request.values
pprint(values)
return ("inbound_sms", 200)
@app.route('/webhooks/delivery-receipt', methods=['POST'])
def delivery_receipt():
print ("** delivery_receipt **")
data = request.get_json()
pprint(data)
return ("delivery_receipt", 200)
if __name__ == '__main__':
app.run(host="localhost", port=9000)
Fügen Sie diesen Code in eine Datei namens app1.py und speichern Sie es.
Führen Sie es lokal mit aus:
SMS einsenden
Ihre Basisanwendung ist nun einsatzbereit und kann Ereignisse protokollieren. Sie können diese Basisanwendung testen, indem Sie eine SMS an eine beliebige Vonage-Nummer senden, die mit einer beliebigen Sprachanwendung verknüpft ist, wobei die Vonage-Nummer über Sprach- und SMS-Funktionen verfügt. Wenn Sie keine Sprachanwendung haben und nicht sicher sind, wie Sie eine erstellen können, können Sie sich diese Informationen. Der Grund für diesen zusätzlichen Schritt ist, dass Messages und Dispatch API derzeit keine eingehenden SMS unterstützen, sondern nur ausgehende SMS, sodass Sie den Webhook auf Kontoebene verwenden müssen, um eingehende SMS-Benachrichtigungen zu erhalten.
Wenn Sie die Rückverfolgungsinformationen untersuchen, die beim Senden einer SMS erzeugt werden, sehen Sie etwas Ähnliches wie das Folgende:
Generischer Kunde
Derzeit unterstützt Vonage offiziell keine Messages und Dispatch API im Python Server SDK, aber unsere REST API wird unterstützt (Beta) und die Python-Code wird bereitgestellt im Projekt für Sie in einer wiederverwendbaren Klasse. Diese Klasse ermöglicht das Senden einer Nachricht über die Messages API an einen der unterstützten Kanäle. Es lohnt sich, einen kurzen Blick auf den Code zu werfen:
def send_message (self, channel_type, sender, recipient, msg):
if channel_type == 'messenger':
from_field = "id"
to_field = "id"
elif channel_type == 'whatsapp' or channel_type == "sms":
from_field = "number"
to_field = "number"
elif channel_type == 'viber_service_msg':
from_field = "id"
to_field = "number"
data_body = json.dumps({
"from": {
"type": channel_type,
from_field: sender
},
"to": {
"type": channel_type,
to_field: recipient
},
"message": {
"content": {
"type": "text",
"text": msg
}
}
})
...
Der Body wird für Sie auf der Grundlage des Kanaltyps erstellt. Der Grund dafür ist, dass die Details zwischen den Kanälen leicht unterschiedlich sind - Facebook verwendet beispielsweise IDs, während WhatsApp und SMS nur Nummern verwenden. Viber verwendet eine ID und eine Nummer. Der Code verwendet dann die Messages API, um die Nachricht für Sie zu senden. Dies ist die Grundlage des Anwendungsfalls, mit ein paar zusätzlichen Bits, um eine Benutzeranmeldung zu ermöglichen.
Der Anwendungsfall im Rückblick
Es ist an der Zeit, diesen Anwendungsfall genauer zu untersuchen, damit Sie Ihre Anwendung effektiver gestalten können.
Bei Kanälen, die eingehende Nachrichten unterstützen (Messenger, WhatsApp und SMS), können Sie dem Nutzer erlauben, eine Nachricht zu senden, um sich anzumelden. Bei Viber muss dies über einen anderen Teil der Web-App erfolgen. Normalerweise würden Sie ein Formular bereitstellen, in dem sich der Nutzer für den Echtzeit-Feed anmelden kann.
Wenn ein Benutzer eine eingehende Nachricht wie "Hallo" sendet, antwortet die App mit einer Hilfsnachricht. In unserem Fall lautet diese: "Senden Sie uns eine Nachricht mit MSFT oder GOOGL für Echtzeitdaten". Diese Anmeldung wird dann durch eine weitere Nachricht bestätigt, in der bestätigt wird, welchen Feed Sie abonniert haben.
Danach erhalten Sie einen Echtzeitkurs für das von Ihnen gewählte Aktiensymbol. Wenn Sie sich zusätzlich auf einem anderen Kanal anmelden möchten, können Sie dies tun. Wenn Sie Ihr Börsensymbol ändern möchten, senden Sie eine Nachricht mit dem neuen Symbol: Sie wird bestätigt, und der Datenstrom wird entsprechend geändert.
Der Kerncode zur Implementierung dieser Funktion befindet sich in der Funktion proc_inbound_msg in app_funcs.py.
Bei WhatsApp gibt es einen zusätzlichen Schritt, bei dem Sie eine MTM-Nachricht bevor der Nutzer sich für den Empfang von Daten anmelden kann. Der Einfachheit halber wird dies als separates Codestück.
Testen der App
Sie können die App mit ausführen:
Wo APP_ID ist die Vonage-Anwendungs-ID Ihrer Anwendung "Messages".
SMS
Um mit SMS zu testen, senden Sie eine SMS wie zuvor. Sie erhalten eine Hilfsnachricht. Senden Sie eine Nachricht mit dem Börsensymbol von entweder MSFT oder GOOGL. Sie erhalten dann in regelmäßigen Abständen eine (simulierte) Preisaktualisierung. Derzeit müssen Sie die App verlassen, um diese Nachrichten nicht mehr zu erhalten, aber Sie könnten die Möglichkeit hinzufügen, diese Nachrichten abzuschalten, wie in diese Anleitung.
Facebook Messenger
Um mit Facebook Messenger zu testen, sind ein paar zusätzliche Schritte erforderlich. Diese wurden im Detail besprochen in diese AnleitungDaher wurden diese Informationen hier nicht wiedergegeben.
Viber
Um dies zu testen, benötigen Sie einen gültigen Viber Business Account. Sie würden einen Teil Ihrer Webanwendung haben, der den Benutzer auffordern würde gibt ihre Telefonnummer und das Symbol an denen sie interessiert sind. Dem Nutzer könnte dann eine erste Nachricht geschickt werden, die er annehmen oder ablehnen kann. A kleines Testprogramm wird bereitgestellt, um das Testen des generischen Clients mit Viber zu demonstrieren.
WhatsApp erfordert einen zusätzlichen Schritt, um es vollständig zu testen. Sie müssen dem Benutzer eine WhatsApp-MTM (Vorlage) senden, bevor er Nachrichten empfangen kann. Der Code dafür wird in diesem Tutorial nicht beschrieben, aber ein Beispielcode ist verfügbar hier. Sie können dann den in diesem Tutorial bereitgestellten allgemeinen Client verwenden, um weitere WhatsApp-Nachrichten zu versenden.
Zusammenfassung
In diesem Lernprogramm haben Sie einen Anwendungsfall gesehen, bei dem der Benutzer Echtzeitdaten über jeden von der Messages API unterstützten Kanal empfangen kann.