chat.postMessage xoxb токен, который работает для публикации сообщений всем пользователям во всех рабочих пространствах - PullRequest
0 голосов
/ 08 июня 2019

Я использую: https://www.npmjs.com/package/@slack/interactive-messages и https://www.npmjs.com/package/@slack/events-api для моего бота Slack / Node.js. Я ловлю любое взаимодействие с ботом, используя:

slackEvents.on(‘message’, (message: any, body: any) => …);

Прежде чем пользователи Slack смогут общаться с ботом, они должны интегрировать его в свое рабочее пространство, используя: https://api.slack.com/docs/sign-in-with-slack, который доступен на моем веб-сайте для зарегистрированных пользователей. При успешном ответе я получаю два разных токена доступа:

  1. токены авторизации на основе xoxb из bot_access_token (если я не ошибаюсь, это токен доступа на основе рабочей области)
  2. токены авторизации на основе xoxp от access_token (если я не ошибаюсь, это токен доступа на основе пользователя)

Я храню вышеуказанные токены в записи пользователей в моей базе данных. Я использую токен xoxb для выполнения методов из моего механизма ботов, который также имеет доступ к базе данных, такие методы: https://api.slack.com/methods/chat.postMessage

Однако, как только бот интегрирован, он становится доступным для многих пользователей. Пользователи, которые не выполнили процесс «Войти через slack» и не имеют токенов xoxp или xoxb в своих записях пользователей в базе данных. Какой токен xoxb я могу использовать для chat.postMessage им?

Я вижу, что есть OAuth-токен доступа (xoxp) и OAuth-токен пользователя бота (xoxb) в панели инструментов бота Slack API под ссылкой "OAuth & Permission". Это главный xoxb токен, который можно использовать для chat.postMessage всем пользователям в Slack в любом рабочем пространстве, в котором интегрировано мое приложение?

1 Ответ

1 голос
/ 08 июня 2019

Токены всегда привязаны к одному рабочему пространству и одному пользователю.Не существует «главного» токена, который бы работал для нескольких рабочих пространств.

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

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

Чтобы отправить прямое сообщение любому пользователю, просто используйте идентификатор пользователякак канал с chat.postMessage.Вы получаете этот идентификатор в событии сообщения.

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

Подробное описание различий между этими токенами можно найти здесь .

См. Также Как получить независимый от рабочей области токен Slack-бот?

...