Я использую slack api для отправки ответа всякий раз, когда есть какое-либо прямое сообщение для аутентифицированного пользователя. Итак, я создал приложение, включил API событий и проверил URL-адрес веб-перехватчика и подписался на событие messages.im
.
Я использую обычный поток oauth с областью действия (chat:write:user,users:read
), чтобы получить токен доступа.
Сначала я попробовал с администратором рабочего пространства, и все работало нормально. Всякий раз, когда есть прямое сообщение между пользователем-администратором и любым другим пользователем, я получаю события для моего обратного вызова.
СЕЙЧАС
когда я пробовал то же самое с обычным пользователем (user2
), я не получаю никаких событий, когда есть прямое сообщение между user2
и другим пользователем. Я выполнил те же шаги, что и выше.
User2 прошел через тот же поток oauth с теми же областями действия и получил собственный токен доступа. Поскольку я подписался на api событий, я должен иметь возможность получать обратные вызовы событий на упомянутый мной URL-адрес.
Здесь есть какие-то проблемы? Разве это не так?
Это не должно работать.
Ваше приложение Slack будет получать события сообщений только от каналов / разговоров, участником которых является устанавливающий пользователь (например, администратор является участником прямого обмена сообщениями между ним и другими). Но получить прямые сообщения между другими пользователями невозможно.
Так устроена архитектура безопасности Slack. В общем, ни одно приложение Slack не может отслеживать все частные и прямые каналы обмена сообщениями, даже если установщик использует администратор / владелец.
Обычный обходной путь для частных каналов - получить сообщения для пользователя-бота и убедиться, что пользователь-бот является участником всех частных каналов, которые необходимо отслеживать. Однако этот обходной путь не очень практичен для разговоров с использованием прямых сообщений.
Ваше приложение Slack будет иметь доступ только к разговорам пользователя, установившего приложение. Что может сработать, так это позволить нескольким пользователям установить ваше приложение Slack. Таким образом, вы получите токен доступа для каждого из них. Потенциально, события сообщений также будут работать для каждого пользователя. Хотя сейчас я не уверен.
Эй, возможно, я не совсем ясен в своем вопросе, два пользователя установили мое приложение с двумя разными токенами доступа, и я получаю события только для одного пользователя.
Я видел парня, который автоматизировал Slack-сообщения с помощью бота. как он тогда сможет это сделать? поскольку я думаю, что боты могут отправлять и получать личные личные сообщения, пожалуйста, исправьте меня, если я ошибаюсь.
Оказывается, это проблема с областями действия, вот сообщение, которое я получил от службы поддержки 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-адрес приложения для разработчиков) и попросить этого пользователя переустановить приложение с соответствующими областями.
Итак, даже если у меня есть два разных токена доступа для двух разных пользователей в одной команде, я могу получить доступ только к сведениям об одном пользователе?