Mit dem Fortschritt der Technologie ist die Benachrichtigung der Bürger zu einem Ein-Schritt-Verfahren geworden. Vorbei sind die Zeiten, in denen man sich gegenseitig durch Mundpropaganda an Ereignisse oder andere Anlässe erinnert. Eine effektivere, effizientere und zuverlässigere Methode zur Benachrichtigung der Menschen ist die Nachrichtenübermittlung. Wenn Harry am Mittwoch um 18 Uhr einen Termin hat, können wir ihm einen Tag vorher eine Bestätigung und eine Stunde vor dem eigentlichen Termin eine Erinnerung schicken. Harry hat einen vollen Terminkalender. Wenn Sie ihn benachrichtigen, weiß er, dass er zu diesem Termin erwartet wird.
Dieses Tutorial behandelt folgende Themen:
- Versenden einer Nachricht unter Verwendung von Metadaten und Planen einer Nachricht
- Überprüfen des Status einer Nachricht
- Prüfen auf Antworten auf Nachrichten
- Kontrolle der Zustellbarkeitsberichte
- Bestätigung des Empfangs einer Antwort und des Zustellungsberichts, sobald sie bearbeitet worden ist
- Implementierung von Webhooks
Wenn Sie bei einem Abschnitt nicht weiterkommen, können Sie sich den Code in diesem Repository ansehen, um sich zu helfen.
Voraussetzungen
Um dieses Tutorial durchzuarbeiten, benötigen Sie:
Meldungen Ruby SDK (installiert)
Für diesen Teil benötigen Sie einen Code-Editor wie Sublime Text oder Atom. Wir werden Ruby verwenden, um unsere Anwendung zu entwickeln, also müssen Sie sicherstellen, dass Sie es auch auf Ihrem Rechner installiert haben. Erstellen Sie nun einen leeren Ordner für Ihr Projekt, nennen wir ihn "testApp". Öffnen Sie nun Ihre Eingabeaufforderung, wechseln Sie in das Verzeichnis und führen Sie den folgenden Befehl aus, um das Messages SDK zu installieren:
gem install Sinch Engage_messages_sdk
Der Versand einer Nachricht
Erstellen Sie eine app.rb-Datei in diesem Ordner und öffnen Sie sie in Ihrem Editor. Schreiben Sie den folgenden Code auf. Ich habe Kommentare eingefügt, damit Sie verstehen können, was in den einzelnen Zeilen vor sich geht.
require 'message_media_messages.rb' # Dieses Juwel enthält die gesamte Logik zur Verarbeitung der Sinch Engage Messages API.
require 'pp' # Dieses Juwel sorgt dafür, dass das JSON 'schön' angezeigt wird.
def setup
# Dies sind die erforderlichen API-Anmeldedaten, um auf die Nachrichten-API zuzugreifen.I
auth_user_name = 'API_KEY'
auth_password = 'API_SECRET'
use_hmac = false # Ändern Sie dies auf „true“, wenn Sie HMAC-Schlüssel verwenden.
# Client instanziieren
client = SinchEngageMessages::SinchEngageMessagesClient.new(
auth_user_name: auth_user_name,
auth_password: auth_password,
use_hmac: use_hmac
)
return client
end
def send_message
client = setup();
# Die Struktur der Nachricht erstellen
messages = client.messages
body_value = '{
"messages":[
{
"content":„Hallo Harry, du hast heute um 18 Uhr einen Termin bei Dr. Harrod. Antworte mit J, um zu bestätigen, oder N, um abzusagen.",
"destination_number":"HANDY_NUMMER",
"metadata": {
"name": "Ibrahim"
},
"scheduled": "2018-04-30T11:49:02.807Z",
"delivery_report": "true"
}
]
}';
# Analysieren des Nachrichteninhalts und Umwandeln in ein Ruby-Objekt.
body = JSON.parse(body_value);
# Finally, sending the message
result = messages.create_send_messages(body)
# Anzeige der Antwort in der Konsole
pp result
end
# Aufruf der Funktion send_message
send_message
Wir haben die Nachricht so geplant, dass sie einen Tag vor Harrys Termin gesendet wird, und wir haben auch einige Metadaten in den Nachrichtentext aufgenommen. Metadaten können verwendet werden, wenn Sie keine dauerhaften Daten in der Anwendung speichern wollen. In einer Nachricht können bis zu 10 Schlüssel/Wert-Metadatenpaare angegeben werden. Bevor Sie die Nachricht senden, geben Sie Ihre API-Anmeldedaten und Harrys Nummer ein, die +61491570156 lautet. Jetzt sind Sie startklar.
So sollte ein erfolgreicher Antwortkörper aussehen.
Überprüfung des Status der Nachricht
Die übermittelte Nachricht wird in die Warteschlange gestellt (siehe den Status auf dem obigen Screenshot). Aus der ursprünglichen API-Antwort geht nicht hervor, ob und wann die Nachricht tatsächlich gesendet wurde. Wir können mehr darüber herausfinden, indem wir den Nachrichtenstatus anhand der Nachrichten-ID überprüfen, die im Antwortobjekt zu finden ist.
Fügen wir etwas Code hinzu, um den Status der zuletzt gesendeten Nachricht zu überprüfen.
def check_status
client = setup()
messages = client.messages
message_id = 'IHRE_MESSAGE_ID'
result = messages.get_message_status(message_id)
print result.inspect
Ende
# Aufruf der Funktion check_status
check_status
Vergessen Sie nicht, den Platzhalter messageID durch eine tatsächliche messageID zu ersetzen. In meinem Fall war es fbbe1ae6-8ad7-441d-bc4c-551880911e2b. Dies ist die Antwort, die ich erhalten habe:
Die Antwortstruktur ist der von send_message sehr ähnlich. In der Antwort können Sie sehen, dass die Nachricht derzeit für die Zustellung vorgesehen ist. Hoffen wir, dass Harry seinen Termin nicht verpasst, und um das sicherzustellen, werden wir ihm im nächsten Abschnitt eine weitere Erinnerung schicken, in der wir herausfinden, wie man nach Antworten sucht.
Prüfen auf Antworten
Von einem Handy gesendete Antworten werden angezeigt, wenn wir die Antwortfunktion aufrufen. Versuchen wir also, von unserem Handy aus eine Nachricht an Harry zu senden.
Fügen wir nun etwas Code hinzu, um nach Antworten zu suchen.
def check_replies
client = setup()
replies = client.replies
result = replies.get_check_replies()
print result.inspect
Ende
# Aufruf der Funktion check_replies
check_replies
Bei jeder Anfrage an den Endpunkt "Check Replies" werden alle empfangenen Antworten, die noch nicht bestätigt wurden, über einen anderen Endpunkt zurückgegeben, der den Antworten ähnlich ist und "Confirm Replies" heißt. Eine Antwort vom Endpunkt "Check Replies" hat die unten dargestellte Struktur.
Zustellungsberichte prüfen
Zustellungsberichte sind eine Benachrichtigung über die Änderung des Status einer Nachricht, während sie bearbeitet wird.
Jede Anfrage an den Endpunkt Zustellungsberichte prüfen gibt alle empfangenen Zustellungsberichte zurück, die noch nicht über den Endpunkt Zustellungsberichte bestätigen bestätigt wurden.
Fügen wir nun etwas Code hinzu, um nach Zustellungsberichten zu suchen.
def check_delivery_reports
client = setup()
deliveryReports = client.delivery_reports
result = deliveryReports.get_check_delivery_reports()
pp result
end
# Aufruf der Funktion check_delivery_reportsfunction
check_delivery_reports
Eine Antwort vom Endpunkt "Check Delivery Reports" hat die folgende Struktur.
Bestätigung der Antworten und Zustellungsberichte
Der Endpunkt "confirm replies" (Antworten bestätigen) soll in Verbindung mit dem Endpunkt "check replies" (Antworten prüfen) verwendet werden, um eine zuverlässige Verarbeitung von Antwortnachrichten zu ermöglichen. Sobald eine oder mehrere Antwortnachrichten verarbeitet worden sind, können sie mit dem Endpunkt confirm replies bestätigt werden, so dass sie bei nachfolgenden Anfragen zur Überprüfung von Antworten nicht mehr zurückgegeben werden. Der Endpunkt "confirm delivery reports" (Zustellungsberichte bestätigen) funktioniert auf die gleiche Weise, allerdings mit dem Endpunkt "check delivery reports" (Zustellungsberichte prüfen).
Der Endpunkt "confirm replies" (Antworten bestätigen) nimmt eine Liste von Antwort-IDs wie folgt entgegen:
{
"reply_ids": [
"011dcead-6988-4ad6-a1c7-6b6c68ea628d",
"3487b3fa-6586-4979-a233-2d1b095c7718",
"ba28e94b-c83d-4759-98e7-ff9c7edb87a1"
]
}
Und der Endpunkt zur Bestätigung von Zustellungsberichten nimmt eine Liste von Zustellungsberichts-IDs wie folgt entgegen:
{
"delivery_report_ids": [
"011dcead-6988-4ad6-a1c7-6b6c68ea628d",
"3487b3fa-6586-4979-a233-2d1b095c7718",
"ba28e94b-c83d-4759-98e7-ff9c7edb87a1"
]
}
Es ist wahrscheinlich, dass Sie den Endpunkt "check replies" oder "check delivery reports" nach Ergebnissen abfragen. Wie Sie sehen können, kann dies sehr schnell sehr mühsam werden. Wie das? Sie müssen den Endpunkt für jede send_message-Anfrage abfragen, also für 1 000 gesendete Nachrichten sind das 1 000 Anfragen an jeden Endpunkt. Herrje! Es ist nicht empfehlenswert, Antworten und Berichte getrennt zu bearbeiten. Stattdessen können Sie Webhooks verwenden. Ein Webhook ist im Grunde eine URL, und wenn eine Webanwendung diesen Webhook implementiert, dann können Nachrichten an diese URL gepostet werden, wenn bestimmte Dinge passieren.
Durch die Verwendung von Webhooks können Sie automatisch Änderungen des Nachrichtenstatus, Antworten auf die Nachricht oder Zustellungsberichte für die Nachricht erhalten.
Webhooks
Um Webhooks zu aktivieren, geben Sie einfach einen callback_url-Parameter im Nachrichtentext Ihrer send_message-Funktion an.
"messages":[
{
"content":„Nur eine Erinnerung, du hast heute einen Termin.“,
"destination_number":"+61491570156",
"metadata": {
"name": "Ibrahim"
},
"delivery_report": "true",
"callback_url": "https://my.callback.url.com"
}
]
Ich persönlich teste gerne Callback-Aufrufe auf einer Website namens Webhook Tester. Auf dieser Website können Sie auf einfache Weise Webhooks und andere Arten von HTTP-Anfragen testen. Es protokolliert alle Anfragen, die an diese URL gesendet werden, sofort, und das Beste daran ist, dass Sie nicht einmal aktualisieren müssen.
Versuchen wir, eine Nachricht mit einer callback_url von Webhook Tester zu senden. Um eine Rückruf-URL zu erhalten, besuchen Sie den Webhook-Tester und kopieren Sie dann die eindeutige URL, die für Sie auf der Landing Page generiert werden sollte.
Ändern wir unseren Nachrichtentext, um die Unterstützung für die callback_url hinzuzufügen. So sollte Ihr Nachrichtentext aussehen. Ich habe meine callback_url eingefügt.
"messages":[
{
"content":„Nur eine Erinnerung, du hast heute einen Termin.“,
"destination_number":"+61491570156",
"metadata": {
"name": "Ibrahim"
},
"delivery_report": "true",
"callback_url": "https://webhook.site/d49c3883-c1fd-4cf5-8977-52a4ea57ddc2"
}
]
Einige Sekunden nach dem Aufruf der Funktion send_message sollten Sie etwas Ähnliches auf dem Bildschirm Ihres Webhook-Testers sehen.
Auf der linken Seite des Bildschirms finden Sie mehrere Anfragen. Dies sind Ihre Zustellungsberichte, und jeder hat einen anderen Status. Dies veranschaulicht, wie sich der Status der Nachricht auf dem Weg vom Absender über unser Gateway zum Träger und schließlich zum Empfänger ändert. Um eine "schönere" Ansicht des Antwortobjekts zu erhalten, aktivieren Sie das Kästchen "JSON formatieren" ganz oben auf dem Bildschirm direkt unter der Navigationsleiste.
Hier ist ein Ausschnitt aus einem meiner Lieferberichte:
Fazit
Harry ist auf dem Weg zu seinem Termin. Er sagt, ohne Sie hätte er es vergessen. Sie haben nicht nur dafür gesorgt, dass Harry seinen Termin wahrnimmt, sondern auch eine Menge dabei gelernt. Großartige Arbeit.
Code jetzt holen
Der gesamte Code für dieses Tutorial ist in der Ruby Messaging Tutorial Github Repo verfügbar
Ressourcen