
Slack API を利用してユーザーにダイレクトメッセージを送信する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部 Delivery部の若槻です。
今回は、ユーザーにダイレクトメッセージ(DM)を送信する Slack アプリを作ってみたかったので、Slack API を利用して DM を送信する方法を確認してみました。
やってみた
アプリの作成
Slack API を使うためには「App(アプリ)」が必要なので作成します。
https://api.slack.com/apps にアクセスし、[Create New App]をクリックします。

アプリの作成方法は今回は [From scratch] を選択します。(manifest を使用した作成方法もあるんですね。今度試してみます)

アプリ名とアプリを実装する Slack ワークスペースを指定して [Create App] をクリック。

これでアプリが作成できました。
アプリへの権限付与
[Features > OAuth & Permissions] を開きます。

Bot Token Scopes に、DM を送信できる権限として chat:write および im:write を追加します。

今回は DM 送信にあたり最低限必要な権限のみ付与しています。アプリのユースケースに応じて追加で必要な権限を付与してください。
アプリのワークスペースへのインストール
同じく [Features > OAuth & Permissions] で、[OAuth Tokens for Your Workspace] にて [Install to Workspace] をクリックします。

アプリによるワークスペースへのアクセスを求められるので許可します。

Bot User OAuth Token が発行されるので、コピーして控えておきます。

API から DM を送信してみる
Slack API から DM を送信する際の手順は以下のようになります。API メソッドを叩く際には、先ほど発行した Bot User OAuth Token を利用します。
- 送信先のユーザーIDを取得する
- conversations.open メソッドで送信先ユーザーとの DM チャネルをオープン(レジューム)し、チャネルIDを取得する
- chat.postMessage メソッドで指定のチャネルIDにメッセージを送信する
送信先ユーザーのユーザーIDは、Slack アプリで自分のプロフィールを開き、[Copy member ID] をクリックすれば取得できます。

テスターから送信する
下記リンクより conversations.open メソッドのテスター画面を開きます。
トークンとユーザーIDを指定して [Test method] をクリック。

API リクエストが成功しました。DM のチャネルがオープンされ、チャネルID が取得できました。

次に下記リンクより chat.postMessage メソッドのテスター画面を開きます。
トークンとチャネルIDおよびメッセージテキストを指定して [Test method] をクリック。

API リクエストが成功しました。

Slack アプリを見ると、アプリから送信されたダイレクトメッセージが受信できていることが確認できます。

一度 DM チャネルをオープンした後は chat.postMessage メソッドを使用して連続でメッセージを送信することができます。

おわりに
Slack API を利用して、Slack アプリからダイレクトメッセージを送信する方法を確認してみました。
2,3年振りに Slack API を触ったのですが、設定画面などはあまり変わっていなかったので安心しました。
参考
以上






