【问题标题】:Slack bot can share file but not post message while not in channelSlack bot 可以共享文件,但不在频道中时不能发布消息
【发布时间】:2018-05-29 09:35:45
【问题描述】:

我对 slack web api 和机器人特别陌生。我的问题是,机器人用户无法将消息发布到频道中的原因是什么,直到他们被隐式邀请,尽管我们可以代表机器人向其上传文件。下面是几个代码sn-ps

我已请求以下范围 chat:write:user bot files:write:user

当我上传带有通过 OAuth2 获得的机器人令牌的文件时,该文件出现在带有机器人图标和名称的频道中

.token(BOT_TOKEN)
            .title("title")
            .content("content")
            .channels(Collections.singletonList("#channel"))
            .build();

但是当我使用相同的方法尝试将消息发布到同一频道时,我收到一个错误 not_in_channel

.token(BOT_TOKEN)
            .channel("#channel")
            .text("text")
            .asUser(true)

我知道它在没有作为用户 true 传递的情况下工作,但是它设置了默认的应用程序图标和名称,而不是机器人。

在与机器人进行身份验证后,有没有一种方法可以在无需用户交互的情况下将消息/上传文件发布到频道。

【问题讨论】:

  • 因此,虽然不在该频道中,但您可以上传文件,并且可以将消息作为机器人(as_user = false)发送到该频道。您能否详细说明什么不起作用以及您想要实现什么?
  • @ErikKalkoken 感谢您的回复,当我尝试使用机器人令牌发布消息并传递 as_user = false 这是默认值时,消息是代表我的 APP 而不是机器人用户发布的,我的应用程序有不同的图标和名称,然后当我上传一个实际上代表我的 BOT 用户的文件时,它的图标和名称看起来很奇怪。从不同的图标和名称发送的 2 条消息。但是,当我将 as_user 标志更改为 true 时,我收到一个错误,即机器人不在频道内,尽管我能够将文件上传到它。如果仍然不清楚,我可以发布屏幕。

标签: bots slack slack-api


【解决方案1】:

这里的问题似乎是,当第一次将消息作为机器人发布到频道并随后作为机器人上传文件时,图标和用户名不同。这似乎是 Slack 的一个已知问题。这就是chat.postMessage 的文档中所说的as_userfalse

注意:在上面的 Slack App 案例中,它肯定会更有意义 让您的应用程序的名称成为与关联的默认用户名 你的应用程序。这种不一致的行为将得到纠正。当然,你 如果这是您的机器人的名称,仍然可以将您的机器人命名为“机器人”。

但是有一种解决方法可以获得相同的用户名和图标。发送消息时手动设置即可,例如:

curl -F token=BOT_TOKEN -F channel=CHANNEL -F text=Hello -F username=NAME_OF_BOT -F icon_url=ICON_URL https://slack.com/api/chat.postMessage 

【讨论】:

  • 反正不是很明显。如果您授予了某些权限,让机器人在将用户标志设置为 true 的情况下发布消息会更有意义。感谢您的帮助@ErikKalkoken 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 2018-12-25
  • 1970-01-01
  • 2021-01-10
  • 2020-03-20
  • 2016-07-13
相关资源
最近更新 更多