slack botkitでメンション以外のメッセージに反応する

Aug 3, 2016   #botkit  #javascript 

BotkitでSlackのbotを作成していて、@name以外のメッセージに反応させる方法がわからずに暫くハマったので解決策の備忘録。

参考記事

Slackでボットを作る Botkitのカスタマイズ編 : じょえずブログ

ambient

結論からいってしまうと以下のコードのように記述すれば解決する

controller.hears(['ほげー'], 'ambient', (bot, message) => {
    bot.reply(message, 'ぴよぴよ')
})

これで「ほげー」という言葉に「ぴよぴよ」と返してくれる。逆に@nameには反応してくれない
DMや直メンションでも反応させたければ、第2引数に羅列すればOK。配列でもいいはず

controller.hears(['ほげー'], 'direct_message,direct_mention,mention,ambient', (bot, message) => {
    bot.reply(message, 'ぴよぴよ')
})

ambientは「周囲の」「大気の」「環境の」という意味でなるほどという感じ

ハマった訳

botkit/readme.mdにはambientについてほぼ記述がなくて、botkit/readme-slack.mdに書いてあって完全に見落としていた(というか記事書くためにリポジトリ検索して今見つけた)

おわりに

とはいえ、これでさまざまなメッセージ形式に反応できるようになったし、会話もできるし、勉強中のJavaScriptでかけるしという事でいろいろやっていきたいという気持ち

このエントリーをはてなブックマークに追加