我们正在开发一个 Slack 机器人,其中一个斜杠命令(在直接消息通道中使用时)应该能够确定直接消息通道中目标用户的 Slack 用户 ID。例如,假设有 3 个 Slack 用户 User1、User2 和 User3。如果 User1 将/someaction
在他的直接消息通道中与 User3 进行操作,则 Slack 服务器会将以下属性发布到我们的/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。
要获取user_id
User3 的参数,我们使用conversations.info
API,我们将channel_id
提供给/someaction
上面命令的参数传递给该 API。
现在的问题是,当 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"
}
问题:
为什么它适用于 User1,但不适用于 User2?我们唯一能想象的是,User1 已经在 Slack 工作区中部署了 Slack 应用程序。但这不应该影响这种行为还是应该?
是否有另一种方法可以根据该直接消息通道的 channel_id 获取直接消息通道的目标用户的用户 ID?