Slack API - conversations.list 性能随着存档频道数量的增加而下降

Slack API - conversations.list performance decrease as number of archived channels increase

我正在尝试提高我们的松弛集成的性能,因为获取所有频道需要很长时间。我们处于免费的 slack 层级,因此我们没有使用 API 删除频道的选项。当我们的自动化 运行 反对松弛时,我们会创建一个频道并在完成后将其存档。这导致我们的工作区中存在大量存档频道。

当我们到达 conversations.list 端点时,我们应用过滤器来排除存档频道,但过滤是在分页后应用的,因此我们必须翻阅大量空白页面。最初我以为我可以说如果一个页面是空的,就跳出循环并忽略其余页面。但是,我发现如果我在第 3 页取消归档频道,当我使用 conversations.list 时,第 1 页和第 2 页是空的(这些页面上的所有频道都已归档)并且新取消归档的频道仍将在页面上3. 对于这种行为,我需要遍历所有页面以确保我抓取所有未存档的频道。

我们使用 conversations.list 端点来查看我们的软件中是否有针对给定记录的通道。在创建新记录或编辑现有记录时,我们需要按名称搜索对话。为此,我们获取所有频道并定期填充本地频道缓存,以便我们可以查找给定频道名称的频道 ID。当我们确实必须填充频道缓存时,根据连接类型,获取所有频道可能需要几分钟时间

如果 API 中有一种按名称搜索频道的方法,这将解决问题,因为我们可以只搜索我们需要的频道名称,而不必获取每个频道。但是,我在 API 参考中找不到这样的方法,conversations.list 的额外参数似乎也没有帮助。

想知道是否有人 运行 遇到过这样的问题,如果有,他们是如何解决的?感谢阅读!

我刚刚发现了一种绝妙的 hacky 方法。你是对的,conversations.list 是官方的方式,没有其他方法可以按名称搜索频道,你的分页是应该发生的。

但是,如果您可以获得 chat.scheduleMessage 的访问权限,那么您可以通过频道名称安排消息。这将允许您通过查看是否收到有效响应或错误来确定频道是否存在名称(只需在将来安排消息)。

为防止将来出现大量预定消息,您可以立即通过 chat.deleteScheduledMessage

删除预定消息