https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-receive-sms-delivery-receipts-with-asp-net-core-mvc-dr/Blog_SMS-Delivery-Receipts_1200x600.png

Empfangen von SMS-Zustellungsbestätigungen mit ASP.NET Core MVC

Zuletzt aktualisiert am May 5, 2021

Lesedauer: 6 Minuten

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:

dotnet new mvc -n ReceiveDlrAspNet

Jetzt cd in ReceiveDlrAspNet und fügen Sie das Vonage-Paket mit dem folgenden Befehl hinzu:

dotnet add package Vonage

Ö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:

ngrok http --host-header="localhost:5000" 5000

Daraufhin wird ein Bildschirm angezeigt, der wie folgt aussieht:

ngrokngrok

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 settingsDashboard 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:

nexmo sms -f VONAGE_NUMBER YOUR_CELLPHONE_NUMBER "Testing DLR"

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 exampleDelivery receipt example

Ressourcen

  • Den Code für dieses Tutorial finden Sie in GitHub

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/73d57fd8eb/stevelorello.png
Steve LorelloVonage Ehemalige

Ehemaliger .NET Developer Advocate @Vonage, polyglotter Software-Ingenieur, AI/ML