なんとかするから、なんとかなる

エンジニア関係のことを書きます

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

  • Bot Frameworkとつなぐ機能を担当している
  • API のEndpointが必要。そのためにNode.jsではrestifyを使用する

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とともに使う事を想定

f:id:hopita:20180805124845p:plain:w300

inline:

f:id:hopita:20180805124833p:plain:w300

list:

f:id:hopita:20180805124839p:plain:w300

button:

f:id:hopita:20180805124845p:plain:w300

auto: 選択肢の数などで自動で調整してくれる

試して見て引っかかったところ

  • Safari Browserで"Test in Web Chat"が動かない → FireFoxにしたら動いた
  • Node.js source codeをdownloadでからpublishする際に失敗 → npm install を実行

参考URL