SlackAPIの使用方法(WebHookによるDM送信)
slackAPIを利用して、外部からDMを送信する方法を記載します。
作業概要
Slack側の事前設定(ワークスペース単位で一度設定すればOK)
Slackアプリケーションを作成
②アプリへの権限付与
③アプリをワークスペースへインストール
以降はユーザごとに必要な対応
④送信先ユーザのメンバーIDを把握する
⑤conversations.openAPIを使用して、チャンネルIDを取得する
⑥chat.postMessageAPIを使用してメッセージを送信
作業詳細
Slack側の事前設定
①slackアプリケーションを作成
https://api.slack.com/appsへアクセスし、Create New App押下
作成方法は[From scratch]を選択(おそらくmanifest側でもできる※未調査)
アプリの名称と、使用するワークスペースを選択して[create]を押下
- [App Home]タブより、botとしての表示名を設定する。
※表示名を設定し忘れると、後述のインストールが行えない
|
|
|
|
②アプリへの権限付与
[OAuth & Permissions]タブのScopesから、アプリに権限を付与する。
- [Add an OAuth Scope]を押下し、「im:write」「chat:write」を追加する。※
※ botからDMを送信するために必要な権限。付与する権限はAPIによって異なるため公式ドキュメント参照のこと。
|
|
③アプリをワークスペースへインストール
[OAuth & Permissions]タブの[install to Workspace]を押下する。
[許可]を押下する。
- [OAuth Tokens for Your Workspace]欄にTokenが発行されているため控える。
※トークンはいつでも確認可能。slackAPIに使用する。
|
|
|
ユーザごとに必要な対応
④送信先ユーザのメンバーIDを把握する
メンバーIDはプロフィール欄よりコピーできる。
|
⑤conversations.openAPIを使用して、チャンネルIDを取得する
Path:[POST] https://slack.com/api/conversations.open
- Header
- [Content-Type : application/x-www-form-urlencoded]
- Body
- [token=XXXXX-XXXXX-XXXXX&users=XXXXXXX]
- token : アプリのトークン
- users : メンバーID
または、以下のJSON形式で入力
- Header
- [Content-Type : application/json]
- [Authorization : Bearer アプリの[トークン]]
- Body
- [{"users":"メンバーID"}]
response : [id]が、次のAPIの入力に必要なチャンネルID
|
|
⑥chat.postMessageAPIを使用してメッセージを送信
Path:[POST] https://slack.com/api/chat.postMessage
- Header
- [Content-Type : application/x-www-form-urlencoded]
- Body
- [token=XXXXX-XXXXX-XXXXX&channel=XXXXXXX&text=XXXXXX]
- token : アプリのトークン
- channel : ⑤で取得したチャンネルID
- text : 送信したいメッセージ
※⑤同様JSONでも可。
|
|
参考
(Slack APIを利用してユーザーにダイレクトメッセージを送信する) https://dev.classmethod.jp/articles/slack-api-send-dm/