Slack Events API не работает для обычных пользователей

Я использую slack api для отправки ответа всякий раз, когда есть какое-либо прямое сообщение для аутентифицированного пользователя. Итак, я создал приложение, включил API событий и проверил URL-адрес веб-перехватчика и подписался на событие messages.im.

Slack Events API не работает для обычных пользователей

Я использую обычный поток oauth с областью действия (chat:write:user,users:read), чтобы получить токен доступа.

Сначала я попробовал с администратором рабочего пространства, и все работало нормально. Всякий раз, когда есть прямое сообщение между пользователем-администратором и любым другим пользователем, я получаю события для моего обратного вызова.

СЕЙЧАС

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

User2 прошел через тот же поток oauth с теми же областями действия и получил собственный токен доступа. Поскольку я подписался на api событий, я должен иметь возможность получать обратные вызовы событий на упомянутый мной URL-адрес.

Здесь есть какие-то проблемы? Разве это не так?

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Интеграция Slack и Spring Boot: как отправлять сообщения из Java-приложений
Интеграция Slack и Spring Boot: как отправлять сообщения из Java-приложений
Как отправлять сообщения в slack с помощью spring boot легко и без зависимостей.
4
0
1 799
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это не должно работать.

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

Так устроена архитектура безопасности Slack. В общем, ни одно приложение Slack не может отслеживать все частные и прямые каналы обмена сообщениями, даже если установщик использует администратор / владелец.

Обычный обходной путь для частных каналов - получить сообщения для пользователя-бота и убедиться, что пользователь-бот является участником всех частных каналов, которые необходимо отслеживать. Однако этот обходной путь не очень практичен для разговоров с использованием прямых сообщений.

Итак, даже если у меня есть два разных токена доступа для двух разных пользователей в одной команде, я могу получить доступ только к сведениям об одном пользователе?

Sasikanth 07.08.2018 15:06

Ваше приложение Slack будет иметь доступ только к разговорам пользователя, установившего приложение. Что может сработать, так это позволить нескольким пользователям установить ваше приложение Slack. Таким образом, вы получите токен доступа для каждого из них. Потенциально, события сообщений также будут работать для каждого пользователя. Хотя сейчас я не уверен.

Erik Kalkoken 07.08.2018 16:03

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

Sasikanth 07.08.2018 16:42

Я видел парня, который автоматизировал Slack-сообщения с помощью бота. как он тогда сможет это сделать? поскольку я думаю, что боты могут отправлять и получать личные личные сообщения, пожалуйста, исправьте меня, если я ошибаюсь.

GD- Ganesh Deshmukh 23.05.2021 08:00
Ответ принят как подходящий

Оказывается, это проблема с областями действия, вот сообщение, которое я получил от службы поддержки Slack, они потрясающие.

Привет, Сасикант,

Спасибо, что ответили мне. Я посмотрел, и мне кажется, что при установке пользователем user2 приложения «My App Name» произошли некоторые изменения в объемах, запрошенных.

Вот области, которые получил каждый из этих пользователей после установки «Моего имени приложения»:

user1: im: история, пользователи: читают, чат: пишут: пользователь

user2: пользователи: читать, чат: писать: пользователь

Вы заметите, что пользователь 1 выше имеет область im: history, а пользователь 2 выше - нет. В документации для типа события message.im (https://api.slack.com/events/message.im) упоминается, что требуется область im: history.

Это причина, по которой вы не получаете тип события message.im для DM, отправленных пользователю 2.

Надеюсь, это поможет объяснить проблему. Что вам нужно сделать, так это удалить авторизацию для пользователя user2 из: (мой URL-адрес приложения для разработчиков) и попросить этого пользователя переустановить приложение с соответствующими областями.

Другие вопросы по теме