
Teilen Sie:
Ehemaliger .NET Developer Advocate @Vonage, polyglotter Software-Ingenieur, AI/ML
Empfangen von SMS-Zustellungsbestätigungen mit ASP.NET Core MVC
Nach dem Versand einer SMS ist es gut, zu überprüfen, ob die Nachricht an ihr Ziel zugestellt wurde. Glücklicherweise ist das eine Funktion, die Sie mit ASP.NET leicht erstellen können. In diesem Beispiel empfangen wir einen Webhook von der Vonage SMS API und drucken das JSON in diesem Webhook auf der Konsole aus.
Beispiel Repo
Wenn Sie die Schritt-für-Schritt-Anleitung überspringen und einfach mit dem Beispiel spielen möchten, finden Sie den Code auf GitHub.
Voraussetzungen
Die neueste Version des .NET Core 3.1 SDK
Entweder Visual Studio 2019, Visual Studio für Mac oder Visual Studio Code - ich werde Visual Studio Code für diese Demo verwenden.
Ich sende eine SMS-Nachricht mit der Nexmo CLI. Sie können das verwenden, oder Sie können sogar Ihre eigene Sendelogik zu dieser Anwendung hinzufügen!
Optional - ich habe ngrok um diese Demo zu testen
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.
Erstellen Sie die App
Die App erstellen
Öffnen Sie Ihre Konsole und navigieren Sie zu dem Verzeichnis, in dem Sie das Projekt erstellen möchten. Wenn Sie sich im richtigen Verzeichnis befinden, führen Sie den Befehl aus:
Jetzt cd in ReceiveDlrAspNet und fügen Sie das Vonage-Paket mit dem folgenden Befehl hinzu:
Öffnen Sie dieses Verzeichnis in VS Code.
Hinzufügen der Route
Als Nächstes fügen wir die Lieferscheinroute zu unserem Home Controller hinzu. Öffnen Sie Controllers\HomeController.cs und fügen Sie das Folgende in die HomeController Klasse hinzu:
[HttpPost("/webhooks/dlr")]
public async Task<IActionResult> HandleDlr()
{
using(var reader = new System.IO.StreamReader(Request.Body))
{
var json = await reader.ReadToEndAsync();
Console.WriteLine(json);
}
return NoContent();
} Prüfung
Aus der Entwicklungsperspektive war das alles, was wir tun mussten, also gehen wir zum Testen über. Wir werden dies mit ngroktesten, mit dem wir einen öffentlich zugänglichen Tunnel zu unserer Anwendung aufbauen können. Dies ist nützlich, wenn wir öffentlich zugängliche HTTP-Endpunkte für unsere Anwendungen bereitstellen müssen. Wenn Sie dies mit IIS Express testen wollen, sollten Sie sich unseren Erklärungen zu diesem Thema lesen, da es besondere Überlegungen gibt. Im Endeffekt müssen wir eine --host-header Option hinzufügen müssen, wenn wir ngrok starten.
Konfigurieren Sie Kestrel oder IIS Express
Öffnen Sie Properties\launchSettings.json. Sie werden hier zwei Objekte sehen: iisSettings und . profiles. profiles hat zwei Objekte, IIS Express und ReceiveDlrAspNet (vorausgesetzt, Sie haben Ihr Projekt so benannt). Wenn Sie in IIS Express arbeiten, ändern Sie die applicationUrl des iisSettings Objekt in http://localhost:5000 und setzen Sie das sslPort auf 0. Wenn Sie (wie ich) Kestrel verwenden, löschen Sie den https://localhost:5001 Abschnitt des ReceiveDlrAspNet Objekts. Beides wird dazu führen, dass die App auf localhost:5000laufen, was es uns ermöglicht, ngrok dazu zu bringen, Nachrichten weiterzuleiten.
Starten Sie die App
Führen Sie in Ihrem Terminal den Befehl dotnet run.
Start Ngrok
Starten Sie ngrok mit dem folgenden Befehl:
Daraufhin wird ein Bildschirm angezeigt, der wie folgt aussieht:
ngrok
Wenn Sie zu der Weiterleitungsadresse für HTTP navigieren (in meinem Fall http://2ad8b960630f.ngrok.io, aber der 2ad8b960630f Teil wird beim kostenlosen ngrok-Tarif variieren), sehen Sie die generische Willkommensseite für eine ASP.NET Core-App. Wir haben keine der Ansichten geändert, was bedeutet, dass Ihre App betriebsbereit und zugänglich ist!
Konfigurieren Sie Ihre Webhooks
Das letzte, was wir tun müssen, bevor wir bereit sind, Webhooks zu empfangen, ist Vonage mitzuteilen, wohin die Webhooks gesendet werden sollen - in meinem Fall sollen sie an den Endpunkt gesendet werden, der unter http://2ad8b960630f.ngrok.io/webhooks/dlr. Navigieren Sie dazu zur Seite Einstellungsseite des Dashboards und setzen Sie die Delivery receipts auf die Adresse Ihres eigenen Endpunkts. Setzen Sie außerdem die HTTP Method auf POST-JSONein, da wir davon ausgehen, dass es sich um eine POST-Anfrage mit einer JSON-Nutzlast handelt.
Dashboard settings
Klicken Sie auf die Schaltfläche "Speichern", und schon sind Sie für den Empfang von SMS-Zustellungsbestätigungen konfiguriert!
Eine SMS senden
In diesem Beispiel versende ich eine SMS mit der nexmo CLI. Es ist so einfach wie die Ausführung:
Geben Sie confirm um zu senden, und in der Konsole, in der Ihre Anwendung ausgeführt wird, sehen Sie etwas in der Art von:
Delivery receipt example
Ressourcen
Den Code für dieses Tutorial finden Sie in GitHub
