覆盖频道上的DND?

时间:2017-03-01 20:21:53

标签: slack-api

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

我希望所有加入频道的人都能立即看到这些通知,无论时间或其免打扰(DND)设置。

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

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

加入#emergency频道的所有人都知道他们可能随时收到通知,因此这些通知不会出现意外。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

这里是基本逻辑的粗略概述:

  1. 使用conversations.members

  2. 获取紧急通道中的用户列表
  3. 使用dnd.teamInfo

  4. 为那些用户获取DND设置
  5. 为当前正在与dnd.endDnd

  6. 进行DND会话的用户禁用DND设置

此外,您需要考虑此方法的速率限制,即Tier 2(每分钟最多20个呼叫)。取决于DND中有多少用户,并且在考虑速率限制时,在紧急情况下该过程可能会花费很长时间。因此,我建议首先向每个使用@channel EMERGENCY的用户发出ping命令,然后在已禁用其dnd会话后,对前dd用户重复该紧急ping操作。 @user-1 @user-2 @user-3 EMERGENCY