
Compartir:
Antiguo desarrollador .NET Advocate @Vonage, ingeniero de software poliglota full-stack, AI/ML
Cómo recibir recibos de entrega de SMS con ASP.NET Core MVC
Después de enviar un mensaje SMS, conviene validar que el mensaje ha llegado a su destino. Afortunadamente, esa es una funcionalidad que puedes crear fácilmente con ASP.NET. En este ejemplo, recibiremos un webhook de la SMS API de Vonage e imprimiremos el JSON de ese webhook en la consola.
Ejemplo de Repo
Si quieres saltarte el paso a paso y simplemente jugar con el ejemplo, el código está disponible en GitHub.
Requisitos previos
La última versión del .NET Core 3.1 SDK
Visual Studio 2019, Visual Studio para Mac o Visual Studio Code: utilizaré Visual Studio Code para esta demostración.
Estoy enviando un mensaje SMS con el Nexmo CLI. Usted puede utilizar eso, o incluso podría añadir tu propia lógica de envío a esta aplicación¡!
Opcional-Usé ngrok para probar esta demostración
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.
Construir la aplicación
Crear la aplicación
Abra su consola y navegue hasta el directorio en el que desea crear el proyecto. Cuando estés en el directorio correcto, ejecuta el comando:
Ahora cd en ReceiveDlrAspNet y añade el paquete Vonage utilizando el siguiente comando:
Abra este directorio en VS Code.
Añadir la ruta
A continuación, añadiremos la ruta del recibo de entrega a nuestro controlador de inicio. Abra Controllers\HomeController.cs y añade lo siguiente a la clase HomeController clase
[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();
} Pruebas
Desde una perspectiva de desarrollo, eso es todo lo que necesitábamos hacer, así que vamos a seguir adelante y entrar en la prueba. Vamos a probar esto con ngrokque nos permite construir un túnel de acceso público a nuestra aplicación. Esto es útil cuando necesitamos exponer puntos finales HTTP públicamente disponibles para nuestras aplicaciones. Si usted va a probar esto con IIS Express, usted querrá comprobar nuestro explicación sobre el tema ya que hay consideraciones especiales. Esto se reduce a que tenemos que añadir una opción --host-header cuando iniciemos ngrok.
Configurar Kestrel o IIS Express
Abrir Properties\launchSettings.json. Verá que aquí hay dos objetos iisSettings y profiles. profiles tiene dos objetos, IIS Express y ReceiveDlrAspNet (suponiendo que así haya llamado a su proyecto). Si está ejecutando en IIS Express, cambie el elemento applicationUrl del objeto iisSettings por http://localhost:5000 y ponga el sslPort a 0. Si está usando kestrel (como yo), elimine la sección https://localhost:5001 del objeto ReceiveDlrAspNet del objeto. Ambas cosas harán que la aplicación se ejecute en localhost:5000lo que nos permitirá hacer que ngrok reenvíe mensajes.
Iniciar la aplicación
En su terminal, ejecute el comando dotnet run.
Inicio Ngrok
Inicie ngrok utilizando el siguiente comando:
Aparecerá una pantalla parecida:
ngrok
Si navegas a la dirección de reenvío para HTTP (en mi caso http://2ad8b960630f.ngrok.iopero la parte 2ad8b960630f variará en el plan gratuito de ngrok), verás la página de bienvenida genérica para una aplicación ASP.NET Core. No hemos cambiado ninguna de las vistas, así que eso significa que tu app está lista y accesible.
Configure sus Webhooks
Lo último que debemos hacer antes de estar listos para recibir webhooks es indicarle a Vonage dónde enviar los webhooks; en mi caso, quiero que se envíen al punto final accesible en http://2ad8b960630f.ngrok.io/webhooks/dlr. Para ello, ve a la página página de configuración del panel de control y establece la configuración Delivery receipts a la dirección de tu propio punto final. Además, establezca el parámetro HTTP Method en POST-JSONya que suponemos que se trata de una solicitud POST con una carga JSON.
Dashboard settings
Haz clic en el botón Guardar y ya estarás listo para recibir recibos de envío de SMS.
Enviar un SMS
Para este ejemplo, voy a enviar un SMS con la CLI de nexmo. Es tan fácil como ejecutar:
Introduce confirm para enviar, y en la consola donde se ejecuta tu aplicación verás algo parecido a:
Delivery receipt example
Recursos
El código de este tutorial se encuentra en GitHub
