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

问题描述 投票:2回答:1

我们正在开发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,在其中传递上面提供给conversations.info命令的channel_id

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

来自User2的响应

/someaction

问题:

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

  2. 还有另一种方法可以基于该直接消息通道的channel_id获取直接消息通道的目标用户的用户ID?

我们正在开发Slack机器人,当在直接消息通道中使用时,其中一个斜杠命令应该能够确定目标用户在直接消息通道中的Slack用户ID。所以...

slack slack-api slack-commands
1个回答
2
投票

之所以无法在用户2和用户3之间的直接消息通道中使用此方法,是因为您的应用无法访问该通道,因此在该通道上调用curl https://slack.com/api/conversations.info?token=TOKEN\&channel=D0123456G&pretty=1 { "ok": false, "error": "channel_not_found" } 时会获得channel not found

© www.soinside.com 2019 - 2024. All rights reserved.