Ограничить использование команды косой черты для канала приложения - PullRequest
0 голосов
/ 18 декабря 2018

Я создал слабое приложение, используя botkit / node.js / express server.

Мой метод:

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

прослушивает все команды слэша в каждом канале.Теперь у моего бота (slack-приложения) есть собственный прямой канал.Я хочу, чтобы моя команда слэша слушала только команды слэша в этом конкретном канале.Можно ли ограничить слэш-команды как это?Как бы это выглядело?

Кажется, я не могу найти уникальный идентификатор для непосредственного общения с ботом слабого приложения.

1 Ответ

0 голосов
/ 18 декабря 2018

Да, это возможно.

В общем случае команды слеша будут работать на любом канале / диалоге, и в Slack API нет возможности ограничить их конкретными разговорами.Но вы можете добавить соответствующую функциональность в ваше приложение, чтобы оно реагировало только на команду, поступающую из канала приложения.Вот как:

1.Обнаружение правильного разговора

Каждый запрос команды слеша от Slack включает в себя идентификатор канала из разговора, в котором он возник, и идентификатор пользователя от соответствующего пользователя.(см. ниже пример команды косой черты).Вашему приложению нужно просто найти идентификатор канала, соответствующий каналу приложения, и соответственно отреагировать.

Вот пример команды косой черты (из официальной документации )

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

Чтобы получить идентификатор канала, соответствующий текущему пользователю, вы можете позвонить conversations.list с types, установленным на IM, что даст вам все прямые каналы сообщений с их идентификаторами каналов вашегоприложение.Тот, где user равен идентификатору пользователя из текущего запроса косой черты, является правильным.

Вот пример ответа от channel.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.

В качестве альтернативы, вы можете ответить коротким сообщением, объясняющим пользователю, что онследует использовать вашу команду слеш в соответствующем канале.(Я бы порекомендовал эту опцию, поскольку она более удобна для пользователя)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...