
Partager:
Ancien développeur .NET Advocate @Vonage, ingénieur logiciel polyglotte full-stack, AI/ML
Comment recevoir des accusés de réception de SMS avec ASP.NET Core MVC
Après l'envoi d'un SMS, il est bon de valider que le message a été livré à sa destination. Heureusement, il s'agit d'une fonctionnalité que vous pouvez facilement créer avec ASP.NET. Dans cet exemple, nous recevrons un webhook de l'API SMS de Vonage et nous imprimerons le JSON de ce webhook sur la console.
Exemple de repo
Si vous voulez sauter le pas-à-pas et simplement jouer avec l'exemple, le code est disponible sur GitHub.
Conditions préalables
La dernière version du NET Core 3.1 SDK
Soit Visual Studio 2019, soit Visual Studio pour Mac, soit Visual Studio Code - j'utiliserai Visual Studio Code pour cette démo.
J'envoie un SMS avec la Nexmo CLI. Vous pouvez l'utiliser, ou vous pouvez même ajouter votre propre logique d'envoi à cette application!
Facultatif - J'ai utilisé ngrok pour tester cette démo
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.
Créer l'application
Créer l'application
Ouvrez votre console et naviguez jusqu'au répertoire dans lequel vous souhaitez créer le projet. Lorsque vous êtes dans le bon répertoire, exécutez la commande :
Aujourd'hui cd dans ReceiveDlrAspNet et ajoutez le paquetage Vonage à l'aide de la commande suivante :
Ouvrez ce répertoire dans VS Code.
Ajouter l'itinéraire
Ensuite, nous allons ajouter la route du récépissé de livraison à notre contrôleur principal. Ouvrez Controllers\HomeController.cs et ajoutez ce qui suit à la HomeController et ajoutez ce qui suit à la 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();
} Essais
Du point de vue du développement, c'est tout ce que nous avions à faire, alors passons aux tests. Nous allons tester ceci avec ngrokqui nous permet de construire un tunnel accessible au public vers notre application. C'est utile lorsque nous avons besoin d'exposer des points de terminaison HTTP accessibles au public à nos applications. Si vous allez tester ceci avec IIS Express, vous voudrez bien consulter notre explicatif sur le sujet car il y a des considérations particulières à prendre en compte. En résumé, nous devons ajouter une option --host-header au démarrage de ngrok.
Configurer Kestrel ou IIS Express
Ouvrir Properties\launchSettings.json. Vous remarquerez deux objets ici : iisSettings et profiles. profiles a deux éléments, IIS Express et ReceiveDlrAspNet (en supposant que c'est le nom que vous avez donné à votre projet). Si vous utilisez IIS Express, modifiez la valeur de l'élément applicationUrl de l'objet iisSettings en http://localhost:5000 et définissez l'objet sslPort à 0. Si vous utilisez kestrel (comme moi), allez-y et supprimez la section https://localhost:5001 de l'objet ReceiveDlrAspNet de l'objet. Dans les deux cas, l'application fonctionnera sur localhost:5000ce qui nous permettra de faire suivre les messages par ngrok.
Démarrer l'application
Dans votre terminal, exécutez la commande dotnet run.
Démarrer Ngrok
Démarrez ngrok en utilisant la commande suivante :
Un écran semblable à celui-ci s'affiche :
ngrok
Si vous naviguez vers l'adresse de redirection pour HTTP (dans mon cas http://2ad8b960630f.ngrok.iomais la partie 2ad8b960630f varie selon le plan gratuit de ngrok), vous verrez la page de bienvenue générique pour une application ASP.NET Core. Nous n'avons modifié aucune des vues, ce qui signifie que votre application est en place et accessible !
Configurez vos Webhooks
La dernière chose à faire avant d'être prêt à recevoir des webhooks est d'indiquer à Vonage où envoyer les webhooks - dans mon cas, je veux qu'ils soient envoyés au point de terminaison accessible à l'adresse http://2ad8b960630f.ngrok.io/webhooks/dlr. Pour ce faire, accédez à la page du tableau de bord et définissez le paramètre Delivery receipts à l'adresse de votre propre point de terminaison. Définissez également le paramètre HTTP Method à POST-JSONcar nous supposons qu'il s'agit d'une requête POST avec une charge utile JSON.
Dashboard settings
Cliquez sur le bouton d'enregistrement, et vous êtes configuré pour recevoir des accusés de réception par SMS !
Envoyer un SMS
Pour cet exemple, j'envoie un SMS avec la CLI de nexmo. C'est aussi simple que de lancer :
Entrez confirm pour envoyer, et dans la console où votre application est exécutée, vous verrez quelque chose du genre :
Delivery receipt example
Ressources
Le code de ce tutoriel se trouve sur GitHub
