https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-send-an-sms-with-blazor/Blog_Blazor_SMS_1200x600.png

Comment envoyer un SMS avec Blazor

Publié le May 5, 2021

Temps de lecture : 6 minutes

Blazor est le dernier d'une série de ce que j'appellerais de "magnifiques" cadres web conviviaux pour les développeurs que .NET a construits. Dans ce tutoriel, nous verrons comment envoyer un SMS à l'aide de Blazor et de l'API SMS DE VONAGE.

Aller directement au code

Tout le code de ce tutoriel se trouve sur GitHub.

Conditions préalables

  • Vous aurez besoin de la dernière version du NET Core 3.1 SDK

  • Vous aurez besoin soit de Visual Studio 2019, soit de Visual Studio pour Mac, soit de Visual Studio Code - j'utiliserai VS Code pour 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

Naviguez jusqu'à l'endroit où vous souhaitez créer l'application et exécutez la commande suivante dans votre terminal :

dotnet new blazorserver -o SendSmsBlazor

Cela créera pour vous une application serveur blazor appelée SendSmsBlazor. cd dans ce répertoire et entrez la commande code . pour lancer VS Code. Pour les utilisateurs de Visual Studio, vous pouvez simplement ouvrir le fichier sln.

Ajouter le paquet Vonage Nuget

Ouvrez un terminal en VSCode et exécutez :

dotnet add package Vonage

Ceci installera le paquet Vonage dans le projet.

Créez votre SmsService

Nous allons devoir injecter un service SMS dans notre page razor, créons donc un SmsService.

Ajouter un nouveau fichier sous le dossier Data appelé SmsService.cs. Si vous utilisez VS Code, cela va juste créer un fichier vierge, alors ajoutez-y ce qui suit.

using Microsoft.Extensions.Configuration;
using Vonage.Messaging;
using Vonage.Request;

namespace SendSmsBlazor.Data
{
    public class SmsService
    {

    }
}

Ajouter un constructeur

A l'intérieur de la classe SmsService nous devons injecter un objet de configuration. La configuration contiendra notre clé API et notre secret API, que nous configurerons un peu plus tard. Pour l'instant, tout ce que vous avez à faire est d'ajouter une nouvelle propriété à l'intérieur de la classe SmsService appelée Configuration de type IConfiguraiton et d'ajouter un constructeur prenant un objet IConfiguration qui attribuera simplement notre propriété Configuration à cet objet.

public IConfiguration Configuration { get; set; }
public SmsService(IConfiguration config)
{
    Configuration = config;
}

Écrire votre méthode SendSms

À l'intérieur du SmsServicenous allons ajouter une méthode SendSms à l'intérieur de , nous allons ajouter une méthode Cette méthode prendra trois chaînes : to, from, et text qui contiendront le numéro auquel le message est destiné, le numéro de l'API Vonage d'où provient le message et le texte du message.

Du point de vue de ce service, il ne reste plus qu'à faire :

  1. Extraire la clé et le secret de l'API de la configuration

  2. Créer un SmsClient

  3. Envoyer le SMS

Tout cela peut être réalisé grâce aux éléments suivants :

public SendSmsResponse SendSms(string to, string from, string text)
{
    var apiKey = Configuration["VONAGE_API_KEY"];
    var apiSecret = Configuration["VONAGE_API_SECRET"];
    var creds = Credentials.FromApiKeyAndSecret(apiKey,apiSecret);
    var client = new SmsClient(creds);
    var request = new SendSmsRequest
    {
        To= to,
        From = from,
        Text = text
    };
    return client.SendAnSms(request);
}

Configurer SmsService en tant que service injectable

Maintenant que nous avons construit le service, nous devons nous assurer que nous pouvons l'injecter dans notre page razor. Pour ce faire, nous devons aller dans Startup.cs et trouver la fonction ConfigureServices et la trouver. Ajoutez la ligne suivante à la fin de cette fonction, et le service sera injectable :

services.AddSingleton<SmsService>();

Ajouter un frontend

Nous allons utiliser le fichier Pages/Index.razor pour notre frontend, donc il suffit de l'ouvrir et de supprimer tout ce qui se trouve en dessous de la ligne 2.

Injection de dépendance SmsService

La première chose à faire ici est d'insérer notre fichier SmsService. À cette fin, ajoutez un using et un inject comme suit :

@using SendSmsBlazor.Data
@inject SmsService SmsService

Ajouter du code C# pour envoyer le message

L'un des aspects les plus intéressants de Blazor est qu'il permet d'exécuter du code C# dans le navigateur - il suffit d'un bloc @code{} et c'est parti. En faisant cela, nous créons une classe anonyme en ligne, nous allons donc ajouter un bloc To, From, Text, , et MessageId à cette classe anonyme et ajouter une méthode appelée SendSms qui appellera notre SmsService. Cela va ressembler à ceci :

@code{
    private string To;
    private string From;
    private string Text;
    private string MessageId;
    private void SendSms()
    {
        var response = SmsService.SendSms(To, From, Text);
        MessageId = response.Messages[0].MessageId;
    }
}

Ajouter des champs de saisie et un bouton d'envoi

Maintenant que tout cela est fait, nous allons ajouter quelques champs de saisie. Les champs To, From, et Text seront remplis en les liant à ces champs de saisie avec l'attribut @bind à ces champs de saisie. En bas, juste au-dessus du bouton, nous afficherons l'envoi MessageId en le référençant dans une balise de paragraphe. Enfin, nous ajouterons un bouton au bas de la page qui appellera le bouton SendSms de notre classe anonyme lorsqu'il sera cliqué. Ajoutez ce qui suit entre le bloc @code et le bloc @inject et le bloc

<h1>Send an SMS!</h1>

Welcome to your new app Fill out the below form to send an SMS.
<br />
to:
<input id="to" @bind="@To" class="input-group-text" />
from:
<input id="from" @bind="From" class="input-group-text" />
text:
<input id="text" @bind="Text" class="input-group-text" />
<p>@MessageId</p>
<button class="btn btn-primary" @onclick="SendSms">Send SMS</button>

Configurer l'application

La dernière chose à faire avant de lancer notre serveur est de le configurer. Si vous vous souvenez bien, vous définissez un objet IConfiguration dans le fichier SmsService. Tout ce que vous avez à faire est d'ouvrir appsettings.json et d'ajouter deux propriétés à la configuration VONAGE_API_KEY et VONAGE_API_SECRET. Définissez-les comme étant les valeurs de la clé et du secret de l'API dans l'élément tableau de bord.

Exécuter notre application

Une fois tout cela fait, retournez dans votre terminal et exécutez la commande suivante.

dotnet run

Votre application vous indiquera le port sur lequel elle écoute - pour moi, c'est le port 5001. localhost:5001Je remplis le formulaire et je clique sur EnvoyerSms. Vous verrez le SMS sur le numéro auquel vous l'avez envoyé, l'ID du message apparaissant juste en dessous du champ de texte.

Ressources

Le code de cette démo se trouve dans GitHub.

Partager:

https://a.storyblok.com/f/270183/384x384/73d57fd8eb/stevelorello.png
Steve LorelloAnciens de Vonage

Ancien développeur .NET Advocate @Vonage, ingénieur logiciel polyglotte full-stack, AI/ML