【问题标题】:Slack bot fails to send message to restricted general channel via chat.postMessageSlack 机器人无法通过 chat.postMessage 将消息发送到受限的常规频道
【发布时间】:2019-04-26 16:59:30
【问题描述】:

这是我第一次尝试创建一个 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"
}

【问题讨论】:

  • 能否请您也发布您的实际代码?
  • github.com/slackapi/template-announcement-approvals 是我的故障代码,未对代码进行任何更改。
  • 到目前为止,我无法通过 Postman 重现此错误。如果您将#general 的发布权限限制为“仅限工作区所有者和管理员”,则会发生这种情况,但如果将其限制为“所有人,除了客人”,它会正常工作。
  • 让我试试这个然后回复你。感谢您的回复。
  • 好的。如果您可以为问题添加更多详细信息和说明,这将有很大帮助。我还在下面就我的回答提出了一些问题。我们拥有的详细信息越多,重现和修复错误就越容易。

标签: node.js slack slack-api


【解决方案1】:

没有。您不会错过任何范围。只是您用来验证您的应用程序的用户无法发布到一般频道。显然管理员限制了谁可以在该频道中发布消息,例如仅限管理员。

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

【讨论】:

  • 添加应用的用户必须是工作区管理员还是主要所有者?我是主要所有者,但不是工作区管理员。这就是我去Administration-&gt; Manage Members时看到的内容@
  • 其实,让我编辑问题以添加工作区用户权限如何的照片。
  • Primary Owner 是权限最高的角色,一般不限制发帖。因此,我怀疑与您一起验证您的应用程序的用户是您工作区的主要所有者。
  • 我卸载了应用程序,创建了一个新应用程序,复制粘贴了 oauth 令牌和签名密钥。然后试了一下,还是一样。我仍然收到相同的错误消息。 PostMessage Error: restricted_action
  • 所以,我可以检查任何其他想法或地方。
【解决方案2】:

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

xoxp-token

发布到chat.postmessage,用

as_user:false

并且必须添加一个missing_scope

chat:write:user

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

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

谢谢

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 2022-01-12
    • 1970-01-01
    • 2016-05-03
    • 2019-03-27
    • 2021-11-08
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多