Azure Bot ServiceのMessages概要
Azure Bot Serviceのメッセージに関するまとめです。
需要が高そうなら、真面目に記事に直します。
session.send("String")
基本的なメッセージの送信
builder.Message(session)
textFormat を指定したメッセージの作成が可能(Markdown形式などに対応) 詳しくは https://docs.microsoft.com/en-us/azure/bot-service/bot-service-channel-inspector#text-formatting
session.message.text
ユーザが入力した文字列の取得
proactiveMessage
本題と関係ないメッセージ。リマインダーや他のサービスからのPUSHなど急遽発生するメッセージ
ad hoc proactive message
- 現在のコンテキストを無視して、メッセージを送る
dialog-based proative message
- 現在のコンテキストを意識して、メッセージを送る。少し複雑。
- surveyDailogを利用して、一時的な会話スタック生成して、ユーザと会話する
session.message.address
- adhocメッセージを送るとために必要な情報を持っている
- 実際には試すためには、外部の機能が必要となる
CardAction
buttonのアクションはbuilder.CardAction.imBackで押された時に送信するmessage を定義する(ユーザに入力されたものとして扱う。)
suggestedAction
ユーザから何かしらの入力をボタンで選ばしたいとき入力カードの表示などに使う。ただし、入力後にカードは消える。
選ばれたものはimBackとしてChat画面に投稿される。もし投稿したくない場合は、postBackを使うと良い。
ただし、Channel(Slackなどの入力の口)によってはpostBackに対応していないものもあるので注意が必要。
画像の読み込みなど、ユーザを待たせたい時
session.sendTyping()で書き込み中をユーザに見せる事が出来るらしい。
そのあとすぐに、メッセージを送ると見えないので、setTimeoutなどで時間を稼ぐと良い。基本的には非同期処理などサーバーへの問い合わせ中に利用するのが良さげ。
session.say, builder.Message.speak, Promptsで音声ガイダンスを返す
Botが喋るらしい(試してみたが失敗した。)
Channels側が会話が可能なものである必要がある
SSML
Speachに関する、会話の詳細な設定をする
Intercept message
middleware において、会話ログなどを記録するために、メッセージとキャッチして何かしらの処理をすることができる。デフォルトでは個人情報等の観点から保存していない。
module.exportsでintercept して何をするかを定義する。
そして、builder.UniversalBotのインスタンスに対して、useでそのexportsの内容を紐づける。useのなかでどのイベントに紐づけるかが定義されているので、そこにexports関数をくっつける。
builder.Prompts.choice
ユーザからの入力する受け付けるために使う。
choice内容は、配列で渡す事ができる。
"The first", "Second" などの抽象的な表現でも認識する事ができる。
配列で渡す際
Skype用(?)
Calling SDK
*Emulatorではまだできないよ。 * ChatSDKに似ているよ * ただし、answer()やhangup()やreject()などが増えているが、SDKで自動的にやってくれる部分もある。