
Empfangen von SMS-Nachrichten mit ASP.NET MVC Framework
Mein vorheriges Tutorial erklärte, wie man die Vonage C#-Client-Bibliothek um Ihre erste SMS-Nachricht zu versenden aus einer ASP.NET MVC-Webanwendung zu versenden. In dieser Fortsetzung setze ich die Erforschung der Vonage-Plattform fort, indem ich zeige, wie man SMS-Nachrichten auf einer Vonage-Telefonnummer mit der C#-Client-Bibliothek empfängt.
Anforderungen
Visual Studio 2017 RC
Windows-Rechner
A Startprojekt das im vorherigen Blog-Beitrag
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.
Empfangen Sie Webhooks auf Ihrem Localhost mit Ngrok
Die Vonage SMS API verwendet Webhooks, um Ihre ASP.NET-Webanwendung darüber zu informieren, dass eine eingehende Textnachricht an eine Ihrer Vonage-Telefonnummern gesendet wurde. Dazu muss Vonage in der Lage sein, eine HTTP-Anfrage an eine öffentliche URL zu stellen. Da wir unsere Anwendung auf unserem lokalen Rechner entwickeln, müssen wir einen lokalen Tunnel erstellen, der unserem Rechner eine öffentliche URL liefert. Wir verwenden ngrok um den Port über das Internet freizugeben, damit wir während dieser Testphase problemlos mit der Vonage-Plattform kommunizieren können. Dieser Ansatz erspart Ihnen die Bereitstellung Ihrer Anwendung.
Laden Sie ngrok herunter und führen Sie den folgenden Befehl in der Eingabeaufforderung aus (ersetzen Sie die Portnummer durch die Nummer des Ports, über den Sie die Anwendung ausführen möchten).

Der obige Befehl ermöglicht es Ihrem lokalen Server (der auf dem obigen Port läuft), eine öffentliche URL zu haben, die verwendet wird, um die eingehenden Texte (HTTP-Anfragen) zurück zu Ihrem lokalen Server zu leiten. Der Host-Header muss angegeben werden, um sicherzustellen, dass der Host-Header der Anwendung und ngrok übereinstimmen und die Anfragen nicht zurückgewiesen werden.
Eintauchen in den Code
Im vorherigen Tutorial haben wir ein ASP.NET MVC-Projekt erstellt und einen weiteren Controller namens SMSController.cs. Dann haben wir zwei Aktionsmethoden erstellt. Eine Methode sollte die Ansicht für die Details der SMS (Zielnummer und Nachrichtentext) darstellen und die andere sollte die Werte aus dem Formular abrufen und eine SMS senden.
Die Fortsetzung des Projekts aus dem vorherigen Blog-Beitraglassen Sie uns eine Aktionsmethode namens 'Empfangen' in SMSController.cs. Dieser Pfad wird die eingehenden SMS-Daten empfangen, da wir den Vonage-Webhook (später in diesem Tutorial) auf unsere ngrok-URL mit der Route "SMS/Receive" setzen werden.
Fügen Sie [FromUri] in den Parameter ein, um die eingehenden SMS zu lesen. Um [FromUri] verwenden zu können, müssen Sie das folgende Paket installieren: Microsoft.AspNet.WebApi.Core. Fügen Sie oberhalb dieser Methode ein HTTPGetAttribut hinzu, um die Methode darauf zu beschränken, nur GET-Anfragen zu akzeptieren. Wenn der Wert für response.to (die Vonage-Telefonnummer) und msidsn (der Absender) nicht null ist, drucken Sie die Nachricht in das Ausgabefenster mit Debug.WriteLine. Andernfalls wurde der Endpunkt durch etwas anderes als eine eingehende SMS erreicht. (Das kann passieren, wenn Sie Ihren Webhook zum ersten Mal einrichten; wir werden das gleich sehen).
[System.Web.Mvc.HttpGet]
public ActionResult Receive([FromUri]SMS.SMSInbound response)
{
if (null != response.to && null != response.msisdn)
{
Debug.WriteLine("-------------------------------------------------------------------------");
Debug.WriteLine("INCOMING TEXT");
Debug.WriteLine("From: " + response.msisdn);
Debug.WriteLine(" Message: " + response.text);
Debug.WriteLine("-------------------------------------------------------------------------");
return new HttpStatusCodeResult(200);
}
else {
Debug.WriteLine("-------------------------------------------------------------------------");
Debug.WriteLine("Endpoint was hit.");
Debug.WriteLine("-------------------------------------------------------------------------");
return new HttpStatusCodeResult(200);
}
}
Ausführen der ASP.NET-Webanwendung
Erweitern Sie im Projektmappen-Explorer das Projekt und klicken Sie auf Eigenschaften. Klicken Sie auf die Web und ändern Sie die Projekt-URL auf denselben Port, den Sie über ngrok freigeben. Starten Sie schließlich das Projekt.

Einstellen der SMS-Rückruf-Webhook-URL für Ihre Vonage-Nummer
Verwenden Sie nun die Vonage CLI, um eine Vonage App und einen Webhook für diese zu erstellen.
Installieren Sie die Vonage CLI global mit diesem Befehl:
npm install @vonage/cli -gAls nächstes konfigurieren Sie die CLI mit Ihrem Vonage-API-Schlüssel und -Geheimnis. Sie finden diese Informationen im Entwickler-Dashboard.
vonage config:set --apiKey=VONAGE_API_KEY --apiSecret=VONAGE_API_SECRET Erstellen einer Voice-Applikation
Erstellen Sie ein neues Verzeichnis für Ihr Projekt und legen Sie eine CD darin ab:
mkdir my_project
CD my_projectVerwenden Sie nun die CLI, um eine Vonage-Anwendung zu erstellen.
Jetzt brauchen Sie eine Nummer, damit Sie Anrufe empfangen können. Sie können eine Nummer mieten, indem Sie den folgenden Befehl verwenden (ersetzen Sie die Landesvorwahl durch Ihre Vorwahl). Wenn Sie sich zum Beispiel in den USA befinden, ersetzen Sie GB durch US:
Verknüpfen Sie nun die Nummer mit Ihrer App:
vonage apps:link --number=VONAGE_NUMBER APP_ID Empfangen einer SMS mit ASP.NET
Sie sind startklar! Wenn Ihre ASP.NET-Webanwendung läuft, öffnen Sie das Ausgabefenster in Visual Studio. Senden Sie eine SMS an Ihre Vonage-Telefonnummer und Sie werden sehen, wie die eingehenden Texte ankommen! Ihre ASP.NET-Webanwendung ist in der Lage, SMS-Nachrichten zu empfangen, die über einen eingehenden Webhook an Ihre Vonage-Telefonnummer gesendet werden!
Sie können sich gerne melden per E-Mail oder Twitter wenn Sie irgendwelche Fragen haben!
