在直接消息通道中使用斜杠命令识别机器人

Bot identification with slash command in direct message channel

我有一个名为 'rbot' 的自定义 slack 机器人。我还创建了一个自定义斜杠命令“/r-out”。每当从任何通道执行此命令时,我的 java 服务都会被调用,参数包括 'channel_id' 和 'channel_name',我用它们来识别从哪个通道执行此命令。

现在,我只想将此命令限制为 'rbot'。为此,我需要验证命令是否像在带有 'rbot' 的直接消息通道中一样执行。我怎样才能做到这一点?

要验证斜线命令是否通过您的应用在直接消息通道中发送,您只需检查斜线请求中的 channel_id 是否指的是您应用的有效直接消息通道。

更详细:

当用户在您的应用程序的直接消息通道中执行您的斜杠命令时,您的应用程序将收到如下斜杠请求:(PHP 数组)

array (
  'token' => 'XXX',
  'team_id' => 'T12345678',
  'team_domain' => 'mydomain',
  'channel_id' => 'D12345678',
  'channel_name' => 'directmessage',
  'user_id' => 'U12345678',
  'user_name' => 'erik.kalkoken',
  'command' => '/evestatus',
  'text' => '',
  'response_url' => 'https://hooks.slack.com/commands/Txxx',
  'trigger_id' => '123',
)

channel_id 将以 "D" 开头,表明这来自直接消息渠道。

接下来使用 im.list 为您的应用拉取直​​接消息渠道列表。确保使用您的应用程序令牌,以便您获得应用程序的直接消息渠道。

如果 channel_id 在该列表中,则斜杠命令是在您的应用程序的直接消息通道中使用的。