Activity オブジェクトと MessageFactory
Bot Builder SDK によるボット実装において、ユーザーにメッセージを送るには TurnContext クラス の sendActivity()
メソッドを使用します。
下記は、単純なテキストメッセージを送る例です。
sendActivity()
の第一引数には、このように文字列を渡すことができますが、その名の通り Activity
オブジェクトを渡すこともできるようになっています。
Activity
オブジェクトを使うと、単純なテキストよりもリッチな形式で表示を行うことができます(どう表示されるかは各チャンネルの実装によりますが)。
Activity
インタフェースは botframework-schema モジュール で定義されていますが、このインタフェースを意識してオブジェクトを作成することはあまりありません。
というのも、いろいろな用途の Activity
オブジェクトを生成するためのファクトリーである MessageFactory クラス が用意されているからです。
例えば、MessageFactory#text()
は単純なテキストメッセージを送るための Activity
オブジェクトを生成します。
これは実は下記のようにするのと同じです。
TurnContext#sendActivity()
に直接文字列を渡した場合は、内部で前者のような MessageFactory.text()
による Activity
生成が行われています。
単純なテキストを送るだけであれば、sendActivity('Hello')
としてしまうのが早いでしょう。
MessageFactory でリッチなメッセージを作成する
MessageFactory
が提供するファクトリメソッドを使って、リッチなメッセージを送る例をいくつか紹介します。
ここでは、Bot Framework Emulator の表示例を載せておきます。
画像・動画を表示する – contentUrl()
上記の例では png 画像を表示していますが、mp4 などの動画を指定することもできます。 Youtube のアドレスをそのまま記述してもいいみたいです。
Bot Framework Emulator では埋め込みで動画再生できましたが、Slack ではテキストリンクになりました(上記の例では“上野さんは不器用”というテキスト)。
選択肢を表示する – suggestedActions()
選択肢のボタンをクリック(あるいはタップ)すると、ユーザーがその文字列をタイプしたのと同様にメッセージが送られます。 ボットが想定する入力が限定されているシーンでは、このように選択肢を表示してあげるのがよいです。
関連記事
- チャットボット: Bot Builder SDK の Dialog で会話の流れをデザインする (1) ダイアログの基本
- チャットボット: Bot Builder SDK で会話の状態を保存する (BotState)
- チャットボット: ユーザーの参加/離脱のイベントをハンドルする
- チャットボット: Bot Builder SDK で会話の状態を保存する (Storage)
- チャットボット: ActivityHandler でボットのイベントハンドラ実装を簡略化する
- LUIS (4) botbuilder-ai ライブラリを使って LUIS の API を利用する
- チャットボット: 作成したチャットボットを Slack に接続する