
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.
Telefonanrufe mit Vonage Voice API, ASP.NET Core und NancyFX entgegennehmen
Lesedauer: 3 Minuten
Dies ist der dritte Lehrgang zur Verwendung von Voice APIs mit ASP.NET.
In früheren Tutorials haben wir gelernt wie man mit ASP.NET einen Text-to-Speech-Anruf tätigt und wie man einem Anrufer in ASP.NET Core Audio vorspielt. Aber wie sieht es mit dem Empfangen von Anrufen aus? Die gute Nachricht ist, dass die Vonage Voice API auch eingehende Anrufe verarbeitet.
Eingehende Anrufe sind Anrufe an eine Vonage Nummer von einem anderen normalen Telefon irgendwo auf der Welt. Sowohl eingehende als auch ausgehende Anrufe folgen demselben Anruffluss, sobald sie angenommen wurden. Dieser Anruffluss wird gesteuert durch einem NCCO.
In diesem Tutorial werden wir eine ASP.NET-Anwendung erstellen, die eingehende Voice-Anrufe verarbeitet und eine dynamische Antwort zurückgibt.
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 eines NCCO.
Führen Sie den Code mit Ngrok aus und testen Sie ihn.
Voraussetzung
Visual Studio 2017.
Ein Projekt-Setup für diese Tutorial-Serie, das Sie auf Github.
Optional: Die Vonage CLI.
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.
Konfiguration
Zur Verwendung Die Vonage Voice APIzu nutzen, müssen wir eine eine Voice-Anwendung.
Die Konfigurationsschritte sind detailliert in dem Beitrag "Vonage Voice API mit ASP.NET: Bevor Sie beginnen" beschrieben..
Sobald die Anwendung erfolgreich konfiguriert ist, sind wir bereit, einen eingehenden Anruf mit der Vonage Voice API zu empfangen!
Entgegennahme eines Telefonanrufs mit ASP.NET
Wenn ein Anruf eingeht, stellt die Vonage Voice API eine Anfrage an die Anwendung, um herauszufinden, wie sie dem Anrufer antworten soll.
Um dies zu erreichen, werden wir NancyFX zusammen mit unserem ASP.NET Core-Projekt verwenden.
Nancy ist ein leichtgewichtiges Open-Source-Framework, das den "super-duper-happy-path" unterstützt. Das bedeutet, dass es vernünftige Standardeinstellungen und Konventionen hat und versucht, uns so weit wie möglich aus dem Weg zu gehen.
Zunächst einmal müssen wir Nancy zu unserem Projekt hinzufügen:
csharp 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());
}
}
}
Wir sind alle startklar! Der nächste Schritt besteht darin, ein Nancy-Modul zu erstellen, das alle Anfragen an /webhook/answer.
using Nancy;
namespace NexmoVoiceASPNetCoreQuickStarts
{
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => "Hello happy path";
}
}
}
Ich verwende Postman zum Testen, und wie Sie sehen können, liefert unsere /webhook/answer Route genau das zurück, was erwartet wird.
asp-post
Das ist ein guter Anfang, aber Vonage weiß nicht, was es mit dieser Zeichenfolge anfangen soll. Um den Anruf richtig zu beantworten, müssen wir ein NCCO zurückgeben.
using Nancy;
using Newtonsoft.Json.Linq;
namespace NexmoVoiceASPNetCoreQuickStarts
{
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => GetInboundNCCO();
}
private string GetInboundNCCO()
{
dynamic TalkNCCO = new JObject();
TalkNCCO.action = "talk";
TalkNCCO.text = "Thank you for calling from " + string.Join(' ', this.Request.Query["from"].ToString().ToCharArray()));
TalkNCCO.voiceName = "Kimberly";
JArray jarrayObj = new JArray();
jarrayObj.Add(TalkNCCO);
return jarrayObj.ToString();
}
}
}
GetInboundNCCO() wird ein NCCO-Objekt erstellt, das die Telefonnummer des Anrufers mit Hilfe von Text-To-Speech vorliest und die talk Aktion innerhalb des NCCO.
Wir greifen auf die Rufnummer über den from Parameter in der Anfrage.
webhook answer
Das ist der gesamte Code, den wir brauchen. Um dies richtig zu testen, sind einige weitere 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 einer Vonage-Telefonnummer verknüpfen, der Nummer, die wir anrufen werden. Wenn Sie noch keine Nummer haben, können Sie eine über das Dashboard oder die CLI erwerben. javascript vonage numbers:buy PHONE_NUMBER US Auch für die Verknüpfung der Nummer können Sie das Dashboard oder die CLI verwenden.
vonage numbers:buy PHONE_NUMBER USAuch für die Verknüpfung der Nummer können Sie das Dashboard oder die CLI verwenden.
vonage apps:link --number=PHONE_NUMBER APP_IDWir müssen Vonage mitteilen, an welche URL eine Anfrage gestellt werden soll, wenn ein Anruf eingeht (answer_url). Bei mir lautet diese URL http://localhost:63286/webhook/answer und die wird nur lokal ausgeführt.
Um unsere answer_urlwerden wir unseren guten Freund Ngrok.
ngrok http 63286 -host-header="localhost:63286"Dadurch wird eine neue URL zurückgegeben (meine ist http://5e18af56.ngrok.io), die als die answer_url für die Voice-Anwendung verwendet werden kann. Aktualisieren Sie Ihre answer_url auf http://[id].ngrok.io/webhook/answer
Tada! Starten Sie die App und rufen Sie die von Ihnen erworbene Vonage-Nummer an. Die App sollte sich für den Anruf bedanken und dann Ihre Telefonnummer vorlesen.
Mehr erfahren
API-Referenzen und Tools
Nexmo 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.
