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

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

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" などの抽象的な表現でも認識する事ができる。

配列で渡す際

  • value 選択された項目の値
  • action-title 表示タイトル
  • synonyms ユーザが音声入力する場合に、候補とあ渡すことで音声認識精度が向上する(ユーザの入力を予想)

Skype用(?)

  • Interactive Voice Response(IVR)
    • ユーザと音声形式でやり取りするためのSDK (Calling SDK)

Calling SDK

*Emulatorではまだできないよ。 * ChatSDKに似ているよ * ただし、answer()やhangup()やreject()などが増えているが、SDKで自動的にやってくれる部分もある。

その他

  • Channles-Conduct Skype callsはskypeに対する音声入力の特化してる

参考URL

https://docs.microsoft.com/en-us/azure/bot-service/