是否可以像Slack团队中的任何用户一样发布到chat.postMessage?

时间:2017-03-07 20:53:48

标签: javascript slack-api slack

我正在构建一个Slack集成,旨在修改一些文本,然后将其发布到Slack通道,就像触发命令的用户说过它一样。

e.g。 /makeFace disapproval

@Ben 3:45pm ಠ_ಠ

我要求client权限范围,这会添加chat:write:user权限。但是当我点击chat.postMessage端点时,它似乎只允许您将作为添加集成的用户发布,因为它返回的令牌似乎是为该用户个性化的。

我知道giphy,例如,发送它的gif消息,好像你是创始人,但我无法找到他们如何管理它。是否有任何关于发送消息的文档作为团队的其他成员?

1 个答案:

答案 0 :(得分:4)

有两种方法可以实现这一目标:

:一种。覆盖用户名和图标

当您使用chat.postMessage发送消息时,可以使用属性username设置用户名。然后,该消息将显示为该用户发送(与icon_url的图标相同)。

但是,这并不意味着模仿真实用户,因此即使您使用与真实用户相同的用户名和图标,该消息也会包含应用标记,以便可以将其与真实用户区分开来。

以下是一个示例(来自游戏玩家Slack关于飞行和杀死太空船): enter image description here

但取决于您的要求可能对您有用。

如果你想使用它,请确保同时将as_user属性设置为false(是的,真的),它不能用于机器人令牌,只能使用用户令牌。

有关其工作原理的详细信息,请参阅here

这也适用于Incoming Webhooks的旧版本,但不适用于当前版本的incoming webhooks。 (您仍然可以获取旧版本,请参阅this answer

<强> B中。拥有所有令牌

另一种方法是始终使用来自相应用户的令牌来发送消息。与您的应用发送的as_user = true消息相结合,看起来就像是来自相应用户(没有APP标记)。

为了实现这一目标,您的应用需要从工作区中的所有用户收集令牌并存储它们以供日后使用。这可以通过要求每个用户安装您的应用程序(称为添加“配置”)通过Oauth process(用于将应用程序安装到工作区)来完成,这允许您的应用程序收集和存储这些令牌供以后使用。