
Compartir:
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.
Cómo gestionar las entradas del usuario con ASP.NET Core
Tiempo de lectura: 3 minutos
Este es el cuarto tutorial sobre cómo utilizar Voice API con la serie ASP.NET. En el tutorial anterior, aprendimos cómo Recibir una Llamada Telefónica con Vonage Voice API, ASP.NET Core, y NancyFX. Este es un gran comienzo, pero en un escenario de la vida real esperamos algún tipo de interacción con la persona que llama. Tal vez se les pida que elijan una opción o introduzcan un PIN. Necesitamos una forma de manejar la entrada del usuario.
Ese es exactamente el objetivo de este tutorial; crearemos una aplicación ASP.NET que gestione las llamadas de voz entrantes y responda a las entradas del usuario utilizando la Voice API de Vonage.
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.
Recibir llamadas entrantes dentro de la aplicación.
Crear y devolver NCCOs.
Manejar la entrada del usuario.
Ejecuta y prueba el código utilizando Ngrok.
Requisitos previos
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.
Visual Studio 2017.
Una configuración de proyecto para esta serie de tutoriales, que se puede encontrar en Github.
Opcional: La 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 el post "Nexmo Voice API con ASP.NET: Antes de empezar".. Una vez que la configuración se realiza correctamente, ¡estamos listos para recibir una llamada entrante y manejar la entrada del usuario con la Voice API de Vonage!
Recepción de una llamada telefónica y gestión de entradas con ASP.NET
Cuando se recibe una llamada, la Voice API de Vonage hará una solicitud a tu aplicación para averiguar cómo responder. En esta publicación, usaremos Text-To-Speech para saludar a la persona que llama y la acción input para recopilar la entrada DTMF de la persona que llama.
DTMF (Dual Tone Multi Frequency) es una forma de señalización utilizada por los sistemas telefónicos para transmitir los dígitos 0-9 y los * y # caracteres. Normalmente, la persona que llama pulsa estos botones en el teclado del teléfono y éste genera un tono compuesto por dos frecuencias que se reproducen simultáneamente (de ahí lo de Dual Tone).
Para capturar DTMF en nuestra aplicación, 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 estableceremos una ruta a /webhook/answer que responderá con el ncco devuelto por GetDTMFNCCO()
using Nancy;
using Newtonsoft.Json.Linq;
namespace NexmoVoiceASPNetCoreQuickStarts
{
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => GetDTMFNCCO();
}
private string GetDTMFNCCO()
{
dynamic TalkNCCO = new JObject();
TalkNCCO.action = "talk";
TalkNCCO.text = "Hello. Please press any key to continue.";
JArray jarrayObj = new JArray();
jarrayObj.Add(TalkNCCO);
dynamic InputNCCO = new JObject();
InputNCCO.action = "input";
InputNCCO.maxDigits = "1";
InputNCCO.eventUrl = $"{Request.Url.SiteBase}/webhook/dtmf";
jarrayObj.Add(InputNCCO);
return jarrayObj.ToString();
}
}
}El código anterior hará lo siguiente:
Cuando se recibe una llamada, Vonage le indicará al usuario que presione cualquier tecla leyendo el texto "Hola. Presione cualquier tecla para continuar". Cuando el usuario presiona una tecla, pasamos esa entrada a webhook/dtmf donde se manejará correctamente. Para manejar el DTMF, necesitamos decirle al módulo Nancy cómo responder una vez recibida la petición. En este caso, simplemente leeremos a la persona que llama qué tecla ha pulsado.
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => GetDTMFNCCO();
Post["/webhook/dtmf"] = x => GetDTMFInput();
}
private string GetDTMFNCCO()
{
dynamic TalkNCCO = new JObject();
TalkNCCO.action = "talk";
TalkNCCO.text = "Hello. Please press any key to continue.";
JArray jarrayObj = new JArray();
jarrayObj.Add(TalkNCCO);
dynamic InputNCCO = new JObject();
InputNCCO.action = "input";
InputNCCO.maxDigits = "1";
InputNCCO.eventUrl = $"{Request.Url.SiteBase}/webhook/dtmf";
jarrayObj.Add(InputNCCO);
return jarrayObj.ToString();
}
private string GetDTMFInput()
{
dynamic TalkNCCO = new JObject();
TalkNCCO.action = "talk";
TalkNCCO.text = $"You pressed {Request.Query["dtmf"]} ";
JArray jarrayObj = new JArray();
jarrayObj.Add(TalkNCCO);
return jarrayObj.ToString();
}
}Ya hemos terminado. Para probar esta aplicación de ejemplo, se requieren algunos pasos más de configuración.
Si has seguido hasta ahora, ya habrás configurado tu cuenta de Vonage y creado una aplicación de voz como se muestra en este post. Necesitamos vincular esta aplicación al número de teléfono de Vonage al que vamos a llamar. Si no tienes un número, puedes comprar uno usando el panel de control o la CLI:
vonage numbers:search US
vonage numbers:buy <PHONE_NUMBER> USDel mismo modo, para vincular el número, puede utilizar el cuadro de mandos o la CLI:
vonage link:app --number=PHONE_NUMBER APP_IDTenemos 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, usaremos Ngrok.
ngrok http 63286Ahora tenemos una nueva url (la mía es http://5e18af56.ngrok.io) que se puede utilizar como el answer_url para la aplicación Voice. Actualiza tu aplicación con tu nuevo answer_url. Debería verse como http://[id].ngrok.io/webhook/answer¡Listo! Ejecuta la aplicación y pruébala llamando al número de Vonage que compraste.
Más información
Referencias y herramientas API
Guías de introducción de Vonage para ASP.NET
Compartir:
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.
