
Compartilhar:
Steve é um ex-membro da equipe da Vonage. Ele atuou como Developer Advocate .NET na Vonage, engenheiro de software full-stack poliglota, especializado em IA/ML
Como receber confirmaciones de entrega de SMS com o ASP.NET Core MVC
Depois de enviar uma mensagem SMS, é recomendável verificar se a mensagem foi entregue ao destinatário. Felizmente, essa é uma funcionalidade que você pode implementar facilmente com o ASP.NET. Neste exemplo, receberemos um webhook da SMS API da Vonage e exibiremos o JSON desse webhook no console.
Exemplo de Repo
Se você quiser pular o passo a passo e simplesmente experimentar o exemplo, o código está disponível no GitHub.
Pré-requisitos
A versão mais recente do SDK do .NET Core 3.1
Seja o Visual Studio 2019, o Visual Studio para Mac ou o Visual Studio Code — vou usar o Visual Studio Code para esta demonstração
Estou enviando uma mensagem SMS com o CLI da Nexmo. Você pode usar isso ou até mesmo adicionar sua própria lógica de envio a este aplicativo!
Opcional — Eu usei o ngrok para testar esta demonstração
Crie o aplicativo
Criar o aplicativo
Abra o terminal e navegue até o diretório no qual você deseja criar o projeto. Quando estiver no diretório correto, execute o comando:
Agora cd na ReceiveDlrAspNet e adicione o pacote Vonage usando o seguinte comando:
Abra este diretório no VS Code.
Adicionar a rota
A seguir, vamos adicionar a rota do recibo de entrega ao nosso controlador inicial. Abra Controllers\HomeController.cs e adicione o seguinte à HomeController classe:
[HttpPost("/webhooks/dlr")]
public async Task<IActionResult> HandleDlr()
{
using(var reader = new System.IO.StreamReader(Request.Body))
{
var json = await reader.ReadToEndAsync();
Console.WriteLine(json);
}
return NoContent();
} Testes
Do ponto de vista do desenvolvimento, isso é tudo o que precisávamos fazer; então, vamos seguir em frente e passar para os testes. Vamos testar isso com ngrok, que nos permite criar um túnel acessível ao público para nosso aplicativo. Isso é útil quando precisamos expor pontos de extremidade HTTP publicamente disponíveis para nossos aplicativos. Se você for testar isso com o IIS Express, é recomendável conferir nosso guia explicativo sobre o assunto , pois há considerações especiais. Resumindo, precisamos adicionar a opção --host-header opção ao iniciar o ngrok.
Configurar o Kestrel ou o IIS Express
Abrir Properties\launchSettings.json. Você vai notar dois objetos aqui: iisSettings e profiles. profiles tem dois itens, IIS Express e ReceiveDlrAspNet (supondo que seja esse o nome que você deu ao seu projeto). Se você estiver executando no IIS Express, altere o applicationUrl do iisSettings objeto para http://localhost:5000 e defina o sslPort para 0. Se você estiver usando o Kestrel (como eu), vá em frente e exclua a https://localhost:5001 seção do ReceiveDlrAspNet objeto. Ambas as ações farão com que o aplicativo seja executado no localhost:5000, o que nos permitirá fazer com que o ngrok encaminhe as mensagens.
Inicie o aplicativo
No seu terminal, execute o comando dotnet run.
Iniciar o Ngrok
Inicie o ngrok usando o seguinte comando:
Isso abrirá uma janela semelhante a esta:
ngrok
Se você acessar o endereço de redirecionamento para HTTP (no meu caso http://2ad8b960630f.ngrok.io, mas a 2ad8b960630f parte irá variar no plano gratuito do ngrok), você verá a página de boas-vindas genérica de um aplicativo ASP.NET Core. Não alteramos nenhuma das visualizações, o que significa que seu aplicativo está no ar e acessível!
Configure seus webhooks
A última coisa que precisamos fazer antes de estarmos prontos para receber webhooks é informar à Vonage para onde enviá-los — no meu caso, quero que sejam enviados para o endpoint acessível em http://2ad8b960630f.ngrok.io/webhooks/dlr. Para fazer isso, acesse a página de configurações do painel e defina a Delivery receipts configuração para o end-point de sua escolha. Além disso, defina o HTTP Method para POST-JSON, já que estamos assumindo que se trata de uma solicitação POST com uma carga JSON.
Dashboard settings
Clique no botão “Salvar” e pronto: você já está configurado para receber confirmaciones de entrega por SMS!
Enviar um SMS
Neste exemplo, estou enviando um SMS usando a CLI do Nexmo. É tão fácil quanto executar:
Digite confirm para enviar e, no console onde seu aplicativo está sendo executado, você verá algo mais ou menos assim:
Delivery receipt example
Recursos
O código deste tutorial pode ser encontrado em GitHub