Как присоединиться к каналу Slack в качестве пользователя бота для обмена сообщениями в реальном времени?

channels.join запрещено для пользователей-ботов. Я хочу, чтобы мой бот, использующий RTM, прослушивал каналы, отличные от тех, которые перечислены на странице интеграции с ботом.

Я не вижу возможности изменить каналы на странице интеграции с ботом:

страница интеграции с ботами

Это просто ограничение ботов или я упускаю здесь что-то фундаментальное?


person Dustin Wyatt    schedule 27.03.2015    source источник


Ответы (3)


У меня была та же проблема, и я не был уверен, почему мой бот слушал только определенные каналы.

Пользователь должен будет пригласить вашего бота на каждый канал. Для этого запустите эту команду в нужном канале в приложении Slack.

/invite @<your_bot_name>

Оказавшись в канале, они должны иметь возможность прослушивать события.

person Matt Gifford    schedule 30.03.2015
comment
Также в представлении «Команда» вы можете выбрать @bot, а затем «Пригласить». Очевидно, это запускает команду /invite ;) - person m3nda; 15.04.2016

Это все еще ограничение ботов по состоянию на май 2017 года из-за ошибки, которую он вносит — см. ответ paulhammod на https://github.com/slackapi/node-slack-sdk/issues/26. Правильный способ добавить бота - это команда косой черты /invite @<bot.user> <channel_name>, как указал @MattGifford.

Однако @nafg представил интересный обходной путь. Если вы сгенерируете личный API_TOKEN для своей учетной записи, вы сможете использовать его для приглашения бота. Например, в python можно запустить:

import slackclient sc = slackclient.SlackClient(<PERSONAL_API_TOKEN>) sc.api_call('channels.invite', channel=<channel_id>, user=<user_id>)

Это пригласит бота на канал. Если вы хотите автоматизировать приглашение своего бота на новые каналы, вы можете просмотреть прослушиватели событий в API, который можно найти по адресу https://api.slack.com/rtm

Пока вы разрешаете использовать свой API_TOKEN для этой цели, кажется, что он будет работать по мере необходимости, хотя и менее удобно.

person Dragoe    schedule 22.05.2017

Я на самом деле не пробовал это, но я ожидаю, что вы можете сначала вызвать channels.join от имени реального пользователя (например, себя), а затем вызвать channels.invite от имени этого пользователя, чтобы добавить бота на этот канал. Я ожидаю, что это разрешено, и тогда это позволит боту взаимодействовать с этим каналом. Таким образом, вы можете автоматизировать все.

person nafg    schedule 14.03.2017