Azure Bot Serviceの概要まとめ
AzureのBot Serviceに関するMSDNドキュメントを読んで試して見ました。
おもにNode.jsのSDKで試しましたが、C#でも概念的な部分は同じです。
需要が高そうなら、真面目に記事に直します。
Bot BuilderとBot Frameworkについて
Bot Builder
Bot Framework
- SlackやTeamsなどチャンネルにつなぐためのFramework
Botを理解する上で重要なクラスたち
Connector
- BotとUserとを繋ぐ架け橋
- 各種SlackやTeams への返信の際に、各サービスの差を緩和する機能
Universal
- Botの脳の部分
Chat Connector
Message
- セッションを利用してメッセージの送信やユーザからの要求や質問に答える際に利用する
conversation Data
- 会話が終了してもユーザの情報を保存するために利用する
PrivateConversionData
- 大切なユーザ情報を一時的に保存するために使用する
Dialog data
- ????
Default dialog
次のように宣言された場合、デフォルトのダイアログが使用される。
var bot = new builder.UniversalBot(connector, [ //...Default dialog waterfall steps... ]);
Dialog handlers
- 会話の始まりから終わりまでを管理する
Session.beginDialog() Session.endDialog or session.endDialogWithResult()
Waterfalls と prompts
Waterfalls
- 手続きを進めるような形でユーザとの会話を設計する
- ユーザ情報の収集やタスクの操作ガイドに向いている
- Session.endDialogWithResultはダイアログが呼び出された場合、完了時呼び出し元にデータを渡すときに使用する。
- endDialogWithResultの引数response
- JSON Object として情報を渡している
session.endDialogWithResult({ response: { name: session.dialogData.name, company: session.dialogData.company } });
- Session.endCoversation: ウォータフォールも会話も終わるときに使う
- endCoversationAction {}で会話終了時のアクションをフック可能?
Prompts
- ユーザからの入力を受け付けるときに使用する
JavascriptのDateに変換するためには
EntitiyRecognizer.resoleveTime()
Prompts.choice
- Prompts.choiceの場合、選択された項目を取り出すには
result.response.entity
- 各choiceの結果
none: その他のPromptsとともに使う事を想定
inline:
list:
button:
auto: 選択肢の数などで自動で調整してくれる
試して見て引っかかったところ
- Safari Browserで"Test in Web Chat"が動かない → FireFoxにしたら動いた
- Node.js source codeをdownloadでからpublishする際に失敗 → npm install を実行