Slack Botでの動作に必要なBot Eventについて参考用にまとめてみた

Slack Botを作成する際に必要不可欠なEvent設定について、備忘録としてまとめてみました。
2019.09.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Slack APIでbotを作成したい時に、

思った通りに動かない!

と頭を抱えるキッカケになりがちなのがEvent SubscriptionsでのSubscribe to Bot Eventsです。設定した後に「Save Changes」で更新しないと反映されないところもハマりどころです。手慣れた人でも割とやりがちかもしれません。

Slack API: Applications | Slack

Bot Eventは実際に追加してみないと解説が見難い感じもあります。備忘録含めて夫々書き出してみました。

Botイベント

所謂Slack Appとは動作が異なります。コマンドライン操作ではなく、あくまでもBotユーザとのリプライ用途と想定すると理解しやすいかもしれません。リンク先は実装時の参考用リファレンスとなります。

Event Name Description 簡易訳
team_domain_change The workspace domain has changed ワークスペースのドメインが変更された時
email_domain_changed The workspace email domain has changed ワークスペースのEメールドメインが変更された時
subteam_created A User Group has been added to the workspace ワークスペースにユーザグループが追加された時
subteam_updated An existing User Group has been updated or its members changed 既存のユーザグループが更新あるいはメンバーが変更された時
subteam_members_changed The membership of an existing User Group has changed 既存のユーザグループのメンバーシップが変更された時
subteam_self_added You have been added to a User Group ユーザグループに追加された時
subteam_self_removed You have been removed from a User Group ユーザグループから外された時
message.channels A message was posted to a channel メッセージがチャンネルに投稿された時
message.im A message was posted in a direct message channel DMチャンネルにメッセージが投稿された時
message.mpim A message was posted in a multiparty direct message channel 複数のDMチャンネルにメッセージが投稿された時
link_shared A message was posted containing one or more links relevant to your application アプリケーションに関して一つ以上のリンクを含むメッセージが投稿された時
call_rejected A call was rejected 着信拒否された時
reaction_added A member has added an emoji reaction to an item メンバーによって絵文字リアクションが追加された時
reaction_removed A member removed an emoji reaction メンバーによって絵文字リアクションが撤去された時
emoji_changed A custom emoji has been added or changed カスタム絵文字が追加あるいは変更された時
team_rename The workspace name has changed ワークスペース名が変更された時

サンプルBotを作って実験したい場合

以下の記事を参考に、コスト不要で作成することができます。

SlackのBoltフレームワークを使ってWordPressをSlackから検索するBotを作ってみた

あとがき

Boltフレームワークで色々試してみようと思ったものの、BotEventについてあまり把握できていなかったため先に何ができるのか確認をしてみました。

Botとの簡易なやりとりについては、message.imで動作確認しつつ、message.channelsにて他のユーザと共有を行う流れがベターでしょう。