覆盖频道上的DND?

Dan*_*aum 14 slack-api

我想设置一个#emergency频道,其中重要的消息将来自传入的webhook并将包含@channel在其中.

我希望所有加入频道的人都可以立即看到这些通知,无论时间或他们的请勿打扰(DND)设置.

似乎除了"当前用户"(用户调用API调用)之外,没有API可以更改任何人的DND设置.否则,我会在发布消息之前关闭所有频道成员的DND,然后恢复原始DND设置.

还有其他方法可以确保DND不会停止此#emergency频道的通知吗?

加入#emergency频道的每个人都知道他们可能随时收到通知,因此这些通知不会出现意外情况.

(请注意,这不是与工作相关的Slack团队,它是一个社区组织,#emergency频道上的消息是关于真正的紧急情况.)

Eri*_*ken 0

您可以使用 结束用户当前的 DND 会话dnd.endDnd。但正如您所指出的,这些 API 方法仅适用于令牌的所有者。

如果您想结束其他用户的 DND 会话,您的应用程序需要拥有参与该#emergency频道的所有用户的令牌。然后,它可以使用每个用户的令牌调用 API 方法来结束 DND 会话。

这可以通过要求每个用户安装一次 Slack 应用程序来实现。他们将运行正常的 Oauth 流程并为自己生成一个新令牌。您的应用程序可以收集并存储这些令牌以供以后使用。

以下是基本逻辑的粗略概述:

  1. 获取紧急通道中的用户列表conversations.members

  2. 为这些用户获取免打扰设置dnd.teamInfo

  3. 为当前处于 DND 会话中的用户禁用 DND 设置dnd.endDnd

此外,您还需要考虑此方法的速率限制,即第 2 层(每分钟最多 20 个调用)。根据 DND 中的用户数量以及考虑速率限制,在紧急情况下该过程可能会花费太长时间。因此,我建议首先向每个人发出 ping @channel EMERGENCY,然后在前 dnd 用户的 dnd 会话被禁用后重复该紧急 ping,例如@user-1 @user-2 @user-3 EMERGENCY