https://a.storyblok.com/f/270183/275146/254c36090a/csharp-conference-call-1.png

Crear una multiconferencia con la Voice API de Vonage y ASP.NET Core

Publicado el December 9, 2021

Tiempo de lectura: 6 minutos

Este es el sexto tutorial sobre cómo utilizar Voice API con la serie ASP.NET. En el tutorial anterior, aprendimos cómo desviar una llamada a través de un proxy de voz con ASP.NET Core. En el tutorial de hoy, aprenderemos cómo configurar una llamada de conferencia para que varias personas puedan unirse a la misma llamada.

Objetivos de aprendizaje

En este tutorial, vamos a:

  • Cree una aplicación ASP.NET Core.

  • Utilice NancyFX con ASP.NET Core.

  • Crea una aplicación de voz de Vonage.

  • Crear y devolver NCCOs.

  • Ejecuta y prueba el código utilizando Ngrok.

Requisitos previos

  • Visual Studio 2017 o superior.

  • Un proyecto que fue creado para esta serie de tutoriales, que se puede encontrar en Github.

  • Opcional: El CLI de Vonage.

Configuración

Para utilizar Voice API de Vonagenecesitamos crear una aplicación de voz.

Los pasos de configuración se detallan en Voice API de Vonage con ASP.NET: Antes de comenzar post.

Una vez creada correctamente la configuración, podemos pasar a establecer una multiconferencia.

Creación de una teleconferencia

Cuando un usuario llama al número de Vonage, la Voice API de Vonage hará una solicitud a la aplicación para averiguar cómo responder usando un objeto de control de llamadas de Vonage (NCCO).

El usuario será recibido y se unirá a la multiconferencia.

Para ello, vamos a utilizar NancyFX junto con nuestro proyecto ASP.NET Core.

En primer lugar, tenemos que añadir Nancy a nuestro proyecto:

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

Para permitir que Nancy gestione cualquier petición HTTP, necesitamos decirle a ASP.NET Core que utilice Nancy a través de Owin en el método Configure de Startup.cs.

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

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

El siguiente paso es crear un módulo Nancy en el que crearemos una ruta a /webhook/answer que responderá con el ncco devuelto por GetConferenceCallNCCO()

using Nancy;
using Vonage.Voice.Nccos;

namespace NexmoDotnetCodeSnippets.Modules
{
    public class ConferenceCallModule : NancyModule 
    {
        public ConferenceCallModule()
        {
            Get("/webhook/answer/", x => {
                var response = GetConferenceCallNCCO();
                response.ContentType = "application/json";
                return response;
            });
            Post("/webhook/event", x => Request.Query["status"]);
        }

        private Response GetConferenceCallNCCO()
        {
            var ncco = new Ncco();
            ncco.Actions.Add(new TalkAction
            {
                Text = "Hello. You will now be added to the conference call.",
                Language = "en-US",
                Style = 2
            });

            ncco.Actions.Add(new ConversationAction
            {
                Name = "conference-call"
            });

            return Response.AsJson(ncco);
        }
    }
}

El código anterior hará lo siguiente:

Cuando se reciba una llamada, el usuario oirá "Hola. Ahora se le añadirá a la multiconferencia" y, a continuación, se le añadirá a la multiconferencia.

Se pueden añadir varias personas a la conferencia hasta que todas se hayan desconectado.

Ya hemos terminado. Para probar esta aplicación de ejemplo, se requieren algunos pasos más de configuración.

Cómo vincular tu aplicación a Vonage

Si nos has seguido hasta ahora, ya habrás configurado tu cuenta de Vonage y creado una aplicación de voz como se muestra en esta publicación. Necesitamos vincular esta aplicación a un número de teléfono de Vonage al que vamos a llamar.

Si no tiene número, puede adquirir uno utilizando el tablero de mandos o usando la CLI de Vonage:

vonage numbers:search US vonage numbers:buy [NUMBER] [COUNTRYCODE]

Del mismo modo, para vincular el número, puede utilizar el cuadro de mandos o la CLI:

vonage apps:link --number=VONAGE_NUMBER APP_ID

Tenemos que decirle a Vonage a qué URL hacer una solicitud cuando se recibe una llamada - esto se llama el archivo answer_url. En mi caso, esta URL es http://localhost:63286/webhook/answer y sólo se ejecuta localmente.

Para exponer la URL de respuesta de nuestro webhook, utilizaremos Ngrok.

ngrok http 63286

Ahora tenemos una nueva URL (la mía es http://<SUBDOMAIN>.ngrok.io) que se puede utilizar como answer_url para la aplicación de voz.

Actualice su solicitud con su nuevo answer_url. Debería verse como http://subdomain.ngrok.io/webhook/answer. Ejecute la aplicación y pruébela llamando a la función TO_NUMBER.

Más información

Referencias y herramientas API

Guías de iniciación Nexmo para ASP.NET

Compartir:

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

Rabeb fue defensora de los desarrolladores en Nexmo, centrándose en las API de comunicación en la nube y ayudando a los desarrolladores a obtener la mejor experiencia posible al crear sus aplicaciones. Además de escribir código para ganarse la vida, Rabeb aboga por atraer a más mujeres y minorías a la tecnología, de ahí su participación en Women Who Code y en diferentes comunidades tecnológicas. Dirige la red Women Who Code en Bristol.