Slack API を利用してユーザーにダイレクトメッセージを送信する

2023.05.02

この記事は公開されてから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 を利用します。

  1. 送信先のユーザーIDを取得する
  2. conversations.open メソッドで送信先ユーザーとの DM チャネルをオープン(レジューム)し、チャネルIDを取得する
  3. 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 を触ったのですが、設定画面などはあまり変わっていなかったので安心しました。

参考

以上