############################################## 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としての表示名を設定する。 ※表示名を設定し忘れると、後述のインストールが行えない .. list-table:: * - .. image:: ./slackAPIImage/01_create_app.png - .. image:: ./slackAPIImage/02_scratch.png * - .. image:: ./slackAPIImage/03_create.png - .. image:: ./slackAPIImage/06_set_name2.png **②アプリへの権限付与** - [OAuth & Permissions]タブのScopesから、アプリに権限を付与する。 - [Add an OAuth Scope]を押下し、「im:write」「chat:write」を追加する。※ ※ botからDMを送信するために必要な権限。付与する権限はAPIによって異なるため公式ドキュメント参照のこと。 .. list-table:: * - .. image:: ./slackAPIImage/11_OAuth_tab.png - .. image:: ./slackAPIImage/12_scope.png **③アプリをワークスペースへインストール** - [OAuth & Permissions]タブの[install to Workspace]を押下する。 - [許可]を押下する。 - [OAuth Tokens for Your Workspace]欄にTokenが発行されているため控える。 ※トークンはいつでも確認可能。slackAPIに使用する。 .. list-table:: * - .. image:: ./slackAPIImage/21_install.png - .. image:: ./slackAPIImage/22_ok.png * - .. image:: ./slackAPIImage/23_token.png - ユーザごとに必要な対応 """""""""""""""""""""""""""""""""""" **④送信先ユーザのメンバーIDを把握する** - メンバーIDはプロフィール欄よりコピーできる。 .. list-table:: * - .. image:: ./slackAPIImage/31_memberId.png **⑤conversations.openAPIを使用して、チャンネルIDを取得する** - 公式Doc:https://api.slack.com/methods/conversations.open - 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 .. list-table:: * - .. image:: ./slackAPIImage/41_open.png - .. image:: ./slackAPIImage/42_json.png **⑥chat.postMessageAPIを使用してメッセージを送信** - 公式Doc:https://api.slack.com/methods/chat.postMessage - 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でも可。 .. list-table:: * - .. image:: ./slackAPIImage/51_sendMessage.png - .. image:: ./slackAPIImage/52_notify.png 参考 ==================================== (Slack APIを利用してユーザーにダイレクトメッセージを送信する) https://dev.classmethod.jp/articles/slack-api-send-dm/