はじめに
前回Bot Framework Componserのチュートリアルを試してみました。
ので、今回はBot Framework Componserを使って、Microsoft365に登録されている私の予定を教えてくれる&登録してくれる秘書Botくんを作成しました。
※デフォルトのままなら30分あれば作成できますが、日本語対応などをさせるとなると、もう少し時間がかかると思います。
環境
- windows10
- .NET Core SDK3.1
- ボットフレームワークエミュレータ
- Azureのサブスクリプション
できたものとさらにやりたかったこと
できたもの
予定確認&登録秘書Botくんができました。
予定登録↓
最終的にやりたかったこと
Alexaに接続して、Alexaから予定確認&登録すること。。。
AlexaとBotを接続・アカウントリンクさせることは簡単にできました。
ですが、アカウントリンクさせてから、MSGraphの認証に使用するアクセストークンをComposer側でどうすれば簡単に取得できるかわからず、だったらAzure Functions使った方が速くね?となったため、断念しました…
また、今回使用したテンプレートはユーザーにボタンで選択を促すアクションがたくさんあります。そのすべてを口頭ベースに変えていく労力を考えると、このテンプレートはスマートスピーカーに繋げるということはできないですね。。。
アクセストークン取得までできた証↓
(最初はタイムアウトしてます。)
上の図だと、JSON入力がリクエスト、JSON出力がレスポンスに当たります。
ので、後日Azure Functions(可能であればBot Serviceでガリガリコードをかいて)を使って作ることにしたいと思います。。。
つくりかた
Composer側いろいろ設定
今回はEnterprise Calendar Botテンプレートを使用しました。
このテンプレートはMicrosoft Graphを使ってOffice365に登録されている自分のスケジュールを見る&登録する等の機能がすでに備わっています。
ので、このテンプレートに認証の設定をするだけで秘書Botは完成したようなものになります。
まずはプロビジョニング。
今回プロビジョニングしたリソースは以下の通りです。
- Microsoft Application Registration(必須)
- Azure Hosting(必須)
- Microsoft Bot Channels Registration(必須)
- Microsoft Language Understanding Authoring Account
- Microsoft Language Understanding Prediction Account
- Microsoft QnAMaker
プロビジョニングが終了したら、LUIS、QnAMaker、アプリIDをComposerで設定していきます。
↓
赤枠で囲ったボタンを押すと自動的にキーを取得してくれます。
次にMSのチュートリアルに従って認証の設定。
認証設定
まず、プロビジョニングしたBotリソースをAzureポータルから開きます。
そして、OAuth認証設定の追加を選択して、以下の値を設定していきます。
- 名前:好きなOAuth認証の名前(後ほど設定で使用するのでコピーしておく)
- サービスプロバイダー:Azure Active Directory v2
- Client id:Composerで設定したMicrosoft App IDのMicrosoftアプリID
- Cliend secret:Composerで設定したMicrosoft App IDのMicrosoftアプリのパスワード
- スコープ:Calendars.ReadWrite Contacts.Read People.Read User.ReadBasic.All User.Read
入力したら、保存。
続いて、Microsoft App ID の横にある管理というリンクをクリック。
APIのアクセス許可を選び、アクセス許可の追加で以下5つの許可を追加します。
(この画像にはoffline_accessが追加されていますが、以下5つで大丈夫です。)
- Calendars.ReadWrite
- Contacts.Read
- People.Read
- User.ReadBasic.All
- User.Read
Webを選択し、リダイレクトURIは以下を入力。
https://token.botframework.com/.auth/web/redirect
最後に、Composerの方に戻り、設定から詳細設定ビューを表示して、
以下個所を変更します。
{
"oauthConnectionName": "Azureポータルで設定したOAuth認証の名前",
}
英語の個所を一部日本語に
英語でテンプレートは作成されてしまうため、このままだと基本全部英語です。
そのため、ボット応答の一部などを私は日本語に編集しなおしました。
ちなみに、設定画面に多言語対応できるものがあるのですが、こちらを試してみたところ、一度エラーが大量に発生してどうにもならなくなってしまったため、一旦直接編集という形をとりました。
V2.0ではありませんが、日本語対応させている方の記事はこちら
Bot Framework Composer v1.1.1 で日本語ロケール (ja-jp) を選択できるようになりました #BotFramework
まずエミュレータで動かしてみる
エミュレータでテストをするには、エミュレーターで ngrok
を構成する必要があります。
ので、ngrokをインストール。
発行してテスト
発行して、Webチャットでテストもしてみました。問題なし!
(たまにTimeoutすることがありましたが、フリープランを使用しているということもあり、最初の接続には時間がかかる模様でした。)
ちなみにサインインダイアログがないのは、一度Webチャットテストでサインイン処理をしているため、トークンが残っているためか聞かれませんでした。
さいごに
コードを一切かかずに認証の設定だけすれば、スケジュール調整Botが作れてしまいました。
ただ、日本語に対応していなかったり、カスタマイズがしにくかったりとやっぱコードの方がいいなと思うことが少し発生しました。。。
GUIでガリガリ作成するので、もう少し資料があると嬉しいですね…
ボットの最初のとっかかりとしてはとても良いなと感じたので、もう少し広まるといいなと思います。