
Partager:
Rabeb était un défenseur des développeurs chez Nexmo, se concentrant sur les API de communication dans le nuage et aidant les développeurs à obtenir la meilleure expérience possible lors de la création de leurs applications. Outre le fait d'écrire du code pour gagner sa vie, Rabeb milite pour que davantage de femmes et de minorités accèdent à la technologie, d'où son engagement auprès de Women Who Code et de différentes communautés technologiques. Elle dirige le réseau Women Who Code à Bristol.
Comment diffuser de l'audio à un appelant en ASP.NET Core
Temps de lecture : 4 minutes
Bienvenue dans le deuxième tutoriel de notre série comment utiliser les Voice API avec ASP.NET . Pour consulter les autres tutoriels, veuillez vous rendre sur la page En savoir plus à la fin de cet article.
Dans le billet précédent, nous avons appris à passer un appel téléphonique en synthèse vocale dans une application web ASP.NET. Dans ce billet, nous allons apprendre à diffuser de l'audio à un appelant. Cela semble amusant, n'est-ce pas ? Mais ce n'est pas tout. Nous découvrirons également comment créer dynamiquement des objets de contrôle d'appel Vonage (NCCO) dans le code et les utiliser dans notre application. Bonus : nous utiliserons un projet ASP.NET Core pour cette démonstration.
C'est parti !
are you ready gif
Conditions préalables à l'utilisation de Voice API de Vonage avec ASP.NET
Visual Studio 2017
Un projet mis en place pour cette série de tutoriels, que vous pouvez trouver sur Github
Optionnel : Le CLI de Vonage
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Configuration
Puisque vous n'avez peut-être pas lu le premier tutoriel de cette série - ce que vous devriez faire, d'ailleurs - passons en revue ce dont nous avons besoin avant de plonger dans le code.
Pour pouvoir utiliser l'API Voice de Vonagede Vonage, vous aurez besoin d'une application Voice pour stocker les données de configuration et générer une paire de clés publique/privée.
Comment faire ? Ne vous inquiétez pas, j'ai tout prévu. L'API vocale de Vonage Voice API de Vonage avec ASP.NET : Avant de commencer contient un excellent aperçu de toutes les étapes de configuration nécessaires.
Dans votre projet, dans le fichier appsettings.json, assurez-vous d'initialiser Vonage avec vos identifiants API ainsi que l'App ID et la clé privée que vous venez de créer.
Maintenant, écrivons du code !
wonder woman gif
Création d'un flux NCCO
Comme mentionné au début de ce billet, lorsque l'utilisateur répond à l'appel, nous voulons lui faire écouter un fichier audio. Le fichier NCCO disponible dans notre answer_url contient cette information. Pour exécuter cette action, le NCCO doit être valide et avoir la bonne action. L'action requise pour envoyer le fichier audio à un appel ou à une conversation est le flux.
Pour cette démo, il suffira de spécifier streamUrl, qui est le tableau contenant le fichier audio. Ce dernier doit être un mp3 ou un wav. Nous fournissons un exemple de stream NCCO; vous pouvez l'utiliser pour essayer cette démo. Mais pour les scénarios réels, vous pouvez créer le vôtre.
Sous NexmoVoiceASPNetCoreQuickstarts, ajoutez un nouveau dossier appelé Helpers, puis ajoutez une nouvelle classe NCCOHelpers.cs à ce dossier. Nous créerons tous les NCCO dont nous avons besoin dans ce dossier. Par souci de simplicité, nous enregistrerons nos fichiers NCCO directement sous wwwroot.
ncco helpers
Comme expliqué dans les étapes de configuration, l'ajout de la ligne suivante à la méthode Configure dans Startup.cs nous permettra de servir le fichier json NCCO.
app.UseStaticFiles();L'utilisation d'outils tels que ngrok le rendra accessible par l'API de Vonage.
ngrok status
Dans NCCOHelpers.cs, nous ajouterons une méthode appelée CreateStreamNCCO, dans laquelle nous créerons dynamiquement un JObject représentant le flux NCCO.
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);
}Nous enregistrons ensuite cet objet dans un fichier JSON sous 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());
}
}Par la suite, nous utiliserons CreateStreamNCCO pour permettre aux utilisateurs de créer leur propre flux NCCO via le site web.
Lecture d'un fichier audio en cours d'appel
Sous NexmoVoiceAspNetCoreQuickstarts, nous avons créé un contrôleur appelé VoiceController.cs dans lequel nous allons créer une méthode d'action appelée PlayAudioToCaller.
Au-dessus de la méthode, ajoutez un attribut HttpGetAttribute pour permettre à l'utilisateur de naviguer vers la vue correspondante.
[HttpGet]
public ActionResult PlayAudioToCaller()
{
return View();
}Sous le dossier Voice Views, créez une nouvelle vue PlayAudioToCaller.cshtml. Au sein de cette vuenous ajouterons deux formulaires :
La première nous permettra de créer une OCNC de flux.
Le second sera utilisé pour passer l'appel téléphonique.
Revenons au VoiceController. Assurez-vous d'avoir la déclaration `using` suivante au début du fichier.
using VonageDans le constructeur, nous transmettrons l'environnement d'hébergement, qui sera utilisé pour spécifier le chemin racine où nous enregistrerons le fichier NCCO. Nous allons également instancier la classe d'aide NCCO.
private readonly IHostingEnvironment _hostingEnvironment;
private NCCOHelpers _nccohelper;
public VoiceController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
_nccohelper = new NCCOHelpers();
}Ajouter une méthode d'action nommée CreateStreamNCCO avec les paramètres suivants :
string[] streamUrl : un tableau contenant l'url du fichier audio à diffuser.
int level=0 : le niveau audio. La valeur par défaut est zéro.
bool bargeIN Valeur par défaut : false.
int loop =1 pour que l'audio ne soit répété qu'une seule fois. Dans cette méthode, nous appellerons la méthode CreateStreamNCCO de la classe d'aide NCCO.
[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");
}Ajouter une autre méthode d'action méthode d'action nommée PlayAudioToCaller avec un paramètre de type chaîne : to. Dans cette méthode, vous ferez un appel en utilisant le paramètre en tant que chaîne de caractères to. Le numéro from est votre numéro virtuel Nexmo (récupéré dans le fichier appsettings.json), le answer_url est le NCCO du flux, que vous choisissiez d'utiliser l'exemple de NCCO communautaire de Nexmo mentionné ci-dessus ou le NCCO que vous avez créé et rendu joignable via ngrok.
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");
}Maintenant, lançons l'application et passons un appel téléphonique.
S'il y parvient, il récupère le NCCO de votre webhook, l'audio est joué, puis l'appel est terminé. 
En savoir plus
Références et outils API
Guide de démarrage de Vonage pour ASP.NET
Partager:
Rabeb était un défenseur des développeurs chez Nexmo, se concentrant sur les API de communication dans le nuage et aidant les développeurs à obtenir la meilleure expérience possible lors de la création de leurs applications. Outre le fait d'écrire du code pour gagner sa vie, Rabeb milite pour que davantage de femmes et de minorités accèdent à la technologie, d'où son engagement auprès de Women Who Code et de différentes communautés technologiques. Elle dirige le réseau Women Who Code à Bristol.
