我想设置一个#emergency
频道,其中重要消息将来自传入的webhook,其中包含@channel
。
我希望所有加入频道的人都能立即看到这些通知,无论时间或其免打扰(DND)设置。
似乎除了“当前用户”(用户调用API调用)之外,没有API可以更改任何人的DND设置。否则,我会在发布消息之前关闭所有频道成员的免打扰,然后恢复原始免打扰设置。
还有其他方法可以确保DND不会停止此#emergency
频道上的通知吗?
加入#emergency
频道的所有人都知道他们可能随时收到通知,因此这些通知不会出现意外。
(请注意,这不是与工作相关的Slack团队,它是一个社区组织,#emergency
频道上的消息与真实紧急情况有关。)
答案 0 :(得分:0)
您可以使用dnd.endDnd
结束用户的当前DND会话。但是正如您所指出的那样,这些API方法仅适用于令牌的所有者。
如果您想结束其他用户的DND会话,则您的应用程序需要具有参与#emergency
频道的所有用户的令牌。然后,它可以为每个用户使用带有令牌的API方法来结束DND会话。
这可以通过要求每个用户安装一次Slack应用程序来实现。它们将通过正常的Oauth流程运行并为自己生成一个新令牌。您的应用可以收集和存储这些令牌,以供以后使用。
这里是基本逻辑的粗略概述:
为当前正在与dnd.endDnd
此外,您需要考虑此方法的速率限制,即Tier 2(每分钟最多20个呼叫)。取决于DND中有多少用户,并且在考虑速率限制时,在紧急情况下该过程可能会花费很长时间。因此,我建议首先向每个使用@channel EMERGENCY
的用户发出ping命令,然后在已禁用其dnd会话后,对前dd用户重复该紧急ping操作。 @user-1 @user-2 @user-3 EMERGENCY
。