特定のチャンネルにメッセージを送信するSlack Appを作る
特定のチャンネルにメッセージを送信するだけのSlack Appを作りたいと思ったのですが、Slack Appの設定が複雑(設定項目がたくさんでどれを使っていいかわからない)で混乱してしまったのでこれを機にまとめておきます。
上記を実現するには大きく分けて以下のステップが必要です。
- App作成
- Appをワークスペースにインストール
- Appをチャンネルに追加
ひとつずつ説明していきます。
App作成
https://api.slack.com/apps にアクセスし、右上の「Create New App」ボタンを押します。
「From a manifest」をクリック。
Appを開発するワークスペースを選択します。
ワークスペースの設定次第では、appの作成に管理者の許可が必要です。
次にマニフェストの作成です。
今回はYAMLで作成します。
_metadata:
major_version: 1
minor_version: 1
display_information:
name: just-post-bot
description: Bot tokens created for this app can just post messages to channels they're invited to
background_color: "#d982b5"
features:
bot_user:
display_name: The Workspace Reporter
always_online: true
app_home:
home_tab_enabled: false
messages_tab_enabled: false
oauth_config:
scopes:
bot:
- chat:write
以下の値を適宜変更してください。
display_information.name
https://api.slack.com/apps のApp一覧で表示されるApp名や、後の工程でチャンネルにAppを追加するときに検索対象になる名前です。
今回は kazue-slack-post-test
に変更しました。
display_information.description
下記画像の上部のように、Appにカーソルを合わせると表示される詳細テキストです。
他にもチャンネルにAppを追加するときにも表示されていますね。(display_information.name項の画像を参照ください)
今回は this is the test app to post message in specific channel
に変更しました。
display_information.background_color
前述の詳細テキストが表示される部分の背景色のようです。
今回は変更せずこのままとしました。ちなみにこの色はピンクでした。
features.bot_user.display_name
Botユーザーがメッセージを投稿した際の名前です。
今回は kazuetest
に変更しました。
以上で変更すべき項目の説明は終わりです。
次画面で内容を確認します。「Create」ボタンをクリックします。
以上でAppの作成完了です。Appの設定詳細画面に自動遷移します。
ワークスペースにインストール
「OAuth & Permissions」に移動します。
Appの作成に管理者の許可が必要な場合、OAuth Tokensは管理者の承認が済むまで発行されません。
それ以外の場合は「Install to (ワークスペース名)」というボタンが表示されているので、クリックします。
次画面です。内容確認して「許可する」をクリックします。
Bot User OAuth Tokenが発行されました。値を控えておきましょう。
チャンネルに追加
次に、メッセージを送りたいチャンネルに、作成したAppを追加します。
チャンネルの右上のメンバーリストの部分をクリックします。
インテグレーションタブから、アプリを追加するをクリックします。
マニフェストのdisplay_information.name
に設定した名前で検索します。「追加」をクリック。
インテグレーションタブで追加されたことが確認できます。
メッセージを送ってみる
curlコマンドでメッセージを送信します。
チャンネルIDの取得
メッセージを送信するチャンネルの指定はチャンネル毎に一意な値になっているチャンネルIDというもので行ないます。以下方法でチャンネルIDを確認・取得します。
まず、チャンネル名をクリックして詳細を表示します。
デフォルトで表示されているチャンネル情報タブの最下部にIDが表示されています。
右端からIDをクリップボードにコピーできますのでコピーしましょう。
コマンド実行
curlコマンドの引数は以下のようにします。
% curl \
-d "text=test" \
-d "channel=(チャンネルID)" \
-H "Authorization: Bearer (Bot User OAuth Token)" \
-X POST https://slack.com/api/chat.postMessage
(チャンネルID)
は直前でコピーしたチャンネルIDを貼り付けてください。(Bot User OAuth Token)
は「ワークスペースにインストール」欄で「値を控えておきましょう」とお伝えした、xoxb
から始まる値に書き換えてください。
コマンド実行すると jsonが返ってきます。ok
フィールド値が true
であればメッセージ送信成功です。
チャンネルにメッセージが送信されています。(2回コマンド実行しています。)