如何在第 3 方应用程序中使 Slack 频道保持最新状态?

How to keep a Slack channel up-to-date in a 3rd party app?

我最近一直在玩 slack API,我想出了一个演示项目,我有一个聊天小部件,在 上的下拉菜单中header 填充频道列表(通过 channels.list API 调用),通过选择其中之一,将调用 channels.history 填充小部件 body ,然后在下方 footer 一个文本框和发送按钮 post 一条新消息到 slack.. 现在,让小部件的主体保持最新, i) 我必须定期拨打 channels.history 休息电话(以防万一有人在 SLACK 应用程序上发送消息)而且 ii) 当用户从这个小部件的文本框发送消息时,我打了一个休息电话。

我现在的问题是:我如何跳过定期调用(因为我收到 429 警告)而不是实现任何逻辑,仅在新消息到达时触发 channels.history 调用松弛的一面,而不是定期的。或者有更好的方法吗?

我不是 100% 熟悉 Slack API 但我发现了这个:real time messaging APIs.

由于它使用 websockets,我假设您可以连接并接收所有发出的消息,而不必定期请求该信息。不过,您必须更改您的应用程序以使用 websockets 而不是定期 HTTP 调用。

在第 3 方应用程序中保持来自频道的当前消息副本为最新的一种方法是使用 Events API. You subscribe to the messages event,每当发布新消息时,Slack 都会向您发送请求,其中包括完整的消息。这也适用于 "complex" 条消息。