在直接消息松弛通道中获取用户的用户 ID

Get user-id of user in direct message slack channel

我们正在开发一个 Slack 机器人,其中一个斜杠命令在直接消息通道中使用时应该能够确定目标用户在直接消息通道中的 Slack 用户 ID。例如,假设有 3 个 Slack 用户 User1、User2 和 User3。如果 User1 将在他与 User3 的直接消息通道中执行 /someaction,Slack 服务器将 post 以下属性用于我们执行 /someaction 命令:

token
team_id
team_domain
channel_id
channel_name=directmessage
user_id
user_name=User1
command=%2Fsomeaction
text=
response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2/........
trigger_id=....

user_id/user_name 是来自发出命令的人,所以在这种情况下是 User1。

为了获取 User3 的 user_id,我们使用 conversations.info API,其中我们传入提供给 /someaction 命令的 channel_id以上。

现在的问题是,当 User1 在 Slack 中发出命令时它确实有效,但是当 User2 发出命令时(在他与 User3 的直接消息通道中),它不起作用。我们确实注意到在 User1 和 User2 的调用之间提供的 channel_id 不同,这是有道理的,因为两者都有自己与 User3

的直接消息通道

用户 2 的回复

curl https://slack.com/api/conversations.info?token=TOKEN\&channel=D0123456G&pretty=1
{
    "ok": false,
    "error": "channel_not_found"
}

问题:

  1. 为什么它对 User1 有效,但对 User2 无效?我们唯一可以想象的是,User1 已经在 Slack 工作区中部署了 Slack 应用程序。但这不应该影响这种行为,或者应该吗?

  2. 是否有其他方法可以根据私信频道的channel_id获取该私信频道目标用户的用户id?

此方法在用户 2 和用户 3 之间的直接消息通道中不起作用的原因是您的应用无法访问该通道,因此您在调用 conversations.info 时得到 channel not found在那个频道上。

并且它没有访问权限,因为它已被用户 1 安装,因此该应用只能看到用户 1 可以访问的频道。这是由于 Slack 中的安全架构的工作原理。

据我所知,无法通过斜杠命令获取直接消息频道的其他成员的用户 ID。