Slack Bot не может отправить сообщение на общий ограниченный канал через chat.postMessage - PullRequest
12 голосов
/ 26 апреля 2019

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

Это ошибка, которую я вижу в логах при сбое.

PostMessage Error: restricted_action

Есть ли дополнительная область, которую мне нужно установить, кроме bot? enter image description here

Вот права доступа к рабочему пространству, я владелец этого рабочего пространства. Workspace User Permissions

Вот код:

const postAnnouncementToChannel = (user, announcement) => {
  const { title, details, channel } = announcement;

  let announcementData = {
    token: process.env.SLACK_ACCESS_TOKEN,
    channel: channel,
    text: `:loudspeaker: Announcement from: <@${user}>`,
    attachments: JSON.stringify([
      {
        title: title,
        text: details,
        footer: 'DM me to make announcements.'
      }
    ])
  };
  send(announcementData, user);
}


const send = async(data) => { 
  data.as_user = true; // send DM as a bot, not Slackbot
  const result = await axios.post(`${apiUrl}/chat.postMessage`, qs.stringify(data))
  try {
    if(result.data.error) console.log(`PostMessage Error: ${result.data.error}`);
  } catch(err) {
    console.log(err);
  }
}

Тестирование через

https://api.slack.com/methods/chat.postMessage/test использование бот-токена говорит

{
    "ok": false,
    "error": "restricted_action"
}

Тестирование с использованием xoxp-токена дает следующее: -

{
    "ok": false,
    "error": "missing_scope",
    "needed": "chat:write:user",
    "provided": "identify,bot"
}

Ответы [ 2 ]

5 голосов
/ 26 апреля 2019

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

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

2 голосов
/ 16 мая 2019

Боты не являются полноправными членами, поэтому мне пришлось использовать токен пользователя

xoxp-token

, чтобы публиковать сообщения в chat.postmessage, с

as_user:false

, и пришлось добавить отсутствующий_обзор, который

chat:write:user

И тогда мне удалось заставить эту работу работать правильно.Благодарю @girliemac за помощь в этом.

https://github.com/slackapi/template-announcement-approvals/issues/6

Спасибо

...