
Teilen Sie:
Rabeb war Developer Advocate bei Nexmo, wo sie sich auf Cloud-Kommunikations-APIs konzentrierte und Entwicklern half, die bestmögliche Erfahrung bei der Entwicklung ihrer Apps zu machen. Rabeb schreibt nicht nur Code für ihren Lebensunterhalt, sondern setzt sich auch dafür ein, mehr Frauen und Minderheiten in die Technologiebranche zu bringen, und engagiert sich daher bei Women Who Code und verschiedenen Tech-Communities. Sie leitet das Women Who Code Network in Bristol.
Wie man mit ASP.NET Core Benutzereingaben verarbeitet
Lesedauer: 3 Minuten
Dies ist der vierte Lehrgang zur Verwendung von Voice APIs mit ASP.NET. Im vorherigen Tutorial haben wir gelernt wie man einen Telefonanruf mit Vonage Voice API, ASP.NET Core und NancyFX empfängt. Das ist ein guter Anfang, aber in einem realen Szenario erwarten wir eine Art von Interaktion mit dem Anrufer. Vielleicht wird er aufgefordert, eine Option zu wählen oder eine PIN einzugeben. Wir brauchen eine Möglichkeit, Benutzereingaben zu verarbeiten.
Genau das ist das Ziel dieses Tutorials; wir werden eine ASP.NET-Anwendung erstellen, die eingehende Voice-Anrufe verarbeitet und auf Benutzereingaben reagiert, indem wir die Vonage Voice API.
Lernziele
In diesem Lernprogramm werden wir:
Erstellen Sie eine ASP.NET Core-Anwendung.
Verwenden Sie NancyFX mit ASP.NET Core.
Erstellen Sie eine Voice-Anwendung von Vonage.
Empfangen Sie eingehende Anrufe innerhalb der App.
Erstellung und Rückgabe von NCCOs.
Bearbeitung von Benutzereingaben.
Führen Sie den Code mit Ngrok aus und testen Sie ihn.
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.
Visual Studio 2017.
Ein Projekt-Setup für diese Tutorial-Serie, das Sie auf Github.
Optional: Die Vonage CLI.
Konfiguration
Zur Verwendung Die Vonage Voice APIzu nutzen, müssen wir eine eine Voice-Anwendung. Die Konfigurationsschritte sind detailliert in dem Beitrag "Nexmo Voice API mit ASP.NET: Bevor Sie anfangen" beschrieben.. Sobald die Konfiguration erfolgreich abgeschlossen ist, sind wir bereit, einen eingehenden Anruf zu empfangen und Benutzereingaben mit der Vonage Voice API zu verarbeiten!
Entgegennahme eines Telefonanrufs und Verarbeitung von Eingaben mit ASP.NET
Wenn ein Anruf eingeht, stellt die Vonage Voice API eine Anfrage an Ihre Anwendung, um herauszufinden, wie zu reagieren ist. In diesem Beitrag werden wir Text-To-Speech verwenden, um den Anrufer zu begrüßen, und die input Aktion, um DTMF-Eingaben vom Anrufer zu sammeln.
DTMF (Dual Tone Multi Frequency) ist eine Form der Signalisierung, die von Telefonsystemen verwendet wird, um die Ziffern 0-9 und die * und # Zeichen. Normalerweise drückt ein Anrufer diese Tasten auf der Telefontastatur und das Telefon erzeugt dann einen Ton, der aus zwei gleichzeitig gespielten Frequenzen besteht (daher Dual Tone).
Um DTMF in unserer Anwendung zu erfassen, werden wir NancyFX neben unserem ASP.NET Core-Projekt verwenden. Zunächst einmal müssen wir Nancy zu unserem Projekt hinzufügen:
PM> Install-Package Nancy
PM> Install-Package Microsoft.AspNetCore.Owin
Damit Nancy alle HTTP-Anfragen bearbeiten kann, müssen wir ASP.NET Core mitteilen, dass Nancy über Owin in der Configure Methode von Startup.cs.
using Microsoft.AspNetCore.Builder;
using Nancy.Owin;
namespace NexmoVoiceASPNetCoreQuickStarts
{
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseOwin(x => x.UseNancy());
}
}
}Der nächste Schritt besteht darin, ein Nancy-Modul zu erstellen, in dem wir eine Route zu /webhook/answer einrichten, die mit dem ncco zurückgegeben von GetDTMFNCCO()
using Nancy;
using Newtonsoft.Json.Linq;
namespace NexmoVoiceASPNetCoreQuickStarts
{
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => GetDTMFNCCO();
}
private string GetDTMFNCCO()
{
dynamic TalkNCCO = new JObject();
TalkNCCO.action = "talk";
TalkNCCO.text = "Hello. Please press any key to continue.";
JArray jarrayObj = new JArray();
jarrayObj.Add(TalkNCCO);
dynamic InputNCCO = new JObject();
InputNCCO.action = "input";
InputNCCO.maxDigits = "1";
InputNCCO.eventUrl = $"{Request.Url.SiteBase}/webhook/dtmf";
jarrayObj.Add(InputNCCO);
return jarrayObj.ToString();
}
}
}Der obige Code bewirkt Folgendes:
Wenn ein Anruf eingeht, fordert Vonage den Benutzer auf, eine beliebige Taste zu drücken, indem es den Text "Hallo" vorliest. Bitte drücken Sie eine beliebige Taste, um fortzufahren". Wenn der Benutzer eine Taste drückt, leiten wir diese Eingabe an webhook/dtmf weiter, wo sie ordnungsgemäß verarbeitet wird. Um die DTMF-Töne zu verarbeiten, müssen wir dem Nancy-Modul mitteilen, wie es reagieren soll, sobald die Anfrage eingegangen ist. In diesem Fall werden wir dem Anrufer einfach zurücklesen, welche Taste er gedrückt hat.
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => GetDTMFNCCO();
Post["/webhook/dtmf"] = x => GetDTMFInput();
}
private string GetDTMFNCCO()
{
dynamic TalkNCCO = new JObject();
TalkNCCO.action = "talk";
TalkNCCO.text = "Hello. Please press any key to continue.";
JArray jarrayObj = new JArray();
jarrayObj.Add(TalkNCCO);
dynamic InputNCCO = new JObject();
InputNCCO.action = "input";
InputNCCO.maxDigits = "1";
InputNCCO.eventUrl = $"{Request.Url.SiteBase}/webhook/dtmf";
jarrayObj.Add(InputNCCO);
return jarrayObj.ToString();
}
private string GetDTMFInput()
{
dynamic TalkNCCO = new JObject();
TalkNCCO.action = "talk";
TalkNCCO.text = $"You pressed {Request.Query["dtmf"]} ";
JArray jarrayObj = new JArray();
jarrayObj.Add(TalkNCCO);
return jarrayObj.ToString();
}
}Wir sind fertig! Um diese Beispielanwendung zu testen, sind noch einige Konfigurationsschritte erforderlich.
Wenn Sie sich bisher informiert haben, haben Sie Ihr Vonage-Konto bereits konfiguriert und eine Voice-App erstellt, wie in diesem Beitrag. Wir müssen diese App mit der Vonage-Telefonnummer verknüpfen, die wir anrufen wollen. Wenn Sie noch keine Nummer haben, können Sie eine erwerben über das Dashboard oder über die CLI erwerben:
vonage numbers:search US
vonage numbers:buy <PHONE_NUMBER> USUm die Nummer ähnlich zu verknüpfen, können Sie über das Dashboard oder die CLI verwenden:
vonage link:app --number=PHONE_NUMBER APP_IDWir müssen Vonage mitteilen, an welche URL eine Anfrage gestellt werden soll, wenn ein Anruf eingeht - dies wird die answer_url. Für mich lautet diese URL http://localhost:63286/webhook/answer und die wird nur lokal ausgeführt. Um unsere Webhook-Antwort-URL freizulegen, verwenden wir Ngrok.
ngrok http 63286Wir haben jetzt eine neue URL (meine ist http://5e18af56.ngrok.io), die als answer_url für die Voice-Anwendung verwendet werden kann. Aktualisieren Sie Ihre Anwendung mit Ihrer neuen answer_url. Sie sollte wie folgt aussehen http://[id].ngrok.io/webhook/answerTada! Führen Sie die Anwendung aus und rufen Sie die von Ihnen erworbene Vonage-Nummer an, um sie auszuprobieren.
Mehr erfahren
API-Referenzen und Tools
Vonage Einführungshandbücher für ASP.NET
Teilen Sie:
Rabeb war Developer Advocate bei Nexmo, wo sie sich auf Cloud-Kommunikations-APIs konzentrierte und Entwicklern half, die bestmögliche Erfahrung bei der Entwicklung ihrer Apps zu machen. Rabeb schreibt nicht nur Code für ihren Lebensunterhalt, sondern setzt sich auch dafür ein, mehr Frauen und Minderheiten in die Technologiebranche zu bringen, und engagiert sich daher bei Women Who Code und verschiedenen Tech-Communities. Sie leitet das Women Who Code Network in Bristol.
