
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.
Eingehende SMS mit Go empfangen
In einem früheren Beitrag haben wir Ihnen gezeigt, wie Sie eine SMS mit Go versenden. In diesem Beitrag erfahren Sie, wie Sie SMS-Nachrichten mit Ihrer virtuellen Vonage-Nummer empfangen können.
Für den Empfang von eingehenden SMS ist ein öffentlich zugänglicher Webhook erforderlich, der mit Ihrem Vonage Account konfiguriert werden muss. Dieses Tutorial behandelt die Einrichtung eines öffentlich zugänglichen Webhooks und die Funktionalität für den Empfang eingehender SMS-Nachrichten. 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 an Ihre virtuelle Nummer empfängt, prüft es, ob Sie einen Webhook zur Weiterleitung dieser SMS konfiguriert haben. Diese Konfiguration kann entweder Account-weit oder spezifisch für eine virtuelle Rufnummer erfolgen.
Wenn Sie einen Webhook konfiguriert haben, sendet Vonage eine GET Anfrage. Es ist also an der Zeit, den Code zu erstellen, der diese Webhook-Anfrage bearbeitet.
Erstellen Sie eine Datei namens inbound-sms.go und geben Sie den folgenden Code ein:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/webhooks/inbound-sms", func(w http.ResponseWriter, r *http.Request) {
params := r.URL.Query()
fmt.Println("From: " + params["msisdn"][0] + ", message: " + string(params["text"][0]))
})
http.ListenAndServe(":8080", nil)
}Dieser Code wartet auf jede Anfrage, die an den /webhooks/inbound-sms Endpunkt gesendet wird und gibt die msisdn und text Teil des Körpers der Anfrage aus.
Stellen Sie das Projekt ins Internet
Damit Vonage APIs Anfragen an Ihren Webhook-Endpunkt stellen können, muss dieser öffentlich über das Internet zugänglich sein.
Ngrok ist unser bevorzugtes Werkzeug für die Ausführung von Beispielen in der Entwicklung. Aus diesem Grund ist ngrok der Dienst der Wahl in diesem Lernprogramm. Falls ngrok noch nicht installiert ist, finden Sie eine gute Einführung in ngrok und wie man es installiert, in diesem Tutorium.
Starten Sie Ngrok mit dem folgenden Befehl:
Notieren Sie sich die öffentlichen URLs, die ngrok für Sie erstellt. Diese werden ähnlich (aber anders als) die folgenden sein:
Diese URL ist jedes Mal anders, wenn Sie den Befehl ausführen, wenn Sie den kostenlosen Plan verwenden. Sie müssen also die inbound-sms URL im Dashboard jedes Mal aktualisieren, wenn Sie den Befehl ausführen.
Kaufen Sie eine Vonage-Nummer
Wenn Sie noch keine virtuelle Telefonnummer von Vonage erworben haben, um diesem Tutorial folgen zu können, kaufen Sie bitte jetzt eine. Sie können dies über das Entwickler-Dashboardtun; es gibt jedoch eine weitere Option, nämlich die Nexmo CLI. Die CLI kann bei der Durchführung der Account-Verwaltungsaufgaben helfen, ohne dass Sie Ihr Terminal verlassen müssen.
Der folgende Befehl sucht nach Telefonnummern, die in der Lage sind, SMS zu senden und zu empfangen, und stellt sicher, dass die Nummer zu dem von Ihnen gewählten Land gehört. Die zweistellige Landesvorwahl wählt das Land aus; für die USA wäre das zum Beispiel US.
Wählen Sie eine der Telefonnummern aus der Liste der Telefonnummern, die bei der Eingabe des Befehls angezeigt werden. Ersetzen Sie VONAGE_VIRTUAL_NUMBER in dem unten stehenden Befehl durch die gewählte Telefonnummer und führen Sie den Befehl aus.
Konfigurieren Sie Ihren Vonage Account
Ihre neue virtuelle Vonage-Nummer und Ihre Webhook-URL müssen miteinander verknüpft werden, damit Vonage weiß, wohin die eingehenden SMS-Nachrichten zu senden sind.
Wie im vorherigen Schritt können Sie Ihre Webhook-URL zu Ihrer virtuellen Vonage-Rufnummer hinzufügen, aber in dieser Anleitung wird gezeigt, wie Sie diese Änderung über das Webportal vornehmen.
Bevor Sie mit der Einrichtung beginnen, sollten Sie Folgendes beachten:
VONAGE_VIRTUAL_NUMBER: Die Nummer, die Sie zu verwenden versuchen.WEBHOOK_URL: Ihre Ngrok-URL, gefolgt von/webhooks/inbound-smsso dass sie etwa so aussehen sollte:https://56feb86007e8.ngrok.io/webhooks/inbound-sms
Gehe zu Numbers-Seite in Ihrem Dashboard.
Klicken Sie auf das Symbol "Bearbeiten" (sieht aus wie ein Stift) in der Spalte "Verwalten". Fügen Sie in das Popup-Fenster unter SMS > Eingehende Webhook-URL Ihre WEBHOOK_URL ein und klicken Sie auf "Speichern".
Zeit zum Testen
Wenn Ngrok bereits läuft, stellen Sie in einem neuen Terminalfenster sicher, dass Sie zu dem Projektverzeichnis navigiert haben, das Ihre receive-sms.go Datei enthält. Führen Sie den folgenden Befehl aus:
Jetzt können Sie von Ihrem Telefon aus eine SMS an Ihre VONAGE_VIRTUAL_NUMBER.
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 Inbound SMS:
{
"api-key": "abcd1234",
"msisdn": "447700900001",
"to": "447700900000",
"messageId": "0A0000000123ABCD1",
"text": "Hello world",
"type": "text",
"keyword": "TEST",
"message-timestamp": "2020-01-01 12:00:00 +0000"
} Weitere Lektüre
Sie finden den in diesem Tutorial gezeigten Code in der Go-Code-Snippets-Repository.
Nachfolgend finden Sie einige andere Tutorials, die wir entweder für Go oder für den Empfang von SMS geschrieben haben:
Vergessen Sie nicht, wenn Sie Fragen, Ratschläge oder Ideen haben, die Sie mit der Community teilen möchten, dann können Sie sich gerne in unserem Slack-Arbeitsbereich der Gemeinschaft. Ich würde mich freuen, von allen zu hören, die dieses Tutorial umgesetzt haben und wie ihr Projekt funktioniert.
