BotkitでSlackのアプリメッセージをキャッチしたい
概要
SlackでBotkitを使用してbotを作るとき、ユーザーのメッセージに反応するにはambient
だったりmention
,direct_message
など使うが、これらはアプリ経由やwebhook経由からのメッセージには反応しない。
つまり人間が発言したメッセージ以外はbotがキャッチしてくれない。
図で説明するとこんな感じ
このAPP
が付いたメッセージをBotkitでキャッチしたい、とする。
方法
controller.hears
で2番めのイベント引数にbot_message
を渡すだけで反応してくれる
const Botkit = require('botkit'); const controller = Botkit.slackbot(); controller.hears([''], 'ambient, bot_message', (bot, message) => { //botがあれこれする箇所 });
ちなみに、Botkit自身が投稿したSlackメッセージには反応しない。
備考
ちなみに、このbot_message
はBotkitドキュメントに見当たらず、下記Issueを見た時に偶然知った。
Any reason why bots don't hear other bots in slack? · Issue #284 · howdyai/botkit https://github.com/howdyai/botkit/issues/284
参考リンク
Botkit公式ドキュメント https://botkit.ai/docs/readme-slack.html