web-dev-qa-db-ja.com

アプリチャネルでアプリとしてユーザーにダイレクトメッセージを送信する方法

アプリケーションとしてuser.idを使用して、スラックのメッセージを直接ユーザーに送信する方法はありますか。 enter image description here

このアプリケーションにはスコープがあります:bot、channels:write、emoji:read、users:read、users:read.email

DMとして、またはwebhookによってのみメッセージを送信する方法を見つけましたが、その範囲はありません。

11
Koloritnij

あなたの質問を正しく理解できたら、標準のslackbotチャンネルではなく、アプリチャンネルでユーザーに直接メッセージを送信したいと思います。

それをするために必要なこと

  1. アプリにはbotスコープとボットユーザーが必要です
  2. im.open を指定して、ユーザーとアプリからダイレクトメッセージチャネルを開きます。ダイレクトメッセージIDを取得します。
  3. chat.postMessage でメッセージをダイレクトメッセージチャネルIDに送信します

Slackアプリのbotアクセストークン(ユーザーアクセストークンではない)を使用してください。

botスコープは、ボットチャネルからDMを開いてユーザーに送信するために必要なすべての権限を提供します。他のスコープは必要ありません。

また、新しいconversationsメソッドを使用することもできます。これは、すべての種類のチャネルタイプで同じことを行うために機能します。

同じトピックの この質問 も参照してください。

22
Erik Kalkoken

これを解決する別の方法があります。これは、アプリがボットを使用してSlack APIを操作する場合により適しています。

chat.postMessage APIメソッドを呼び出し、メッセージを送信するユーザーID(_U0G9QF9C6_など)に等しいchannel引数を指定し、_as_user_引数が本当。重要な詳細-ボットアクセストークンを使用していることを確認します( here 取得方法をご覧ください)。

例:

_curl -X POST "https://slack.com/api/chat.postMessage" -H  "accept: application/json" -d token=BOT_ACCESS_TOKEN -d channel=U0G9QF3C6 -d text=Hello -d as_user=true
_

このようにして、メッセージは常にボットに代わって(名前とアイコン)送信され、アプリチャンネル(SlackサイドバーのYourAppChannel)に直接メッセージのように表示されます。

@ErikKalkokenのアプローチと比較して、事前にチャネルを作成する必要はありません。その結果、そのIDを追跡する必要があります(ニーズに応じて良い場合も悪い場合もあります)。

8
Ruslan Isay