EMHmark7
(Tétreault)
1
假设一名成员选择了他感兴趣的群组和子类别。
我想向选择这些群组和子类别的人发送公告。
例如:在一个由全球主城市、多个区域和事项组成的城市中。
用户可以选择:
- 特定事项(作为一般群组),
- 其所在区域中该事项的一个群组,
- 另外两个区域中该事项的一个群组,
- 第二个特定事项(作为一般群组),
- 该事项所有区域中的所有群组,
- 主城市的主群组;
如果我想向这些群组中的一个或多个群组或子类别发送电子邮件,某些用户可能会收到同一公告的多封电子邮件,特别是如果该人选择了主城市群组,该群组会转发所有区域的信息,再加上一些子群组等。
问题:我如何准备一个涉及多个目标群组和子类别列表的邮件,无重复,并发送该消息?
-
我需要使用外部脚本吗?
-
我需要外部邮件处理器吗?
谢谢
Marc
如果您需要跨任意组和类别保证无重复的发送,您必须:
- 从目标组或类别导出用户列表。
- 手动或使用脚本合并和去重这些列表。
- 使用外部邮件处理器将消息发送到去重后的列表。
这是确保用户不会多次收到相同公告的最稳健的方法。
EMHmark7
(Tétreault)
3
谢谢,您知道我们可以自动化这一点吗?例如,请求 API 以便为每个新成员注册/退出或组/类别选择接收消息,并且只接收新的更改,或者(不太理想)接收包含其组/类别的整个列表,这些都可以由 Python 程序请求?(我可以管理 Python 代码)。问题更多是关于 Discourse 和 Python 之间的自动通信,以及 Python 和邮件处理器之间的通信。
Discourse 提供了一个强大的 REST API,允许您:
- 列出所有用户、群组和用户-群组关系
- 监控新用户注册和群组加入/离开操作(通过轮询或 Webhook)
- 检索类别成员资格配置
您可以查询完整列表或尝试跟踪近期更改。要实现完整的增量更改检测,您可能需要实现基于时间的检查并在本地管理差异。身份验证通过 HTTP 标头(Api-Key、Api-Username)处理。
但是,为了更高效和集成化的控制,我建议创建一个自定义 Discourse 插件。插件在 Discourse 服务器环境中运行,并提供对 Discourse 内部的直接访问,例如:
- 用户、群组和类别成员资格更新
- 注册和群组更改的生命周期事件钩子
- 直接访问 Discourse 的内部 API 和数据库
这种方法为您提供了实时功能和更大的灵活性,可用于实现诸如邮件处理或用户分段等自动化工作流。
EMHmark7
(Tétreault)
5
我们可以创建一个插件,即使它由 Discourse 托管,也能在我们的实例上运行,还是我们需要托管它?
如果是非官方插件,我认为只能安装在企业版上,否则您将不得不自行托管。
@EMHmark7 你最终弄清楚要如何实现这个功能了吗?
在 Discourse 中,实现你想要的功能的一种方法是创建分类,并让社区成员通过选择“监视”通知级别来“订阅”这些分类。默认监视分类 或 默认监视首帖 对于在你的站点上设置一个公告分类非常方便,可以触达你站点上的所有人。
我相信有方法可以根据组成员身份或其他标准来管理上述内容,但我有一段时间没做过了——也许其他人有可以分享的经验。
另一种方法是直接向群组发送私信——如果你向几个群组发送私信,并且同一成员在多个群组中,就不会有重复。
但听起来你可能在寻找一个不同的工具,如果你想要的是一个人们登录参与讨论的论坛或社区,而不是一组发送邮件的邮件列表。
所有这些都可以写在 Discourse 之外的代码中,所以你不需要安装它。如果你正在使用 WordPress,那么你可以使用 GitHub - discourse/wp-discourse: WordPress plugin that lets you use Discourse as the community engine for a WordPress blog 免费获得其中很多功能,然后使用另一个 WordPress 插件来处理邮件列表部分。