https://a.storyblok.com/f/270183/22883/82234797bc/blog_sms-delivery-receipts_1200x600.png

Como receber confirmaciones de entrega de SMS com o ASP.NET Core MVC

Publicado em May 5, 2021

Tempo de leitura: 7 minutos

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

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:

dotnet new mvc -n ReceiveDlrAspNet

Agora cd na ReceiveDlrAspNet e adicione o pacote Vonage usando o seguinte comando:

dotnet add package Vonage

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:

ngrok http --host-header="localhost:5000" 5000

Isso abrirá uma janela semelhante a esta:

ngrokngrok

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 settingsDashboard 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:

nexmo sms -f VONAGE_NUMBER YOUR_CELLPHONE_NUMBER "Testing DLR"

Digite confirm para enviar e, no console onde seu aplicativo está sendo executado, você verá algo mais ou menos assim:

Delivery receipt exampleDelivery receipt example

Recursos

  • O código deste tutorial pode ser encontrado em GitHub

Compartilhar:

https://a.storyblok.com/f/270183/384x384/73d57fd8eb/stevelorello.png
Steve LorelloEx-funcionários da Vonage

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