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

时间:2017-11-06 09:36:51

标签: java bots slack slack-api

我有一个名为' rbot'的定制松弛机器人。我还创建了一个自定义斜杠命令' / r-out'。无论何时从任何通道执行此命令,都会调用我的java服务,其中包含参数' channel_id'和' channel_name',我用它来识别正在执行此命令的通道。

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

1 个答案:

答案 0 :(得分:2)

要验证是否在您的应用的直接消息频道中发送了斜杠命令,您只需检查斜杠请求中的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在该列表中,则斜杠命令在您的应用的直接消息频道中使用。