Slack bot可以共享文件,但不能在通道中发布消息

时间:2017-12-15 07:45:04

标签: bots slack slack-api

我特别擅长使用web api和机器人。我的问题是机器人用户无法将消息发布到频道中的原因是什么,直到他们被隐式邀请,尽管代表机器人我们可以上传文件到它。以下是几段代码片段

我已请求以下范围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然而它设置默认的应用程序图标和名称而不是机器人之一。

在使用bot进行身份验证后,是否有办法将消息/上传文件发布到频道而无需用户交互。

1 个答案:

答案 0 :(得分:0)

这里的问题是,当首次将消息作为机器人发布到频道并稍后将文件作为机器人上传时,图标和用户名会有所不同。这种接缝是Slack的一个已知问题。这就是as_user false 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 的{​​{1}}文档中所说的内容:

  

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

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

set_fact