Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Azure Bot Services でボットを公開するための最小のコードと手順

$
0
0

Azure Bot Services にボットを公開する最小のコードと手順をやってみようと思います。

というのも、必要最低限を把握してないとその他の応用の部分がどのコードなのかっていうのが把握しにくいと思うので自分は最低限のコードを組むのは一回流行ってる気がします。 いらないと思うものを省いてスリムにね。

ということで、ASP.NET Core の空のプロジェクトからスタートして最終的に Azure にデプロイして動かしてみたいと思います。

プロジェクトの作成

Visual Studio 2017 で ASP.NET Core Web アプリケーションを作成します。空のプロジェクトをさくっとね。HTTPS も特に今はいいのでオフにしてます。

f:id:okazuki:20190223163025p:plain

Bot Framework SDK の ASP.NET Core との統合をしてくれるパッケージを NuGet で入れます。 パッケージ名は Microsoft.Bot.Builder.Integration.AspNet.Coreです。

最小ボットのコードの追加

では、ボットのクラスを作ります。EchoBot とかいう名前で IBot インターフェースを実装したコードを追加します。ボットの対話処理のエントリーポイントになるクラスですね。OnTurnAsync の中にボットでやりたいことを書きます。

using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
using System.Threading;
using System.Threading.Tasks;

namespace MinimumBot
{
    publicclass EchoBot : IBot
    {
        public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (turnContext.Activity.Type == ActivityTypes.Message)
            {
                await turnContext.SendActivityAsync(turnContext.Activity.Text);
            }
        }
    }
}

ボットのクラスが出来たので、Bot Framework SDK にこれが俺のボットだよ!っていうのを教えてあげます。また、ASP.NET Core で Bot Framework SDK の初期化処理を書きます。

Startup.csを開いて Configureメソッドを以下のようにして Bot Framework を使うというのを書きます。

// using Microsoft.Bot.Builder.Integration.AspNet.Core;publicvoid Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseBotFramework();
}

そして、ConfigureServicesメソッドに先ほど作ったボットのクラスの登録処理を書きます。

publicvoid ConfigureServices(IServiceCollection services)
{
    services.AddBot<EchoBot>();
}

ローカルで動作確認

デバッグ実行して URL を確認します。そして、Bot Framework Emulator (V4) を起動してファイルメニューから New Bot Configuration を選択して先ほどの URL に /api/messagesを追加したものを指定します。あとは適当に名前を入れて Save and connectします。

f:id:okazuki:20190223164218p:plain

Azure に公開

では、Azure で Web App を一つ作ります。そして、作成した Web App の URL を控えておきます。

続けて Azure に Bot Channels Registration を作成します。日本語だとボット チャンネル登録ですね。作成時のメッセージング エンドポイントに先ほどゲットした Web App の URL に /api/messagesを追加したものを設定します。

ボット チャンネル登録をデプロイしたリソースグループのデプロイを開くとボットチャンネル登録をデプロイしたときのログが見れるので、それの入力から APPIDAPPSECRETをコピーして控えておきます。

そして、ボットのアプリの Startup.csConfigureServicesメソッドに、その値を設定する処理を追加します。

publicvoid ConfigureServices(IServiceCollection services)
{
    services.AddBot<EchoBot>(options =>
    {
        options.CredentialProvider = new SimpleCredentialProvider("<ここに APPID>", "<ここに APPSECRET>");
    });
}

追加したら先ほど作成した Web App にデプロイします。

動作確認

ボットチャンネル登録の Web チャットでテストを選択するとチャット画面が出るので適当に文字を入力して動くことを確認します。

f:id:okazuki:20190223171000p:plain

まとめ

これが多分最低限だと思います。

あとは Bot Framework SDK で提供されている便利な設定ファイルの読み込みクラスや、対話の状態を管理してくれるダイアログ関連のクラスや、状態管理のクラスや、その他サービスとの連携クラスなどを組み込んでいく感じになります。 Bot Framework SDK 使う人は、ボットとして必要最低限必要なコードがこれで、残りの追加のコードでは何をしてるのだろうというのを把握したうえで書いたり読んだりすると、理解が捗ると思います。

ということで、LINE も対応したみたいだし流行るといいな。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>