BEACHSIDE BLOG

MicrosoftとかC#を好むレンジャーの個人的メモ

Bot Builder V4 (4.0.1-preview) 開発入門 : C# : Azure へ デプロイ

2019-10追記: 2018年9月末に GA したバージョン V4.0.7 で、破壊的変更が多かったためこのバージョンと互換の無い部分があります。バージョンにご注意くださいね。

Bot Builder V4 で開発した Bot を Azure にデプローイして動かそうってお話です。前回からの引き続きの目次になってます。

Overview

前置き:どこへデプロイ?

Bot Builder V4 で出来上がるのは、ASP.NET Core の単なる Web API なので、Azure におけるデプロイ先は AppService 系... つまりは WebApps や Azure Functions (Azure のポータル的にいうと Function App)とかになります。

VM で...とか?PaaS 野郎の私のにはそんな選択肢ありません。)

そうすると、愚直に WebApps や Azure FuFunctions App にデプロイするよりは、専用の「Bot Service」にデプロイする方がベターです。

なぜなら、ボットを公開するためしなければならない補助機能(AppIDの登録、WebChat でのテストのUIとかChannel の登録関連のあれとか)がついてるからです。

Bot Service と Bot Builder V4 について、2018-7 時点の情報を雑にまとめるとこんな感じ。

Azure の
サービス
概要 Bot Builder V4
対応
Web App Bot WebApps ベースのBot サービス。
App Service Plan による課金体系
Functions Bot Azure Functions ベースの Bot サービス。
従量課金 or App Service Plan による課金の選択可能

現状での選択肢は、Web App Bot が最適です(ってか1択...)。さー作りましょう。


2-1. Azure ポータルから Web Bot 作成

Bot Service (Web Bot) の作成

Azure のポータルから、リソースの作成 > 検索で「bot」と入力 > 検索結果から Web App Bot をクリックします。

f:id:beachside:20180719160518p:plain


Web App Bot の構成の入力画面になります。

適当に(適切に)入力して 作成 をクリックしましょう。

ポイントは、ボットテンプレートの選択で「SDKバージョン」を 「SDK v4 プレビュー」を選択することですね。現時点では、V4のテンプレートは一つしかないようです。

それ以外で最近一年くらいの私の個人的な趣味だと、

  • リソースグループ名は、「.」区切りで分かりやすい命名をする。今回だと「Bot.V4.sample1」(sample1が分かりやすいかどうかはさておき!)
  • リージョンは基本 West US2(理由は特になし!)
  • いつも「yoko」ってプリフィックスつけてますが、「よーこ」じゃなくて私の苗字の一部「横」です...

f:id:beachside:20180719160530p:plain


これで、選択したテンプレートのプログラムがデプロイされた Bot Service の作成が始まります。
リソースが作成されたら、Azure ポータル上で軽く Bot Service を触ってみましょう。

Web チャットでテスト

作成したリソースグループを開くと、Bot Service を作成したときに何が作られたか把握できますね。
その中で「種類」が「Web アプリ ボット」のリソースを開きます。

f:id:beachside:20180719160541p:plain


Web チャットでテスト」をクリックすると、WebChat のUI が表示され、デプロイされているボットと会話のテストをすることができます。

f:id:beachside:20180719160554p:plain


ここで動作しているソースコードは、「ビルド」をクリックすると、zip ファイルでダウンロードできます。このメニューで CI・CDの構成を始めることもできます。

f:id:beachside:20180719160605p:plain


ただ、ダウンロードできるソースコードは、前回のブログでつくったコード(+デプロイ関連で利用するスクリプト、開発自体には不要)と類似のもので、勝手なプロジェクト名が付けられたものです。
自身でプロジェクト名をつけたいなら、VS2017 からプロジェクトを作成した方がよいと思います。Naming is 大事!

2-2. VS2017 からデプロイ

WebApps 使ったことある方ならおなじみのデプロイをするだけの簡単な手順です。前回のブログでつくったプログラムを VS 2017 で開きます。

(ほぼ同じプログラムをデプロイしても見分けがつかないので、ボットの応答を日本語に変更しときました。)

VS 2017 のソリューションエクスプローラーで、プロジェクト名(今回だと「EchoV4Sample」)を右クリックし、発行 をクリックします。

f:id:beachside:20180719163932p:plain

「発行プロファイル」がない場合、「発行先を選択」のダイアログが表示されます。 App Service >既存のものを選択 して 発行 をクリックしましょう。

f:id:beachside:20180719163914p:plain


先ほど作成した Bot Service のインスタンス(正確には Bot Service で作成された Web App のインスタンス)を選択して OK をクリックすればデプロイできます。

f:id:beachside:20180719163859p:plain


VS 2017 の出力ウィンドウで正常に完了したか確認しましょう。エラーがあればここに出るはずです。

f:id:beachside:20180719163848p:plain


Azure ポータルに戻って動作を確認しましょう。
先ほど開いていた「Web アプリ ボット」のリソースを開き、Webチャットから動作確認ができますね。

f:id:beachside:20180719162521p:plain


2-3. Channel に接続

クライアント側、SkypeFacebook Messenger といったコネクターが用意されているチャネルや、DIRECT LINE という機能を使ってコネクターが用意されているもの以外に接続してチャットボットを公開する場合は、「チャンネル」から登録が容易にできます。

f:id:beachside:20180719162539p:plain


ここら辺は、V3の時から変わらずポチポチーでできちゃうので、公式ドキュメントのリンクをはるだけにしておきます。

docs.microsoft.com


おわりに

前回と今回で、なんらかの Bot を作って公開するところまでできました。あとは、どんなボットを作るか、ボットのロジックに開発を集中できそうですね。

あと、今回は Azure のリソースを作ったので、多少なりとも課金がかかるのが嫌な場合、リソースグループごと削除を忘れずにしましょう

次は、会話の情報を保持したりするためのあれこれについて整理します。

beachside.hatenablog.com