slackapi / java-slack-sdk

Slack Developer Kit (including Bolt for Java) for any JVM language
https://slack.dev/java-slack-sdk/
MIT License
570 stars 209 forks source link

Not able to add bots to DMs/MPDMs #1260

Open kranti-rh opened 7 months ago

kranti-rh commented 7 months ago

I'm @ mentioning the bot app in a direct message channel but it doesn't respond in the same way as it does in the channel where you get a modal asking if you want to invite it. Additionally, conversations.info gives channel_not_found error for above channel's ID. My bot application configured with all the scopes mentioned here. What I'm doing anything wrong here or it is something that isn't supported as of now in Slack?

filmaj commented 7 months ago

If you are receiving channel_not_found when passing the channel ID, then I do not think your app has the correct scope for being able to 'see' this channel. Is it a direct message between a single user and the app, or a multi-person direct message?

Can you post all the scopes your app has?

kranti-rh commented 7 months ago

It is a multi-person direct message. My app has the following scopes:

"scopes": {
            "user": [
                "chat:write"
            ],
            "bot": [
                "app_mentions:read",
                "calls:read",
                "calls:write",
                "channels:history",
                "channels:join",
                "channels:read",
                "chat:write",
                "chat:write.customize",
                "chat:write.public",
                "commands",
                "conversations.connect:read",
                "conversations.connect:write",
                "groups:history",
                "groups:read",
                "groups:write",
                "im:history",
                "im:read",
                "im:write",
                "mpim:history",
                "mpim:read",
                "users.profile:read",
                "users:read",
                "users:read.email",
                "mpim:write",
                "mpim:write.invites"
            ]
        }
filmaj commented 7 months ago

@kranti-rh I see your app uses both user and bot scopes. This means your app will be issued multiple tokens depending on the situation. Are you sure you are using the bot token, which includes the mpim:read scope, when calling conversations.info? Perhaps you are using the user token, which does not have the relevant required scope?

kranti-rh commented 7 months ago

yes, i'm using the bot token while calling conversations.info.

filmaj commented 7 months ago

Hmm, hold on.. re-reading what you said initially:

I'm @ mentioning the bot app in a direct message channel but it doesn't respond in the same way as it does in the channel where you get a modal asking if you want to invite it.

Can you clarify whether your app is a member of the MPDM or not? Are you expecting that the app will be auto-invited into the DM?

If the app is NOT a part of the MPDM, then conversations.info will always return channel_not_found when providing the conversation ID of the MPDM.

filmaj commented 7 months ago

Channel membership is a pre-requisite for many conversation APIs. Given the private nature of DM and MPDM conversations, if the user or app whose access token you are using is not a member in these conversations to begin with, then any API that interacts with this conversation will fail or error out (admin tokens are the exception but that is not at play here). This is to ensure privacy and security.

kranti-rh commented 7 months ago

Hmm, hold on.. re-reading what you said initially:

I'm @ mentioning the bot app in a direct message channel but it doesn't respond in the same way as it does in the channel where you get a modal asking if you want to invite it.

Can you clarify whether your app is a member of the MPDM or not? Are you expecting that the app will be auto-invited into the DM?

If the app is NOT a part of the MPDM, then conversations.info will always return channel_not_found when providing the conversation ID of the MPDM.

No, isn't a member of the MPDM. Yes, I expect that the app should be auto-invited into the MPDM like it happens in channels. Could you please confirm if it is possible or not?

filmaj commented 7 months ago

That is NOT the case for DMs or MPDMs. Because of the private nature of these conversations, simply mentioning the app name in a direct message will not auto-invite the app. An end-user has to explicitly invite the bot into a conversations. It may also be possible to open (i.e. start) an MPDM with a bot token via the conversations.open API but I haven't personally experimented with that API myself.

kranti-rh commented 7 months ago

@filmaj Yes, using conversations.open i was able to start a new private conversation but this is not the solution I'm looking for. My problem is with existing conversations, in those how I can add bot application. Being an end-user I'm not able to invite the bot into the existing DMs or MPDMs conversations.

filmaj commented 7 months ago

Yes you are correct. It seems you must create a new conversation explicitly with a bot.

filmaj commented 7 months ago

I dug into this a bit. It seems inviting users to existing DMs/MPDMs is a relatively new feature, and it looks like bots/apps were excluded from the initial implementation of this new feature.

I have filed a feature request to extend this ability to apps/bots as well.

kranti-rh commented 7 months ago

Appreciated @filmaj !!!

kranti-rh commented 7 months ago

@filmaj I was just wondering to know that how long this thing gonna take to get fixed.

filmaj commented 7 months ago

It is a feature request that is being weighed and prioritized by the relevant team. There is no specific timeline but whenever I hear more I will update this issue. It is best not to have any expectations on a timeline at this moment.

kranti-rh commented 7 months ago

@filmaj cool!

kranti-rh commented 3 months ago

@filmaj do we have any update on this?