是否可以 post 到 chat.postMessage 作为 Slack 团队中的任何用户?
Is it possible to post to chat.postMessage as any user in a Slack team?
我正在构建一个 Slack 集成,旨在修改一些文本,然后 post 将其发送到 Slack 频道,就好像触发命令的用户已经说过一样。
例如/makeFace disapproval
@Ben 3:45pm
ಠ_ಠ
我请求client
权限范围,它添加了chat:write:user
权限。但是当我点击 chat.postMessage
端点时,它似乎只允许您 post 作为添加集成的用户 因为它的令牌 returns似乎对那个用户来说是个性化的。
我知道 giphy,例如,发送它的 gif 消息就好像你是发起者一样,但我不知道他们是如何管理它的。是否有作为团队其他成员发送消息的文档?
有两种方法可以实现:
一个。覆盖用户名和图标
当您使用 chat.postMessage
发送消息时,可以使用 属性 username
设置用户名。然后该消息将显示为由该用户发送(对于带有 icon_url
的图标也是如此)。
然而,这并不意味着冒充真实用户,因此即使您使用与真实用户相同的用户名和图标,消息也会带有应用标签,以便与真实用户区分开来。
这是一个示例(来自玩家 Slack 关于飞行和杀死 space 飞船的内容):
但取决于您的要求,哪些可能适合您。
如果你想使用它,请确保也将 as_user
属性 设置为 false
(是的,真的)并且它不适用于机器人令牌,仅适用于用户令牌。
有关其工作原理的更多详细信息,请参阅 here。
这也适用于 Incoming Webhooks, not with the current version of incoming webhooks though. (You can still get the legacy version, see this answer)
的旧版本
乙。拥有用户的token
另一种方法是始终使用各自用户的令牌来发送消息。与您的应用发送的 as_user = true
消息相结合,看起来就像它们来自相应的用户(没有 APP
标签)。
要实现这一点,您的应用需要从您工作的所有用户那里收集令牌space并存储它们以备后用。这可以通过要求每个用户通过 Oauth process 安装您的应用程序(称为添加 "configuration")来完成(与您用来将应用程序安装到作品 space 相同),这允许您应用程序收集和存储这些令牌供以后使用。
更新:这不起作用。它冒充了安装该应用程序的用户,所以它似乎只是工作......直到另一个用户尝试使用它(他们最终冒充你)。
- 转到您应用的管理页面。 Select“OAuth 和权限”。
- 将
chat.write
OAuth 范围作为 User 令牌范围添加到您的应用程序,而不是 Bot 令牌范围。
- 记下您在本页顶部的
User OAuth Token
( 而不是 您的 But User OAuth Token
)。
- 致电
chat.postMessage
username
= 您想要post代表 的用户的用户 ID
token
= 以上步骤 3 中的令牌
结果 post 将被 100% 模仿。不仅仅是其他答案中提到的名称和图标,而且它会 100% 发挥作用,就好像它来自用户一样。
我正在构建一个 Slack 集成,旨在修改一些文本,然后 post 将其发送到 Slack 频道,就好像触发命令的用户已经说过一样。
例如/makeFace disapproval
@Ben 3:45pm
ಠ_ಠ
我请求client
权限范围,它添加了chat:write:user
权限。但是当我点击 chat.postMessage
端点时,它似乎只允许您 post 作为添加集成的用户 因为它的令牌 returns似乎对那个用户来说是个性化的。
我知道 giphy,例如,发送它的 gif 消息就好像你是发起者一样,但我不知道他们是如何管理它的。是否有作为团队其他成员发送消息的文档?
有两种方法可以实现:
一个。覆盖用户名和图标
当您使用 chat.postMessage
发送消息时,可以使用 属性 username
设置用户名。然后该消息将显示为由该用户发送(对于带有 icon_url
的图标也是如此)。
然而,这并不意味着冒充真实用户,因此即使您使用与真实用户相同的用户名和图标,消息也会带有应用标签,以便与真实用户区分开来。
这是一个示例(来自玩家 Slack 关于飞行和杀死 space 飞船的内容):
但取决于您的要求,哪些可能适合您。
如果你想使用它,请确保也将 as_user
属性 设置为 false
(是的,真的)并且它不适用于机器人令牌,仅适用于用户令牌。
有关其工作原理的更多详细信息,请参阅 here。
这也适用于 Incoming Webhooks, not with the current version of incoming webhooks though. (You can still get the legacy version, see this answer)
的旧版本乙。拥有用户的token
另一种方法是始终使用各自用户的令牌来发送消息。与您的应用发送的 as_user = true
消息相结合,看起来就像它们来自相应的用户(没有 APP
标签)。
要实现这一点,您的应用需要从您工作的所有用户那里收集令牌space并存储它们以备后用。这可以通过要求每个用户通过 Oauth process 安装您的应用程序(称为添加 "configuration")来完成(与您用来将应用程序安装到作品 space 相同),这允许您应用程序收集和存储这些令牌供以后使用。
更新:这不起作用。它冒充了安装该应用程序的用户,所以它似乎只是工作......直到另一个用户尝试使用它(他们最终冒充你)。
- 转到您应用的管理页面。 Select“OAuth 和权限”。
- 将
chat.write
OAuth 范围作为 User 令牌范围添加到您的应用程序,而不是 Bot 令牌范围。 - 记下您在本页顶部的
User OAuth Token
( 而不是 您的But User OAuth Token
)。 - 致电
chat.postMessage
username
= 您想要post代表 的用户的用户 ID
token
= 以上步骤 3 中的令牌
结果 post 将被 100% 模仿。不仅仅是其他答案中提到的名称和图标,而且它会 100% 发挥作用,就好像它来自用户一样。