https://a.storyblok.com/f/270183/32274/aeaced6e1e/blog_blazor_sms_1200x600.png

BlazorでSMSを送信する方法

最終更新日 May 5, 2021

所要時間:3 分

Blazorは、.NET が構築した "壮大な "開発者フレンドリーな Web フレームワークの最新作です。このチュートリアルでは、BlazorとVonageを使ってSMSを送信する方法を説明します。 SMS API.

コードへジャンプ

このチュートリアルのコードはすべて GitHub.

前提条件

  • 最新バージョンの .NET Core 3.1 SDK

  • Visual Studio 2019、Visual Studio for Mac、またはVisual Studio Codeのいずれかが必要です。

アプリの作成

アプリをビルドしたい場所に移動し、ターミナルで以下のコマンドを実行する:

dotnet new blazorserver -o SendSmsBlazor

というblazorサーバーアプリが作成されます。 SendSmsBlazor.というアプリが作成されます。 code .でVS Codeを起動します。Visual Studio ユーザーは、sln ファイルを開くだけです。

Vonage Nugetパッケージの追加

VSCodeでターミナルを立ち上げて実行する:

dotnet add package Vonage

これでプロジェクトにVonageパッケージがインストールされます。

SmsServiceの作成

SMSサービスをrazorページに注入する必要があるので、SmsServiceを作成しましょう。

新しいファイルを Dataという名前の新しいファイルを追加する。 SmsService.cs.VS Codeを使用している場合、これは空白のファイルを作成するだけなので、そこに以下を追加する。

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

namespace SendSmsBlazor.Data
{
    public class SmsService
    {

    }
}

コンストラクタの追加

クラスの内部に SmsServiceクラスの中に、コンフィギュレーション・オブジェクトを注入しなければならない。このコンフィギュレーションにはAPIキーとAPIシークレットが含まれる。今のところ、必要なのは SmsServiceクラス内に Configurationというプロパティを追加し IConfiguraitonオブジェクトを取るコンストラクタを追加します。 IConfigurationオブジェクトを取るコンストラクタを追加するだけです。 Configurationプロパティをそのオブジェクトに代入します。

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

SendSmsメソッドを書く

の中に SmsServiceの中に SendSmsメソッドを追加します。このメソッドは3つの文字列を受け取ります: to, fromtextという3つの文字列を受け取ります。この文字列には、メッセージの送信先の番号、メッセージの送信元の Vonage API の番号、そしてメッセージのテキストが含まれます。

このサービスからすれば、あとはやるだけだ:

  1. コンフィギュレーションからAPIキーとシークレットを取り出す

  2. SmsClientの作成

  3. SMSを送信する

これらはすべて、以下の方法で実現できる:

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);
}

SmsService を注入可能として構成する

サービスをビルドしたので、それをrazorページにインジェクトできるようにする必要がある。そのためには Startup.csに入って ConfigureServices関数を探します。この関数の最後に次の行を追加すると、サービスがインジェクト可能になります:

services.AddSingleton<SmsService>();

フロントエンドの追加

フロントエンドには Pages/Index.razorをフロントエンドに使うので、それを開いて2行目以下をすべて削除してください。

依存性の注入 SmsService

まず、ここでやるべきことは SmsService.そのために usinginjectステートメントを追加する:

@using SendSmsBlazor.Data
@inject SmsService SmsService

C#コードを追加してメッセージを送信する

Blazorの素晴らしいところは、ブラウザ上でC#コードを実行できることです。 @code{}ブロックさえあればいいのです。こうすることで、無名クラスをインライン化することになります。 To, From, Textそして MessageIdというメソッドを追加します。 SendSmsというメソッドを追加します。これは次のようになります:

@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;
    }
}

入力フィールドと送信ボタンの追加

さて、これですべて片付いたので、いくつかの入力フィールドを追加していこう。入力フィールドは To, FromTextフィールドは、これらの入力フィールドに @bind属性でこれらの入力フィールドにバインドすることで入力されます。一番下、ボタンのすぐ上に、段落タグで参照することによって、送信された MessageIdを表示します。最後に、クリックされたときに匿名クラスの SendSmsボタンを呼び出します。ブロックと @codeブロックと @injectブロックの間に以下を追加します:

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

アプリの設定

サーバーを稼働させる前にしなければならない最後のことは、サーバーの設定である。思い出してみてほしい。 IConfigurationオブジェクトを SmsService.を開き appsettings.jsonを開き、2つのプロパティを設定に追加します。 VONAGE_API_KEYそして VONAGE_API_SECRET.のAPIキーとAPIシークレットの値に設定します。 ダッシュボード.

アプリの実行

これが終わったら、ターミナルに戻って以下のコマンドを実行する。

dotnet run

アプリケーションがリッスンしているポートを教えてくれるだろう。 localhost:5001に移動し、フォームに記入し、SendSmsを押す。送信先の番号にSMSが表示され、テキスト・フィールドのすぐ下にSMSのMessage-IDが表示されます。

リソース

このデモのコードは GitHub.

シェア:

https://a.storyblok.com/f/270183/384x384/73d57fd8eb/stevelorello.png
Steve Lorelloヴォネージの卒業生

スティーブは、かつてVonageチームの一員でした。彼はVonageで.NET開発者アドボケートを務め、フルスタックかつ多言語対応のソフトウェアエンジニアであり、AI/MLの専門家でもありました。