slack - 将斜杠命令的使用限制为应用程序 channel

标签 slack slack-api botkit

我使用 botkit/node.js/express 服务器创建了一个 slack 应用程序。

我的方法:

    controller.on('slash_command', function(bot, message) { SOME_LOGIC } 

监听每个 channel 中的所有斜杠命令。现在,我的机器人(slack 应用程序)拥有自己的直接 channel 。我希望我的斜杠命令仅监听该特定 channel 中的斜杠命令。是否可以像这样限制斜杠命令?它会是什么样子?

我似乎找不到直接与 Slack 应用程序机器人对话的唯一标识符。

最佳答案

是的,这是可能的。

一般slash commands将在任何 channel /对话中工作,并且 Slack API 中没有选项将它们限制为特定对话。但是,您可以向应用程序添加适当的功能,因此它仅对来自应用程序 channel 的命令使用react。方法如下:

1。检测正确的对话

来自 Slack 的每个斜杠命令请求都包含发出该命令的对话中的 channel ID 以及相应用户的用户 ID。 (请参阅下面的斜杠命令示例)。您的应用程序只需要查找与应用程序 channel 对应的 channel ID 并做出相应的 react 。

这是斜杠命令的示例(来自 official documentation )

token=gIkuvaNzQIHg97ATvDxqgjtO
&team_id=T0001
&team_domain=example
&enterprise_id=E0001
&enterprise_name=Globular%20Construct%20Inc
&channel_id=C2147483705
&channel_name=test
&user_id=U2147483697
&user_name=Steve
&command=/weather
&text=94070
&response_url=https://hooks.slack.com/commands/1234/5678
&trigger_id=13345224609.738474920.8088930838d88f008e0

获取当前用户对应的 channel ID可以调用 conversations.listtypes 设置为 IM,这将为您提供所有直接消息 channel 及其应用的 channel ID。 user 等于当前斜杠请求中的用户 ID 的就是正确的。

以下是来自channels.list的直接消息响应示例:

{
    "ok": true,
    "channels": [
        {
            "id": "D0G9QPY56",
            "created": 1449709280,
            "is_im": true,
            "is_org_shared": false,
            "user": "USLACKBOT",
            "is_user_deleted": false,
            "priority": 0
        },
        {
            "id": "D1KL59A72",
            "created": 1466692204,
            "is_im": true,
            "is_org_shared": false,
            "user": "U0G9QF9C6",
            "is_user_deleted": false,
            "priority": 0
        }
}

2。回复其他对话

此外,您还需要响应来自其他对话的斜线命令请求,否则您将在 Slack 上收到超时错误。

对于这些,您可以使用空正文和 HTTP 代码 200 进行响应,这不会在 Slack 上创建任何输出。

或者,您可以回复一条短消息,向用户解释他应该在正确的 channel 中使用您的斜杠命令。 (我推荐这个选项,因为它对用户更友好)

关于slack - 将斜杠命令的使用限制为应用程序 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53824827/

相关文章:

javascript - 松弛机器人 : how to use the slack channel functions

amazon-web-services - 确认 Slack Webhook 的 AWS SNS 主题订阅

php - 如何通过 php 或 wget 从 Slack 下载图像

slack-api - 将附件发布到 Slack API

android - 从超链接(或 URL 方案)打开松弛应用程序

javascript - 在 Smooch 中从 Web Messenger 发送消息

python - 如何将通过 HTTP POST 接收的数据从 Python Flask 脚本传递到单独的 Python 脚本进行处理?

node.js - 如何在 nodejs 应用程序的任何地方使用 botkit 构建聊天机器人?

slack-api - Slack + Botkit : Automatic reconnect after RTM closure