【发布时间】:2020-03-05 09:49:36
【问题描述】:
我们正在开发一个 Slack 机器人,其中一个斜杠命令(在直接消息通道中使用时)应该能够确定直接消息通道中目标用户的 Slack 用户 ID。例如,假设有 3 个 Slack 用户 User1、User2 和 User3。如果 User1 在他的直接消息通道中与 User3 进行/someaction,则 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。
要获取 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"
}
问题:
为什么它对 User1 有效,而对 User2 无效?我们唯一能想象的是,User1 已经在 Slack 工作区中部署了 Slack 应用程序。但这不应该影响这种行为还是应该影响?
有没有其他方法可以根据该私信频道的channel_id获取该私信频道的目标用户的用户ID?
【问题讨论】:
-
哦...精心设计的问题!
-
您可以让 Slack 工作区中的每个人都在您的应用程序授权范围内阅读直接消息和私人渠道会发生这种情况。
标签: slack slack-api slack-commands