-
Notifications
You must be signed in to change notification settings - Fork 0
MS_BotFramework
- 戻る(Azure)
以下から構成される Bot を作成するためのフレームワーク。

補足(最新化 / 全体像の変化): 本ページは Bot Framework v3 時代の
記録である。現在は次のように再編されている。
原文 現在 Bot Framework Portal(dev.botframework.com) Azure Bot Service(Azure リソースとして作成) Bot Builder SDK v3 Bot Framework SDK v4(.NET / JavaScript / Python) Bot Directory 廃止(公開ディレクトリの仕組みは無くなった) Bot State Service 廃止(状態は自前のストレージに保存する方式へ) Cortana / Skype 等のチャネル 一部提供終了。Teams が中心に さらに、ノーコードで作る Microsoft Copilot Studio(旧 Power Virtual Agents)が
加わり、「コードを書いてまで Bot を作るか」という選択が先に来るようになった。
- Bot Builder SDK(C#・Node.js)を使って開発する。
- Bot Server はチャット・サービスと連携し入出力を処理する部分。
-
Bot State Service、Bot Connector、Cognitive Service と連携するインタフェースを提供
-
ユーザ入力を理解して応答するのにインテリジェンスが必要な場合、
別のプロダクトを使用する必要がある。 -
Bot Builder SDK は、.NET Core には対応していないが、REST API で利用可能。
- [C#] Porting to .net core #572
https://github.com/Microsoft/BotBuilder/issues/572
- [C#] Porting to .net core #572
補足(最新化): v4 SDK は .NET Core / .NET 対応であり、
原文の制約は解消されている。
ユーザの状態を管理する。
補足(最新化): Bot State Service(v3 の状態保存 API)は廃止された。
v4 では Storage / UserState / ConversationState という抽象を通して、
Blob Storage や Cosmos DB に
自前で保存する方式になっている。「フレームワークが状態を持ってくれる」のをやめ、
保存先を利用者が選ぶ形に変わった、と理解するとよい。
Facebook Messenger や Skype などの各チャネルから
- 仕様に合わせて適切にデータを変換
- 誰がどの Bot に話しかけているかを渡す
補足(Bot Connector がこの製品の本体): Bot Framework の価値は、
チャネルごとの差異を吸収するこの層にある。Teams ┐ LINE │ Slack ├──▶ [ Bot Connector ]──▶ Bot Server(1 つ作ればよい) Web Chat │ (共通の Activity 形式に変換) … ┘各チャネルの API を個別に実装する代わりに、
共通の「Activity」というメッセージ形式でやり取りできる。
原文が後半で LINE 対応に苦労しているのは、
当時 LINE が公式チャネルに無かったためである。
- Bing や Cortana などから利用できるディレクトリに登録する。
- Bot Directory で公開することが前提(プライベート Bot 不可)
移行メモ(最新化): Bot Directory は廃止されており、
「公開が前提」という制約は現在は存在しない。
Azure Bot Service では、社内 Teams だけに公開するといった
プライベートな Bot が普通に作れる。
- 単純な REST API として呼べる。
- Bot Server 直ではなく、Bot Connector 経由の模様。
- Microsoft Bot Framework の Direct Line API の簡単まとめ - Qiita
https://qiita.com/makopo/items/0cf1055a5b9c8ac672e0
補足: Direct Line は
**「公式チャネルが無い相手から Bot を呼ぶための汎用チャネル」**である。
自社の Web サイトやモバイルアプリに Bot を組み込む場合も、これを使う。
原文の LINE 対応も、この汎用性を利用した回避策になっている。
- Bot Server を実装・公開
- Bot Directory へ登録
- Microsoft Learn > Bot Framework
- LINE 対応はしていないが、日本語リソースは圧倒的に LINE に関する記事が多い。
- Direct Line API(LINE と関係無いので注意)を使用すれば、LINE などからも接続可能。
- 以下手順、同時に、非同期化も行っている。
- Line API のアカウント
- Microsoft Azure のアカウント
Bot Builder SDK を使用して Bot Server を実装
Azure App Service として公開
My Bots から
-
Bot Profile を入力
- Name
- Bot handle
- Description
-
Configuration で設定
- Messaging endpoint(Azure App Service の endpoint)
- App ID とパスワードを生成してメモに控えておく。
My Bots から
- 登録した BOT を選択
- Direct Line を追加
- Secret keys をメモに控えておく。
App ID とパスワードを Bot Server に設定し Azure App Service として再公開
補足(最新化): App ID とパスワード(シークレット)を扱うこの手順は、
現在は マネージド ID(Azure Managed ID)や
シングルテナント アプリでの構成が推奨されている。
秘密をメモに控えて設定に貼る、という運用は避けられるようになった。
Function App を作成する
- Function App を使用して実装。
- HttpTrigger-CSharp を選択。
- LINE ---(HTTP)---> 処理 ---> Storage
-
Function App を使用して実装。
-
QueueTrigger-CSharp を選択。
-
Storage ---> 処理 ---(HTTP)---> Bot Connector(Direct Line) ---> Bot Server
-
Dispatcher は、
- Bot Connector(Direct Line) への(POST リクエストでの)アクセスに、Secret keys を使用する。
- Bot Server からのレスポンスも Bot Connector(Direct Line) 経由で
(GET リクエストで)受け取るので、ここで LINE へのレスポンスも処理する。
補足(この構成の狙い): 原文が「同時に、非同期化も行っている」と
述べているとおり、キューを挟むことに意味がある。LINE ──▶ Gateway(HTTP)──▶ [ Queue ] ──▶ Dispatcher ──▶ Bot Server ↑ 即座に 200 を返す ↑ ここで時間のかかる処理を行うチャット系の Webhook には短いタイムアウトがあるため、
受け口では即座に応答を返し、実処理はキュー経由で非同期に行う、
というのが定石である。
Azure Functions の
HttpTrigger + QueueTrigger はこの構成に素直に対応する。
Gateway のエンドポイントに設定する。
-
Brains Consulting Blog: MS BotFramework を Line 対応する
http://bci-blog.blogspot.jp/2016/12/ms-botframeworkline.html -
C# で LINE Bot | Ken's Tech Blog
https://blogs.msdn.microsoft.com/kenakamu/2017/01/10/linebotwithcsharp/- Microsoft 中村氏が作成したライブラリとアプリケーション
https://github.com/kenakamu/line-bot-sdk-csharp- Line Messaging API SDK
- Line Bot Application
- Line With Bot Framework Application
- Microsoft 中村氏が作成したライブラリとアプリケーション
-
Microsoft Bot Framework
https://dev.botframework.com -
チャット - .NET 開発基盤部会 Wiki(
DNET_Chat.md)
- Microsoft Bot Framework v3.0 からはじめる BOT 開発
http://qiita.com/annie/items/edc26c0ee9603e84a2e4 - 英語のドキュメントを読みたくない人の為の Bot Framework 入門(C#編)
https://qiita.com/ymisono/items/c6096fa62a68dda8001a - Microsoft Cognitive Services & Bot Framework Advent Calendar 2016
https://qiita.com/advent-calendar/2016/cogbot
- Microsoft Bot Framework - アプリケーション データに時間や場所を問わず
アクセスするために Bot Framework を使用する
https://msdn.microsoft.com/ja-jp/magazine/mt790202 - Bot Framework - ボットをさらにインテリジェントにする
https://msdn.microsoft.com/ja-jp/magazine/mt795186
-
具体的な機能を持ちボットとして動作する
https://github.com/Microsoft/BotBuilder/tree/master/CSharp/Samples -
BotBuilder の機能ごとに焦点をあてたサンプル
https://github.com/microsoft/BotBuilder-Samples
- Azure Bot Service のドキュメント
https://learn.microsoft.com/ja-jp/azure/bot-service/
Tags: 移行, クラウド, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。