
Compartilhar:
Rabeb era Developer Advocate na Nexmo, com foco em APIs de comunicação em nuvem e em ajudar desenvolvedores a terem a melhor experiência possível ao criarem seus aplicativos. Além de ganhar a vida escrevendo código, Rabeb defende a inclusão de mais mulheres e minorias no setor de tecnologia, daí seu envolvimento com a Women Who Code e com diversas comunidades tecnológicas. Ela lidera a rede Women Who Code em Bristol.
Encaminhar uma chamada por meio do proxy de voz com o ASP.NET Core
Tempo de leitura: 3 minutos
Este é o quinto tutorial da série sobre como usar Voice APIs com o ASP.NET.
No tutorial anterior, aprendemos como lidar com entradas do usuário no ASP.NET Core.
Hoje em dia, usamos muitos aplicativos e serviços que exigem que nos comuniquemos com outra pessoa, geralmente um desconhecido, por meio de ligações ou mensagens. Pense, por exemplo, nos aplicativos de entrega de comida ou de reserva de táxi.
Uma maneira de proteger ambas as partes é ocultar seus números de telefone por meio de um número intermediário. Isso é conhecido como Voice Proxy.
Vamos ver como podemos implementar essa técnica usando as Voice APIs da Vonage.
Objetivos de aprendizagem
Neste tutorial, vamos:
Crie um aplicativo ASP.NET Core.
Use o NancyFX com o ASP.NET Core.
Crie uma aplicação de voz da Vonage.
Criar e devolver os NCCOs.
Execute e teste o código usando o Ngrok.
Pré-requisitos
Visual Studio 2017 ou versão posterior.
Um account da Vonage, na qual você pode criar aqui.
Uma configuração de projeto para esta série de tutoriais, que você pode encontrar no GitHub.
Opcional: O CLI da Vonage.
Configuração
Para usar a Voice API da Vonage, precisamos criar um aplicativo de voz.
As etapas de configuração estão detalhadas no Voice API da Vonage com ASP.NET: Antes de começar postagem
Assim que a configuração for concluída com sucesso, estaremos prontos para encaminhar uma chamada.
Encaminhamento de uma chamada telefônica
Quando uma chamada é recebida, a Voice API da Vonage enviará uma solicitação ao seu aplicativo para determinar como responder.
Para isso, vamos usar o NancyFX em conjunto com nosso projeto ASP.NET Core.
Antes de mais nada, precisamos adicionar a Nancy ao nosso projeto:
PM> Install-Package Nancy
PM> Install-Package Microsoft.AspNetCore.Owin
Para que o Nancy possa processar quaisquer solicitações HTTP, precisamos configurar o ASP.NET Core para usar o Nancy por meio de Owin no Configure método 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());
}
}
}
O próximo passo é criar um módulo do Nancy no qual configuraremos uma rota para /webhook/answer que responderá com o ncco retornado por GetConnectNCCO()
using Nancy;
using Vonage.Voice.Nccos;
using Vonage.Voice.Nccos.Endpoints;
namespace NexmoVoiceASPNetCoreQuickStarts
{
public class VoiceModule : NancyModule
{
public VoiceModule()
{
Get["/webhook/answer"] = x => { var response = Response.AsJson(GetConnectNCCO());
response.ContentType = "application/json";
return response;
};
}
private Ncco GetConnectNCCO()
{
var ncco = new Ncco();
ncco.Actions.Add(new ConnectAction
{
From = "VONAGE_NUMBER",
Endpoint = new[] {
new PhoneEndpoint
{
Number = "TO_NUMBER"
}
}
});
return ncco;
}
}
}
O código acima fará o seguinte:
Quando uma chamada é recebida, a Vonage oculta o número original do chamador e, em vez disso, usa um número virtual como fachada para essa chamada.
Pronto! Para testar este aplicativo de exemplo, são necessárias mais algumas etapas de configuração.
Se você acompanhou tudo até aqui, já configurou sua conta da Vonage e criou um aplicativo de voz, conforme mostrado em esta postagem. Precisamos vincular esse aplicativo a um número de telefone da Vonage para o qual vamos ligar. Se você não tiver um número, pode adquirir um usando o painel de controle ou pela CLI:
vonage nubmers:search US
vonage numbers:buy [NUMBER] [COUNTRYCODE]Da mesma forma que para vincular o número, você pode usar o painel ou a CLI:
vonage apps:link --number=VONAGE_NUMBER APP_IDPrecisamos informar à Vonage para qual URL enviar uma solicitação quando uma chamada for recebida — isso é chamado de answer_url. No meu caso, essa URL é http://localhost:63286/webhook/answer e está rodando apenas localmente. Para expor a URL de resposta do nosso webhook, vamos usar o o Ngrok.
ngrok http 63286Agora temos uma nova URL (http://userSubdomain.ngrok.io) que pode ser usada como answer_url para o aplicativo de voz. Atualize seu aplicativo com o novo endereço answer_url. Deve ficar assim: http://userSubdomain.ngrok.io/webhook/answer
Pronto! Execute o aplicativo e teste ligando para o TO_NUMBER; você vai perceber que, do outro lado, não aparecerá o número de telefone que você está usando, mas sim o seu VONAGE_NUMBER.
Saiba mais
Referências e ferramentas da API
Guias de introdução da Nexmo para ASP.NET
Compartilhar:
Rabeb era Developer Advocate na Nexmo, com foco em APIs de comunicação em nuvem e em ajudar desenvolvedores a terem a melhor experiência possível ao criarem seus aplicativos. Além de ganhar a vida escrevendo código, Rabeb defende a inclusão de mais mulheres e minorias no setor de tecnologia, daí seu envolvimento com a Women Who Code e com diversas comunidades tecnológicas. Ela lidera a rede Women Who Code em Bristol.