
Teilen Sie:
Ehemaliger Ausbilder für Entwickler @Vonage. Kommt von einem PHP-Hintergrund, ist aber nicht auf eine Sprache beschränkt. Ein begeisterter Gamer und Raspberry-Pi-Enthusiast. Oft beim Bouldern in Kletterhallen anzutreffen.
Empfang von SMS-Zustellungsbestätigungen mit Go
Lesedauer: 7 Minuten
In früheren Beiträgen haben wir Ihnen gezeigt, wie Sie eine SMS mit Go versenden und eine SMS mit Go zu empfangen. In diesem Beitrag erfahren Sie, wie Sie SMS-Zustellungsbestätigungen für SMS-Nachrichten erhalten, die von Ihrem Vonage Account gesendet wurden.
Dieses Tutorial behandelt die Einrichtung eines öffentlich zugänglichen Webhooks und die Funktionalität zum Empfang von SMS-Zustellungsbestätigungen. Sie finden den in diesem Tutorial verwendeten Code in unserem Go Code Snippets Repository.
Voraussetzungen
Vonage API-Konto
Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.
In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.
Einrichten des Codes
Wenn Vonage eine SMS von Ihrem Account sendet, wird geprüft, ob Sie einen Webhook konfiguriert haben, an den etwaige Zustellungsquittungen weitergeleitet werden sollen. Diese Konfiguration ist eine kontoweite Einstellung.
Wenn Sie einen Webhook konfiguriert haben, sendet Vonage eine POST Anfrage an diesen Webhook senden. Es ist also an der Zeit, den Code für die Bearbeitung dieser Webhook-Anfrage zu erstellen.
Erstellen Sie eine Datei namens delivery-receipt.go und geben Sie den folgenden Code ein:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/webhooks/delivery-receipt", func(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil {
fmt.Fprintf(w, "ParseForm() err: %v", err)
return
}
fmt.Println("Delivery receipt status: " + r.FormValue("status"))
})
http.ListenAndServe(":8080", nil)
}Dieser Code wartet auf jede Anfrage, die an den /webhooks/delivery-receipt Endpunkt gesendet wird und gibt den status Teil des Körpers der Anfrage aus.
Stellen Sie das Projekt ins Internet
Ihr Webhook-Endpunkt muss über das Internet öffentlich zugänglich sein, damit die Vonage-APIs Anfragen an ihn stellen können.
Ngrok ist das von uns empfohlene Tool für die Ausführung von Beispielen in der Entwicklung und wird in diesem Tutorial für die Bereitstellung des Webhook-Endpunkts verwendet. Wenn Sie ngrok noch nicht installiert haben, finden Sie eine gute Einführung in diesen Dienst und wie man ihn installiert in diesem Tutorial.
Starten Sie ngrok mit dem folgenden Befehl:
Notieren Sie sich die öffentlichen URLs, die ngrok für Sie erstellt; diese werden ähnlich wie im folgenden Beispiel aussehen:
Anmerkung: Diese URL ist jedes Mal anders, wenn Sie den Befehl ausführen, wenn Sie den kostenlosen Plan verwenden. Sie müssen also die delivery-receipt URL im Dashboard jedes Mal aktualisieren, wenn Sie den Befehl ausführen.
Konfigurieren Sie Ihren Vonage Account
Ihr Vonage Account muss konfiguriert werden, damit Sie wissen, wo die Zustellungsquittungen angefordert werden können. Sie können die Webhook-URL für den Zustellungsbeleg auf Ihrer Vonage-Einstellungsseiteunter dem Label Zustellungsquittungen hinzufügen. Das folgende Bild zeigt ein Beispiel dafür:
An example of the delivery receipts settings in the Vonage Dashboard
Zeit zum Testen
Wenn Ngrok bereits läuft, stellen Sie in einem neuen Terminalfenster sicher, dass Sie zu dem Projektverzeichnis navigiert haben, das Ihre delivery-receipt.go Datei enthält. Führen Sie den folgenden Befehl aus:
Führen Sie nun in einem anderen Terminal-Fenster den folgenden Befehl aus und ersetzen Sie YOUR_NUMBER durch Ihre Telefonnummer, die die Test-SMS erhalten soll.
Wenn Sie das Terminalfenster überprüfen, in dem Sie go run ./ausgeführt haben, sollten Sie eine Zeile wie die unten stehende sehen:
Der Webhook empfängt mehr Felder als oben angezeigt werden. Eine vollständige Liste dieser Felder mit einigen Beispielen finden Sie unten. Das folgende Beispiel stammt aus der API-Dokumenten unter Delivery Receipt:
{
"msisdn": "447700900000",
"to": "AcmeInc",
"network-code": "12345",
"messageId": "0A0000001234567B",
"price": "0.03330000",
"status": "delivered",
"scts": "2001011400",
"err-code": "0",
"api-key": "abcd1234",
"client-ref": "my-personal-reference",
"message-timestamp": "2020-01-01 12:00:00 +0000",
"timestamp": "1582650446",
"nonce": "ec11dd3e-1e7f-4db5-9467-82b02cd223b9",
"sig": "1A20E4E2069B609FDA6CECA9DE18D5CAFE99720DDB628BD6BE8B19942A336E1C"
} Weitere Lektüre
Sie finden den in diesem Tutorial gezeigten Code in der Go-Code-Snippets-Repository.
Im Folgenden finden Sie einige andere Tutorials, die wir für Go geschrieben haben:
Vergessen Sie nicht: Wenn Sie Fragen, Ratschläge oder Ideen haben, die Sie mit der Community teilen möchten, können Sie sich gerne in unserem Slack-Arbeitsbereich der Community. Ich würde mich freuen, von allen zu hören, die dieses Tutorial implementiert haben und wie ihr Projekt funktioniert.
