martin
(Martin Brennan)
2022 年8 月 23 日 22:47
67
我们通过几种不同的方式链接到父帖子,并且关联是通过 PostReply 表存储的,其中 reply_post_id 代表正在回复的帖子,post_id 引用父帖子。传入的电子邮件使用 In-Reply-To 来链接这些,并且从 Discourse UI 中,如果您引用多个帖子,则会创建多个 PostReply 记录,如果您使用单个帖子的“回复”按钮,则会用于创建 PostReply 记录。
是的,抱歉我应该注意到这一点,add_identification_field_headers 将不再使用,它都在 add_experimental_identification_field_headers 这个新代码中。感谢您对代码本身的评论,我没想到!我今天会处理它们。
martin
(Martin Brennan)
2022 年8 月 23 日 23:44
70
@cameron-simpson 抱歉,我想你可能已经审查了该 PR 的早期提交。我现在已经为它重新设置了代码,并再次推送,以便有一个提交包含我们一直在该测试站点上测试的所有最新代码。希望那里的提交消息是有帮助且合乎逻辑的。
对于 References,如果用户回复了一个帖子,那么我将按顺序使用从 OP 到父帖子的 Message-ID 的完整链。例如,如果所有这些帖子都是直接回复链:
帖子 1 – discourse/post/500@test.site
帖子 2 – discourse/post/501@test.site
帖子 3 – discourse/post/502@test.site
帖子 4 – discourse/post/503@test.site
帖子 5 – discourse/post/504@test.site
那么最后一个帖子的 In-Reply-To 标头将是:
In-Reply-To: <discourse/post/503@test.site>
而 References 将是:
References: <discourse/post/500@test.site> <discourse/post/501@test.site> <discourse/post/502@test.site> <discourse/post/503@test.site>
如果创建了一个新帖子,但它没有直接回复上面的帖子,例如帖子 6 – discourse/post/505@test.site,那么它的 In-Reply-To Message-ID 将是 discourse/post/500@test.site>(OP),而 References 将是 discourse/post/500@test.site>,它也是 OP。
如果这不正确,请告诉我,我可以修改。
3 个赞
马丁·布伦南 (Martin Brennan) 于 2022 年 8 月 23 日 23:59 通过 Discourse Meta 发文:
@cameron-simpson 抱歉,我认为您可能已经审查了该 PR 的早期提交。我已经为它重新设置了代码基,并再次推送,以便有一个提交包含我们一直在该测试站点上测试的所有最新代码。希望那里的提交消息是有帮助且合乎逻辑的。
我会再看一遍,谢谢。
对于“References”,如果用户回复了一个帖子,我将按顺序使用从 OP 到父帖子的完整 Message-ID 链。例如,如果所有这些帖子都是直接的回复链:
帖子 1 – discourse/post/500@test.site
帖子 2 – discourse/post/501@test.site
帖子 3 – discourse/post/502@test.site
帖子 4 – discourse/post/503@test.site
帖子 5 – discourse/post/504@test.site
听起来是正确的。
那么最后一个帖子的 In-Reply-To 标头将是:
In-Reply-To: <discourse/post/503@test.site>
而 References 将是
References: <discourse/post/500@test.site> <discourse/post/501@test.site> <discourse/post/502@test.site> <discourse/post/503@test.site>
也正确。
如果创建了一个新帖子,但它 不 直接回复上面的帖子,例如帖子 6 – discourse/post/505@test.site,那么它的 In-Reply-To Message-ID 将是 <discourse/post/500@test.site>(OP),而 References 将是 <discourse/post/500@test.site>,也就是 OP。
这一切都是正确的。
祝好,
卡梅伦·辛普森 (Cameron Simpson) cs@cskk.id.au
1 个赞
martin
(Martin Brennan)
2022 年8 月 24 日 01:25
72
Cameron Simpson:
这都是正确的。
谢谢。我还要提到,我们确实需要根据 PostReply 记录到数据库中重新创建 References 链,您将在最新的提交中看到这一点。
martin
(Martin Brennan)
2022 年8 月 24 日 23:28
73
@cameron-simpson 我想在下周开始对这段代码进行内部审查(以及对我所做的进行一些常规的润色),因为我将在 3 号去度假。这样,如果审查完成,我回来后就可以合并并部署它。如果您有任何进一步的反馈,请在那之前告诉我,否则我将认为一切都很好(正如我们昨天测试时似乎那样 :))。
1 个赞
我认为一切都很好。我从手动检查我这边的邮件线程中得到了一些笔记,我主要手动检查了标题:
Topic for testing threading 2022-08-23
Topic for testing threading 2022-08-23
post msg-id detail
59/1 98 OP new topics for testing email threading
59/11 109 reply-to-topic in-reply-to 98 ref 98
59/2 100 reply-to-topic in-reply-to 98 ref 98
59/3 via-email uuid@discourse yes welcome in-reply-to 100 ref 98,100
not noted as a reply in the web ui
??? me-via-email ...kr@cskk glad to be here in-reply-to uuid@discourse no refs
not noted as a reply in the web ui
59/10 108 reply to earlier post in-reply-to ...kr@cskk ref 98,100,0aa@discourse,kr@cskk
59/5 103 thanks cameron in-reply-to kr@cskk refs 98,100,0aa@discourse,kr@cskk
???104 me-via-email ...zp@cskk in-reply-to 103 no refs
not noted as a reply in the web ui
59/7 105 no problem in-reply-to zp@cskk refs 98,100,00a@discourse,kr@cskk,103,zp@cskk
posted on web, reply to 104? aka zp@@cskk
not noted as a reply in the web UI (so, new-top-topic?)
quotes kr@cskk "glad to be here"
NEEDS REVIEW
59/9 107 expected or a bug in-reply-to 106 ref 98,100,0aa@discourse,kr@cskk,103,zp@cskk,105,106
quotes 59/8
Notes:
- email replies are not shown as replies in the web ui
- web multireplies only get one msg-id in the in-reply-to
- users do not get email copies of their own posts (email or web), would be nice to have an option in prefs for this
- web msg-ids seem to be forum post.id, would be nicer if topic.id/in-topic.id for easier tracing in headers
总结:我没有发现任何不正确的标题,但注意到上述的一些不足之处。
我还没有机会审查你更新的代码,但功能上似乎是正确的。
谢谢,
Cameron
1 个赞
martin
(Martin Brennan)
2022 年8 月 25 日 00:41
75
谢谢 Cameron!
你能详细说明一下吗?你的意思是你看不到这个?
还是你看不到这部分?对于后者,我们只显示带有箭头的回复,如果回复的帖子在主题中更靠前,而不仅仅是前一个帖子:
哦,我没想到这个是必需的,所以如果你通过网络回复 N 个帖子,所有这些帖子的 Message-ID 都应该显示在 In-Reply-To 标头中,然后 References 遵循当前主题从 OP 到单个父帖子的逻辑(在我们的例子中,我选择最近创建的帖子作为单个父帖子)?
是的,这是故意的,不向您发送您已经“看到”的内容,我们可以将此作为另一个 TODO 来看看是否有更多用户需要此功能。
主题 ID 的问题在于它太脆弱,不够具体/独特,而且当帖子在主题之间移动时,它看起来会有点令人困惑。也许我们可以在电子邮件中包含一个自定义标头,例如 X-Discourse-Topic-ID 或其他(如果允许的话),以便于可视化跟踪?
2 个赞
不,我看到了那个图标。
啊。而我,作为一个不常使用论坛的邮件用户,期望在每次回复时都能看到这个指示器,因为我没有将其视为即时通讯布局(也许吧)。所以我的期望与你们的选择不符。
Martin Brennan:
哦,我没觉得这有必要。
这并非必需。你可以将其视为“服务质量”。你明确地写道:
@message.header['In-Reply-To'] = referenced_post_message_ids[0] || topic_canonical_reference_id
而你只需要去掉那里的 [0] 即可。客户端可以使用一个 message-id,或者随心所欲地做一些非常奇怪的事情,所有这些都是有效的。
“应该”是一个很强的词。如果 message-ids 很容易获得,你 可以 包含所有 message-ids。你没有义务这样做,而且代码本身是有效的。
嗯。我知道我自己喜欢这样,这样我就知道我的帖子已经发送到列表/论坛了——邮件通常有队列,而且一些(咳,大型澳大利亚电信公司,咳)ISP 的邮件处理程序非常……不可靠、缓慢等等。偶尔我也会看到其他人需要这个(在邮件列表中,但我们实际上是在讨论这种模式)。这个选项的默认值可能应该是 false。
作为一个技术宅,我喜欢至少能获得一个未经过滤的流,以便我能自己做出政策决定。
鉴于 Message-ID 基本上是不透明的/一次性设置的,我不认为这是一个问题,除非有 重新发布 同一个 message-id 的范围——如果你的所有计数器都是严格单调递增的,我不希望发生这种情况。我只是觉得将 post.id 例如 98 与主题/帖子例如 59/1 进行匹配非常乏味。如果那里有一个类似 category.id/topic.id/post-in-topic.id 的东西而不是 98 会很方便。
那也足够了。这只是为了方便调试头部。
祝好,
Cameron
4 个赞
martin
(Martin Brennan)
2022 年8 月 25 日 01:17
77
那仍然是你正在查看的旧代码,你只需要查看 add_experimental_identification_field_headers。但你的观点仍然成立。
我们基础设施团队里有人会坚决同意这个说法,他们有着与你相似的工作流程和观点
这说得有道理,也许我也会重新引入主题 ID,因为 outbound_message_id 确实是一次性设置且不会改变(取决于帖子是在 Discourse Web UI 中生成还是通过传入电子邮件生成)。
Cameron Simpson:
这也足够了。这只是在调试头信息方面的便利。
由于我将再次在 Message-ID 中添加主题 ID,所以现在可能不需要这个了。
啊,我猜我应该看到这个了:
most_recent_post = referenced_posts.first
most_recent_post_message_id = Email::MessageIdService.generate_or_use_existing(most_recent_post)
@message.header["In-Reply-To"] = most_recent_post_message_id
总之,现有的东西已经有效了。完全由你决定。
2 个赞
martin
(Martin Brennan)
2022 年8 月 26 日 01:53
79
我其实不确定这一点,我有一种预感,我们并不真正希望在这些 Message-IDs 中包含主题 ID,只包含帖子 ID 就足够简单了。我将尝试这样做:
martin
(Martin Brennan)
2022 年8 月 26 日 01:56
80
对我来说没问题。我只是发现很难将电子邮件消息头与帖子关联起来,因为post.id在用户界面或网络上特定帖子的 URL 中并不明显。将其包含在附加的上下文头中同样很好。
谢谢,
卡梅隆
1 个赞
只是快速跟进一下——这个 PR 已经有相当长一段时间没有动静了。- Cameron
martin
(Martin Brennan)
2022 年9 月 20 日 00:05
83
嗨 Cameron,我参加了公司的聚会,然后休假了两周,今天才刚开始恢复正常工作。如果本周不能合并,那下周肯定能合并。抱歉耽误了!
按 Martin Brennan 于 2022 年 9 月 20 日 00:17 在 Discourse Meta 上的发言:
Cameron,你好,我参加了我们公司的聚会,然后休假了两个星期,今天才刚开始恢复工作。如果本周没有合并,那么下周肯定会合并。抱歉耽误了!
不用道歉。我知道你不在,但不确定你的时间安排或何时回来。而且我想在你那里可能还是周一 :-(
谢谢,
Cameron Simpson cs@cskk.id.au
2 个赞
martin
(Martin Brennan)
2022 年9 月 25 日 23:19
85
我刚刚合并了 PR,我今天晚些时候会尝试部署 Python 论坛,以便您可以开始认真使用它。
1 个赞
通过 Martin Brennan 于 2022 年 9 月 25 日 23:29 在 Discourse Meta 发布:
我刚刚合并了拉取请求,我稍后会尝试部署 Python 论坛
今天,这样你就可以开始认真使用了。
太棒了。谢谢,Cameron
2 个赞
martin
(Martin Brennan)
2022 年9 月 26 日 01:51
87
现在已经完成了,如果您遇到任何问题,请在此处告知我
2 个赞