Slack 机器人无法通过 chat.postMessage 将消息发送到受限的通用频道

Slack bot fails to send message to restricted general channel via chat.postMessage

这是我第一次尝试创建一个 slack 机器人,我遵循这个 template code 这个词,我没有做任何更改,只是在出现故障时重新混合,正确地复制粘贴了身份验证令牌,一切正常。 直到我将#general 频道限制为 Full Member 用户。

这是我在故障日志中看到的错误。

PostMessage Error: restricted_action

除了 bot 之外,我还需要设置其他范围吗?

这是工作区的用户权限,我是这个工作区的所有者。

代码如下:

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 使用 bot-token 表示

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

使用 xoxp-token 对此进行测试得到:-

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

没有。您没有遗漏任何范围。只是您用来授权您的应用程序的用户无法 post 进入通用频道。显然,管理员限制了谁可以 post 在该频道中发消息,例如仅限管理员。

要么使用对该频道具有 posting 权限的用户来验证您的应用,要么切换到其他频道进行测试。

机器人不是正式成员,所以我不得不使用用户令牌

xoxp-token

到post到chat.postmessage,以及

as_user:false

并且必须添加一个 missing_scope 即

chat:write:user

然后我就可以正常工作了。 感谢@girliemac 在这方面的帮助。

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

谢谢