アプリケーションとしてuser.idを使用して、スラックのメッセージを直接ユーザーに送信する方法はありますか。
このアプリケーションにはスコープがあります:bot、channels:write、emoji:read、users:read、users:read.email
DMとして、またはwebhookによってのみメッセージを送信する方法を見つけましたが、その範囲はありません。
あなたの質問を正しく理解できたら、標準のslackbot
チャンネルではなく、アプリチャンネルでユーザーに直接メッセージを送信したいと思います。
それをするために必要なこと
bot
スコープとボットユーザーが必要ですim.open
を指定して、ユーザーとアプリからダイレクトメッセージチャネルを開きます。ダイレクトメッセージIDを取得します。chat.postMessage
でメッセージをダイレクトメッセージチャネルIDに送信しますSlackアプリのbotアクセストークン(ユーザーアクセストークンではない)を使用してください。
bot
スコープは、ボットチャネルからDMを開いてユーザーに送信するために必要なすべての権限を提供します。他のスコープは必要ありません。
また、新しいconversations
メソッドを使用することもできます。これは、すべての種類のチャネルタイプで同じことを行うために機能します。
同じトピックの この質問 も参照してください。
これを解決する別の方法があります。これは、アプリがボットを使用して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を追跡する必要があります(ニーズに応じて良い場合も悪い場合もあります)。