2016-08-21 4 views
1

Я пытаюсь сделать бота, который будет слушать все общественные & частные каналы и IM для команды, и ответит, когда увидит определенные триггерные слова. Это будет «Slack App», устанавливаемый в вашу команду с помощью кнопки «Добавить в Slack» и включает в себя «Пользователь бота».Какие области OAuth необходимы для прослушивания и ответа Slack Bot с использованием API Slack Events?

Я попросил «ботовую» область OAuth и подписался на «message.channels, messages.groups и message.im» Team Events (по адресу https://api.slack.com/apps/myAppId/event-subscriptions), но не должен получать POST-сообщения от событий через API событий когда отправляются новые сообщения.

Добавление областей «channels: history, groups: history, im: history» позволяет боту получать эти POST-сообщения, но я верю только пользователю, добавившему бота, поэтому он не будет наблюдать за группами, пользователь не был членом или IM между двумя другими пользователями. Это означает, что поведение будет отличаться, в зависимости от того, какой пользователь установил мой бот.

Есть ли способ установить приложение/бот для всей команды? Документация, похоже, указывает на то, что область «бот» должна иметь возможность принимать события, но я этого не вижу (мне нужны каналы: область истории и т. Д. Выше).

bot - запросите эту область, когда ваше приложение Slack включает в себя функции пользователя бота. В отличие от входящих webhook и команд, область бота предоставляет вашему пользователю бот доступ к подмножеству методов Web API, RTM API и определенным типам событий в API событий.

(от https://api.slack.com/docs/oauth-scopes)

страница на ботов также утверждает, что бот может принимать все сообщения через RTM API:

Это WebSocket будет посылать вам все сообщения и деятельности, происходят в публичных и частных каналах, к которым приглашен бот-пользователь, а также сообщения, которые отправляются ему посредством прямого сообщения. Пользователь-бот открывает этот веб-сайт с помощью API RTM, отправив аутентифицированный вызов методу API rtm.start. Подробнее о подключении к RTM API читайте здесь. (от https://api.slack.com/bot-users)

Это такое же поведение возможно в событиях API без необходимости использовать API RTM или добавить эти дополнительные области, указанные выше?

+0

С момента добавления пользователя бота в мое приложение на странице «Подписки на события» появился раздел «События ботов», на котором я могу подписаться на «message.channels» и не требую каналов: разрешение истории (в отличие от документация). Тем не менее, бот-пользователь затем должен быть приглашен ко всем каналам, которые я хочу контролировать, что делает процесс установки более сложным. – Crashthatch

ответ

0

Я вижу из вашего комментария, что вы поняли, что область бота (и подписка на события channel.message) позволяет вашему боту получать из каналов, он присутствует в.

У вас есть два варианта 1) вы запрашиваете channel.write сферы в дополнении к боту, и вы приглашаете бот по всем каналам (с помощью пользователя маркера, а не маркер бота) 2) вы работаете ваш бординг и выясните способ получить своего «чемпиона», то есть пользователя, который установил ваше приложение, чтобы пригласить своего бота в соответствующий канал.

Имейте в виду, что решение 1) обычно рассматривается как очень навязчивое, особенно в крупных командах, где большинство людей не слышали о вашем приложении и не приняли решение об установке его. Но это может быть подходящим для некоторых конкретных случаев использования. Вариант 2) - рекомендуемый маршрут, но это сложно :-) Удачи!

Смежные вопросы