https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-receive-a-phone-call-with-nexmo-voice-api-asp-core-core-and-nancyfx-dr/Receive-a-phone-call-with-NancyFX.png

Recevoir un appel téléphonique avec Vonage Voice API, ASP.NET Core et NancyFX

Publié le May 4, 2021

Temps de lecture : 3 minutes

Il s'agit du troisième tutoriel sur l'utilisation des Voice API avec la série ASP.NET.

Dans les tutoriels précédents, nous avons appris comment passer un appel téléphonique en synthèse vocale avec ASP.NET et comment diffuser de l'audio à un appelant en ASP.NET Core. Mais qu'en est-il de la réception d'appels ? La bonne nouvelle, c'est que l'API Voice de Vonage gère également les appels entrants.

Les appels entrants sont des appels passés à un numéro Vonage à partir d'un autre téléphone ordinaire n'importe où dans le monde. Les appels entrants et sortants suivent le même flux d'appels une fois qu'ils sont pris. Ce flux d'appels est le même pour les appels entrants et les appels sortants. flux d'appels est contrôlé par un NCCO.

Dans ce tutoriel, nous allons créer une application ASP.NET qui traite les appels vocaux entrants et renvoie une réponse dynamique.

Objectifs d'apprentissage

Dans ce tutoriel, nous allons :

  • Créer une application ASP.NET Core.

  • Utilisez NancyFX avec ASP.NET Core.

  • Créez une application vocale Vonage.

  • Recevoir des appels entrants dans l'application.

  • Créer et renvoyer un BCN.

  • Exécuter et tester le code à l'aide de Ngrok.

Prérequis

  • 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.

Configuration

Pour utiliser l'API Voice de Vonagede Vonage, nous devons créer une application Voice.

Les étapes de configuration sont détaillées dans l'article "Vonage Voice API avec ASP.NET : Avant de commencer"..

Une fois l'application configurée avec succès, nous sommes prêts à recevoir un appel entrant avec l'API Voice de Vonage !

Recevoir un appel téléphonique avec ASP.NET

Lorsqu'un appel est reçu, l'API Voice de Vonage adresse une demande à l'application pour savoir comment répondre à l'appelant.

Pour ce faire, nous allons utiliser NancyFX parallèlement à notre projet ASP.NET Core.

Nancy est un framework open-source léger qui promeut le "super-duper-happy-path". Cela signifie qu'il a des valeurs par défaut et des conventions raisonnables et qu'il essaie de ne pas nous gêner autant que possible.

Tout d'abord, nous devons ajouter Nancy à notre projet :

csharp PM> Install-Package Nancy PM> Install-Package Microsoft.AspNetCore.Owin

Pour permettre à Nancy de traiter toutes les requêtes HTTP, nous devons indiquer à ASP.NET Core d'utiliser Nancy via Owin dans la méthode Configure de la méthode Startup.cs.

using Microsoft.AspNetCore.Builder;
using Nancy.Owin;

namespace NexmoVoiceASPNetCoreQuickStarts
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseOwin(x => x.UseNancy());
        }
    }
}

Nous sommes prêts à partir ! L'étape suivante consiste à créer un module Nancy pour gérer les requêtes vers /webhook/answer.

using Nancy;

namespace NexmoVoiceASPNetCoreQuickStarts
{
    public class VoiceModule : NancyModule
    {
        public VoiceModule()
        {
            Get["/webhook/answer"] = x => "Hello happy path";
        }
    }
}

J'utilise Postman pour tester, et comme vous pouvez le voir, notre route /webhook/answer renvoie exactement ce qui est attendu.

asp postman screenshotasp-post

C'est un bon début, mais Vonage ne sait pas quoi faire de cette chaîne. Pour répondre correctement à l'appel, nous devons renvoyer un NCCO.

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() créera un objet NCCO qui utilisera la synthèse vocale pour lire le numéro de téléphone de l'appelant à l'aide de l'action talk dans le NCCO.

Nous accédons au numéro de téléphone via le paramètre from dans la requête.

webhook answer screenshotwebhook answer

C'est tout le code dont nous avons besoin. Pour le tester correctement, d'autres étapes de configuration sont nécessaires.

Si vous avez suivi jusqu'ici, vous avez déjà configuré votre Account Voice et créé une application vocale comme indiqué dans ce billet.

Nous devons lier cette application à un numéro de téléphone Vonage, le numéro que nous appellerons. Si vous n'avez pas de numéro, vous pouvez en acheter un en utilisant le tableau de bord ou le CLI. javascript vonage numbers:buy PHONE_NUMBER US De même, pour lier le numéro, vous pouvez utiliser le tableau de bord ou le CLI.

vonage numbers:buy PHONE_NUMBER US

De même, pour lier le numéro, vous pouvez utiliser le tableau de bord ou la CLI.

vonage apps:link --number=PHONE_NUMBER APP_ID

Nous devons indiquer à Vonage l'URL à laquelle adresser une requête lorsqu'un appel est reçu (answer_url). Pour moi, cette URL est http://localhost:63286/webhook/answer et elle n'est exécutée que localement.

Pour exposer notre answer_urlnous ferons appel à notre bon ami Ngrok.

ngrok http 63286 -host-header="localhost:63286"

Cela renverra une nouvelle URL (la mienne est http://5e18af56.ngrok.io) qui peut être utilisée comme answer_url pour l'application vocale. Mettez à jour votre answer_url à http://[id].ngrok.io/webhook/answer

Et voilà ! Lancez l'application et essayez-la en appelant le numéro Vonage que vous avez acheté. L'application devrait vous remercier d'avoir appelé, puis lire votre numéro de téléphone.

En savoir plus

Références et outils API

Guides de démarrage Nexmo pour ASP.NET

Partager:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Rabeb OthmaniAnciens de Vonage

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.