1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Bot Framework Composer v2.0 を使って秘書Botを30分で作成してみたあれこれ

Posted at

はじめに

前回Bot Framework Componserのチュートリアルを試してみました。
ので、今回はBot Framework Componserを使って、Microsoft365に登録されている私の予定を教えてくれる&登録してくれる秘書Botくんを作成しました。
※デフォルトのままなら30分あれば作成できますが、日本語対応などをさせるとなると、もう少し時間がかかると思います。

環境

  • windows10
  • .NET Core SDK3.1
  • ボットフレームワークエミュレータ
  • Azureのサブスクリプション

できたものとさらにやりたかったこと

できたもの

予定確認&登録秘書Botくんができました。

予定確認↓
image.png

予定登録↓

image.png

Teamsに追加されている。
image.png

最終的にやりたかったこと

Alexaに接続して、Alexaから予定確認&登録すること。。。
AlexaとBotを接続・アカウントリンクさせることは簡単にできました。
ですが、アカウントリンクさせてから、MSGraphの認証に使用するアクセストークンをComposer側でどうすれば簡単に取得できるかわからず、だったらAzure Functions使った方が速くね?となったため、断念しました…

image.png

また、今回使用したテンプレートはユーザーにボタンで選択を促すアクションがたくさんあります。そのすべてを口頭ベースに変えていく労力を考えると、このテンプレートはスマートスピーカーに繋げるということはできないですね。。。

アクセストークン取得までできた証↓
(最初はタイムアウトしてます。)
上の図だと、JSON入力がリクエスト、JSON出力がレスポンスに当たります。
image.png

ので、後日Azure Functions(可能であればBot Serviceでガリガリコードをかいて)を使って作ることにしたいと思います。。。

つくりかた

Composer側いろいろ設定

今回はEnterprise Calendar Botテンプレートを使用しました。
このテンプレートはMicrosoft Graphを使ってOffice365に登録されている自分のスケジュールを見る&登録する等の機能がすでに備わっています。
ので、このテンプレートに認証の設定をするだけで秘書Botは完成したようなものになります。

image.png

image.png

まずはプロビジョニング。
今回プロビジョニングしたリソースは以下の通りです。

  • 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で設定していきます。
image.png

image.png

赤枠で囲ったボタンを押すと自動的にキーを取得してくれます。

次にMSのチュートリアルに従って認証の設定。

認証設定

まず、プロビジョニングしたBotリソースをAzureポータルから開きます。
そして、OAuth認証設定の追加を選択して、以下の値を設定していきます。
image.png

  • 名前:好きな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 の横にある管理というリンクをクリック。
image.png

APIのアクセス許可を選び、アクセス許可の追加で以下5つの許可を追加します。
image.png
(この画像にはoffline_accessが追加されていますが、以下5つで大丈夫です。)

image.png

  • Calendars.ReadWrite
  • Contacts.Read
  • People.Read
  • User.ReadBasic.All
  • User.Read

続いて、認証からプラットフォームを追加をします。
image.png

Webを選択し、リダイレクトURIは以下を入力。
https://token.botframework.com/.auth/web/redirect

最後に、Composerの方に戻り、設定から詳細設定ビューを表示して、
以下個所を変更します。

{
  "oauthConnectionName": "Azureポータルで設定したOAuth認証の名前",
}

image.png

英語の個所を一部日本語に

英語でテンプレートは作成されてしまうため、このままだと基本全部英語です。
image.png

そのため、ボット応答の一部などを私は日本語に編集しなおしました。
image.png

ちなみに、設定画面に多言語対応できるものがあるのですが、こちらを試してみたところ、一度エラーが大量に発生してどうにもならなくなってしまったため、一旦直接編集という形をとりました。
image.png

V2.0ではありませんが、日本語対応させている方の記事はこちら
Bot Framework Composer v1.1.1 で日本語ロケール (ja-jp) を選択できるようになりました #BotFramework

まずエミュレータで動かしてみる

エミュレータでテストをするには、エミュレーターで ngrok を構成する必要があります。

ので、ngrokをインストール。

エミュレーターの設定でngrokのパスを設定。
image.png

試してみる!
image.png

発行してテスト

発行して、Webチャットでテストもしてみました。問題なし! 
(たまにTimeoutすることがありましたが、フリープランを使用しているということもあり、最初の接続には時間がかかる模様でした。)
image.png

ちなみにサインインダイアログがないのは、一度Webチャットテストでサインイン処理をしているため、トークンが残っているためか聞かれませんでした。

さいごに

コードを一切かかずに認証の設定だけすれば、スケジュール調整Botが作れてしまいました。
ただ、日本語に対応していなかったり、カスタマイズがしにくかったりとやっぱコードの方がいいなと思うことが少し発生しました。。。
GUIでガリガリ作成するので、もう少し資料があると嬉しいですね…
ボットの最初のとっかかりとしてはとても良いなと感じたので、もう少し広まるといいなと思います。

参考

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?