当不在频道中时,Slack 机器人可以共享文件但不能共享 post 消息
Slack bot can share file but not post message while not in channel
我对 slack web api 和机器人特别陌生。我的问题是,机器人用户无法 post 将消息发送到频道的原因是什么,直到他们被隐式邀请,尽管事实上我们可以代表机器人将文件上传到它。下面是几个代码片段
我请求了以下范围 chat:write:user
bot
files:write:user
当我上传一个带有通过 OAuth2 获得的机器人令牌的文件时,该文件出现在一个带有机器人图标和名称的频道中
.token(BOT_TOKEN)
.title("title")
.content("content")
.channels(Collections.singletonList("#channel"))
.build();
但是当我使用相同的方法尝试 post 向同一频道发送消息时,我收到错误消息 not_in_channel
.token(BOT_TOKEN)
.channel("#channel")
.text("text")
.asUser(true)
我知道它可以正常工作,但不会以用户身份通过,但它会设置默认的应用程序图标和名称,而不是机器人程序。
有没有办法在使用机器人进行身份验证后无需用户交互就可以将 messages/upload 文件发布到频道。
这里的问题似乎是图标和用户名在第一次以机器人身份向频道发布消息和随后以机器人身份上传文件时不同。这似乎是 Slack 的一个已知问题。这就是文档中所说的 chat.postMessage
for as_user
is false
:
Note: In the Slack App cases above, it would certainly make more sense
for your application's name to be the default username associated with
your app. This inconsistent behavior will be corrected. Of course, you
can still name your bot "bot," if that is your bot's name.
但是有一种解决方法可以获取相同的用户名和图标。发送消息时手动设置即可,例如:
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
我对 slack web api 和机器人特别陌生。我的问题是,机器人用户无法 post 将消息发送到频道的原因是什么,直到他们被隐式邀请,尽管事实上我们可以代表机器人将文件上传到它。下面是几个代码片段
我请求了以下范围 chat:write:user
bot
files:write:user
当我上传一个带有通过 OAuth2 获得的机器人令牌的文件时,该文件出现在一个带有机器人图标和名称的频道中
.token(BOT_TOKEN)
.title("title")
.content("content")
.channels(Collections.singletonList("#channel"))
.build();
但是当我使用相同的方法尝试 post 向同一频道发送消息时,我收到错误消息 not_in_channel
.token(BOT_TOKEN)
.channel("#channel")
.text("text")
.asUser(true)
我知道它可以正常工作,但不会以用户身份通过,但它会设置默认的应用程序图标和名称,而不是机器人程序。
有没有办法在使用机器人进行身份验证后无需用户交互就可以将 messages/upload 文件发布到频道。
这里的问题似乎是图标和用户名在第一次以机器人身份向频道发布消息和随后以机器人身份上传文件时不同。这似乎是 Slack 的一个已知问题。这就是文档中所说的 chat.postMessage
for as_user
is false
:
Note: In the Slack App cases above, it would certainly make more sense for your application's name to be the default username associated with your app. This inconsistent behavior will be corrected. Of course, you can still name your bot "bot," if that is your bot's name.
但是有一种解决方法可以获取相同的用户名和图标。发送消息时手动设置即可,例如:
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