Search code examples
slackslack-api

How to send direct messages to a user as app in app channel


How is it possible to send message in slack directly to the user, by user.id as application. enter image description here

this application has scope: bot,channels:write,emoji:read,users:read,users:read.email

I find how to send message only as DM or by webhooks, but there is no scope for that. Any one has idea?


Solution

  • If I understand your question correctly, you want to send direct messages to users in the app channel instead of the standard slackbot channel.

    In order to do that you need to

    1. Your app needs the bot scope and a bot user
    2. Open a direct message channel from your app with the user with conversations.open. You get back a direct message ID.
    3. Send a message with chat.postMessage to the the direct message channel ID

    Make sure to use your bot access token (not the user access token) from your Slack app.

    The bot scope gives you all permissions needed to open and send DMs to users from your bot channel. No other scopes are required.

    You can also use the new conversations methods, which work for all kind of channel types to do the same.

    See also this question on the same topic.