我一直在思考这个问题,并阅读了 chat.postMessage Slack API 文档,我相信可以将我的一大段文字简化为更简洁的方案。
只有 watch(而非 follow)具备选择线程回复的能力,其机制我仍在研究中。或者,@david,您觉得是否可以考虑新增一个 thread 规则过滤器,优先级顺序为 mute > thread > watch > follow,并将该规则通过 trigger_notification 传递,以实现基于规则的敏感行为?
-
如果
watch配置为启用线程(或者定义了thread规则),在向 Slack 频道发送新帖子通知时,若该帖子主题已关联一个 Slackts,则通过将thread_ts设置为从 Slack 提供的ts值,将消息发布到对应的 Slack 线程中。 -
在向 Slack 频道发送新帖子通知时,若该帖子主题尚未关联任何
ts,则存储返回响应中的ts(以便后续该主题的帖子在watch配置为启用线程时能够进行线程化)。 -
当使用
post thread :thread_url命令时,将线程的ts存储到所创建的主题中,该值将仅被支持线程的watch规则使用。
以下是我目前的想法和顾虑:
-
如何按规则决定是否为线程发帖。目前我觉得新增一个过滤器是最简单的方案,但也许我遗漏了什么。
-
将原始 Slack 帖子 URL 和线程 ID 贯穿整个转录流程,目前对我来说是最不清晰的部分。这看起来确实需要在某个地方为每个提供商添加一个线程 ID,并一直保留到保存帖子时为止。我目前计划仅针对 Slack 的
ts实现该功能,但预计未来不会只有 Slack 这一种支持线程的聊天集成。 -
关于发帖,我认为需要在 Topic 上为 Slack 存储一个 Slack 特定的自定义字段(而非通用的
DiscourseChat自定义线程字段)来保存 Slack 的ts。