
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.
Recibir una llamada telefónica con Vonage Voice API, ASP.NET Core y NancyFX
Tiempo de lectura: 3 minutos
Este es el tercer tutorial sobre cómo utilizar Voice API con la serie ASP.NET.
En tutoriales anteriores, aprendimos cómo hacer una llamada telefónica de texto a voz con ASP.NET y cómo reproducir audio a una persona que llama en ASP.NET Core. Pero, ¿qué hay de recibir llamadas? La buena noticia es que Voice API de Vonage también maneja llamadas entrantes.
Las llamadas entrantes son llamadas realizadas a un número de Vonage desde otro teléfono común en cualquier parte del mundo. Tanto las llamadas entrantes como las salientes siguen el mismo flujo de llamadas una vez respondidas. Este flujo de llamadas está controlado por una OCNC.
En este tutorial, crearemos una aplicación ASP.NET que gestiona las llamadas de voz entrantes y devuelve una respuesta dinámica.
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 una OCN.
Ejecuta y prueba el código utilizando Ngrok.
Requisito previo
Visual Studio 2017.
Una configuración de proyecto para esta serie de tutoriales, que se puede encontrar en Github.
Opcional: La 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.
Configuración
Para utilizar Voice API de Vonagenecesitamos crear una aplicación de voz.
Los pasos de configuración se detallan en el post "API de voz de Vonage con ASP.NET: Antes de comenzar"..
Una vez que la aplicación está configurada correctamente, ¡estamos listos para recibir una llamada entrante con The Vonage Voice API!
Recibir una llamada telefónica con ASP.NET
Cuando se recibe una llamada, Voice API de Vonage hará una solicitud a la aplicación para averiguar cómo responder a la persona que llama.
Para conseguirlo, vamos a utilizar NancyFX junto con nuestro proyecto ASP.NET Core.
Nancy es un framework ligero de código abierto que promueve el "super-duper-happy-path". Esto significa que tiene valores por defecto y convenciones sensatas y trata de mantenerse fuera de nuestro camino tanto como sea posible.
En primer lugar, tenemos que añadir Nancy a nuestro proyecto :
csharp 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());
}
}
}
Ya está todo listo. El siguiente paso es crear un módulo Nancy para manejar cualquier petición a /webhook/answer.
using Nancy;
namespace NexmoVoiceASPNetCoreQuickStarts
{
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => "Hello happy path";
}
}
}
Estoy usando Postman para probar, y como se puede ver nuestra /webhook/answer está devolviendo exactamente lo que se espera.
asp-post
Este es un gran comienzo, pero Vonage no sabe qué hacer con esa cadena. Para responder correctamente a la llamada, necesitamos devolver 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() creará un objeto NCCO que utilizará Text-To-Speech para leer el número de teléfono de la persona que llama utilizando la acción talk dentro del objeto NCCO.
Accedemos al número de teléfono a través del parámetro from en la solicitud.
webhook answer
Ese es todo el código que necesitamos. Para probar esto correctamente, 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 a un número de teléfono de Vonage, el número al que llamaremos. Si no tienes un número, puedes comprar uno usando el panel o la CLI. javascript vonage numbers:buy PHONE_NUMBER US Del mismo modo, para vincular el número, puedes usar el panel o la CLI.
vonage numbers:buy PHONE_NUMBER USDel mismo modo, para vincular el número, puede utilizar el panel de control o la CLI.
vonage apps:link --number=PHONE_NUMBER APP_IDDebemos indicarle a Vonage a qué URL debe realizar una solicitud cuando se recibe una llamada (answer_url). En mi caso, esta URL es http://localhost:63286/webhook/answer y sólo se ejecuta localmente.
Para exponer nuestro answer_urlutilizaremos a nuestro buen amigo Ngrok.
ngrok http 63286 -host-header="localhost:63286"Esto devolverá una nueva URL (la mía es http://5e18af56.ngrok.io) que se puede utilizar como answer_url para la aplicación de voz. Actualiza tu answer_url a http://[id].ngrok.io/webhook/answer
¡Listo! Ejecuta la aplicación y pruébala llamando al número de Vonage que compraste. Debería agradecerte por llamar y luego leer tu número de teléfono.
Más información
Referencias y herramientas API
Guías de iniciación Nexmo 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.
