
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.
Abspielen von Audio für einen Anrufer in ASP.NET Core
Lesedauer: 3 Minuten
Willkommen zum zweiten Lernprogramm in unserer zur Verwendung von Voice APIs mit ASP.NET Reihe. Die anderen Tutorials finden Sie auf der Seite Mehr erfahren Abschnitt am Ende dieses Beitrags.
Im vorherigen Beitrag haben wir gelernt, wie man einen Text-zu-Sprache-Telefonanruf in einer ASP.NET-Webanwendung zu tätigen. In diesem Beitrag werden wir lernen, wie man einem Anrufer Audio vorspielt. Klingt nach Spaß, oder? Aber das ist noch nicht alles. Wir werden auch erfahren, wie wir dynamisch Vonage Call Control Objects (NCCOs) im Code erstellen und in unserer Anwendung verwenden können. Bonus: Wir werden ein ASP.NET Core-Projekt für diese Demo verwenden.
Fangen wir an!
are you ready gif
Voraussetzungen für die Verwendung von Vonage Voice API mit ASP.NET
Visual Studio 2017
Ein Projekt, das für diese Tutorial-Serie eingerichtet wurde, finden 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.
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.
Konfiguration
Da Sie das erste Tutorial in dieser Reihe gelesen haben könnten oder auch nicht - was Sie übrigens tun sollten -, sollten wir uns erst einmal ansehen, was wir brauchen, bevor wir uns dem Code widmen.
Um Folgendes nutzen zu können Die Vonage Voice APInutzen zu können, benötigen Sie eine Sprachanwendung, um Konfigurationsdaten zu speichern und ein öffentliches/privates Schlüsselpaar zu generieren.
Wie man das macht? Keine Sorge, ich habe eine Lösung für Sie. Die Vonage Voice API mit ASP.NET: Bevor Sie anfangen bietet einen guten Überblick über alle notwendigen Konfigurationsschritte.
Stellen Sie in Ihrem Projekt in der Datei appsettings.json sicher, dass Vonage mit Ihren API-Anmeldeinformationen sowie der App-ID und dem privaten Schlüssel, die Sie gerade erstellt haben, initialisiert wird.
Und jetzt schreiben wir etwas Code!
wonder woman gif
Erstellen eines Stroms NCCO
Wie bereits zu Beginn dieses Beitrags erwähnt, wollen wir dem Benutzer eine Audiodatei vorspielen, wenn er den Anruf entgegennimmt. Die NCCO-Datei, die unter unserer answer_url verfügbar ist, enthält diese Informationen. Um diese Aktion auszuführen, muss die NCCO-Datei gültig sein und die richtige Aktion enthalten. Die Aktion, die erforderlich ist, um die Audiodatei an einen Anruf oder ein Gespräch zu senden, ist stream.
Für diese Demo müssen wir nur streamUrl angeben, d. h. das Array mit der Audiodatei. Letztere muss eine mp3- oder wav-Datei sein. Wir bieten ein Beispiel stream NCCOzur Verfügung, mit dem Sie diese Demo ausprobieren können. Für reale Szenarien sollten Sie jedoch Ihre eigene Datei erstellen.
Fügen Sie unter NexmoVoiceASPNetCoreQuickstarts einen neuen Ordner mit dem Namen Helpers hinzu und fügen Sie eine neue Klasse NCCOHelpers.cs zu diesem Ordner hinzu. Wir werden alle NCCOs, die wir benötigen, in diesem Ordner erstellen. Der Einfachheit halber werden wir unsere NCCO-Dateien direkt unter wwwroot speichern.
ncco helpers
Wie in den Konfigurationsschritten erläutert, können wir durch Hinzufügen der folgenden Zeile zur Configure-Methode in Startup.cs die NCCO-Json-Datei bereitstellen.
app.UseStaticFiles();Mit Tools wie ngrok wird er über die Vonage-API erreichbar sein.
ngrok status
In NCCOHelpers.cs fügen wir eine Methode namens CreateStreamNCCO hinzu, mit der wir dynamisch ein JObject erstellen, das den Stream NCCO darstellt.
public void CreateStreamNCCO(string rootpath, string[] streamUrl, int level, bool bargeIn, int loopTimes)
{
dynamic StreamNCCO = new JObject();
StreamNCCO.action = "stream";
StreamNCCO.streamUrl = new JArray { streamUrl };
StreamNCCO.level = level;
StreamNCCO.bargeIn = bargeIn;
StreamNCCO.loop = loopTimes;
SaveFile(rootpath, "StreamNCCO.json", StreamNCCO);
}Dann speichern wir dieses Objekt als JSON-Datei unter wwwroot.
private void SaveFile(string rootpath, string filename, dynamic StreamNCCO)
{
var pathToFile = Path.Combine(rootpath, filename);
using (StreamWriter s = File.CreateText(pathToFile))
{
s.Write(StreamNCCO.ToString());
}
}Später werden wir CreateStreamNCCO verwenden, um den Benutzern die Möglichkeit zu geben, ihren eigenen Stream NCCO über die Website zu erstellen.
Abspielen von Audio während des Gesprächs
Unter NexmoVoiceAspNetCoreQuickstarts haben wir einen Controller namens VoiceController.cs in dem wir eine eine Aktionsmethode namens PlayAudioToCaller.
Fügen Sie oberhalb der Methode ein HttpGetAttribut hinzu, damit der Benutzer zur entsprechenden Ansicht navigieren kann.
[HttpGet]
public ActionResult PlayAudioToCaller()
{
return View();
}Erstellen Sie unter dem Ordner Voice Views eine neue Ansicht PlayAudioToCaller.cshtml. Unter dieser Ansichtwerden wir zwei Formulare hinzufügen:
Die erste wird es uns ermöglichen, einen Stream NCCO zu erstellen.
Der zweite wird zum Telefonieren verwendet.
Zurück zum VoiceController. Vergewissern Sie sich, dass die folgende "using"-Anweisung am Anfang der Datei steht.
using VonageInnerhalb des Konstruktors übergeben wir die Hosting-Umgebung, die zur Angabe des Stammverzeichnisses verwendet wird, in dem wir die NCCO-Datei speichern werden. Wir instanziieren auch die NCCO-Helferklasse.
private readonly IHostingEnvironment _hostingEnvironment;
private NCCOHelpers _nccohelper;
public VoiceController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
_nccohelper = new NCCOHelpers();
}Hinzufügen einer Aktionsmethode namens CreateStreamNCCO mit den folgenden Parametern:
string[] streamUrl : ein Array, das eine einzelne URL zu der zu streamenden Audiodatei enthält.
int level=0 : der Audiopegel. Dieser ist standardmäßig auf Null eingestellt.
bool bargeIN ist standardmäßig auf false eingestellt.
int loop =1, damit der Ton nur einmal wiederholt wird. Innerhalb dieser Methode rufen wir die Methode CreateStreamNCCO aus der NCCO-Helferklasse auf.
[HttpPost]
public ActionResult CreateStreamNCCO(string\[] streamUrl, int level=0, bool bargeIN = false, int loop =1)
{
_nccohelper.CreateStreamNCCO(_hostingEnvironment.WebRootPath, streamUrl, level, bargeIN, loop);
ViewData\["NCCOButtonText"] = "NCCO Created";
return View("PlayAudioToCaller");
}Hinzufügen einer weiteren Aktionsmethode namens PlayAudioToCaller mit einem String-Parameter: to. Innerhalb dieser Methode werden Sie einen Anruf tätigen, indem Sie den Parameter als to. Die from Nummer ist Ihre virtuelle Nexmo-Nummer (abgerufen aus der appsettings.json), die answer_url ist der Stream-NCCO, unabhängig davon, ob Sie das oben erwähnte Community-NCCO von Nexmo oder das von Ihnen erstellte und über ngrok erreichbare NCCO verwenden.
public ActionResult PlayAudioToCaller(string to)
{
var NEXMO_FROM_NUMBER = Configuration.Instance.Settings\["appsettings:NEXMO_FROM_NUMBER"];
var NEXMO_TO_NUMBER = to;
var NEXMO_CALL_ANSWER_URL = "https://raw.githubusercontent.com/nexmo-community/ncco-examples/gh-pages/first_call_speech.json";
var results = Call.Do(new Call.CallCommand
{
to = new\[]
{
new Call.Endpoint {
type = "phone",
number = NEXMO_TO_NUMBER
}
},
from = new Call.Endpoint
{
type = "phone",
number = NEXMO_FROM_NUMBER
},
answer_url = new\[]
{
NEXMO_CALL_ANSWER_URL
}
});
return RedirectToAction("Index", "Home");
}Führen Sie nun die App aus und tätigen Sie einen Anruf.
Wenn sie erfolgreich ist, ruft sie die NCCO von Ihrem Webhook ab, der Ton wird abgespielt, und dann wird der Anruf beendet. 
Mehr erfahren
API-Referenzen und Tools
Vonage Einführungshandbuch 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.
