你好,我正在尝试通过 Zapier 将 Discourse 与我们正在使用的另一款工具进行集成。我希望能够触发一个针对特定帖子的 webhook 事件,并在 webhook 传输中发送该帖子的信息。标签似乎是在主题(Topic)级别设置的,无法针对单个帖子进行具体配置。徽章可以通过帖子授予,但似乎无法触发正确的 webhook 传输。
请问有什么方法可以实现这一点吗?
谢谢!
你好,我正在尝试通过 Zapier 将 Discourse 与我们正在使用的另一款工具进行集成。我希望能够触发一个针对特定帖子的 webhook 事件,并在 webhook 传输中发送该帖子的信息。标签似乎是在主题(Topic)级别设置的,无法针对单个帖子进行具体配置。徽章可以通过帖子授予,但似乎无法触发正确的 webhook 传输。
请问有什么方法可以实现这一点吗?
谢谢!
是的,这可以通过将 Zapier Webhook 用作触发应用,并配置 Discourse Webhook 向 Zapier 发送数据来实现。Trigger a Zapier task with Discourse Webhooks 中的“设置触发器”部分详细介绍了如何配置此功能。您能阅读一下该主题吗?如果有任何不清楚的地方,请在该主题中提问,我们会回复您。
嗨,Simon,谢谢你的信息!![]()
我尝试通过 Webhooks 设置这个功能,但只看到可以发送所有帖子到 Zapier 的选项,而无法手动筛选要发送的帖子。也就是说,只能发送特定的帖子。你知道是否有某种配置或方法可以选择要发送的帖子来实现这一点吗?
您可以在 Discourse 的网络钩子(webhook)设置中,通过“触发类别”、“触发标签”和“触发群组”来限制哪些帖子或主题会触发网络钩子。创建一个 标签组,其中仅允许工作人员查看或使用的标签,可能是将网络钩子限制为仅针对特定主题的有效方法。
您也可以在 Zapier 中添加一个过滤步骤,仅当主题满足您指定的某些条件时才继续执行。在 Create a Salesforce lead via Zapier when a user signs up on Discourse 的“捕获 Discourse 用户创建事件”部分中,有一个针对 用户 网络钩子的设置示例。为 Zapier 中的主题或帖子设置类似的过滤步骤,流程是相似的。
据我了解,如果一个 Zap 能够执行到其过滤步骤,该事件就会被计为 Zapier 上的一个任务。因此,最好在将请求发送到 Zapier 之前,尽可能在 Discourse 端进行过滤。通过类别、标签和群组进行过滤是实现这一点的最佳方式。
再次感谢 @simon!我尝试了你提到的配置选项,但无法在帖子层面找到一种方法,让我能够对 Discourse 中某个帖子特定的数据变化做出反应,从而指示该帖子需要同步到另一个系统。
我确实可以发送带有特定标签的整个主题的所有内容,我已经看到这种方法可行。但这需要更高级别的 Zapier 账户来构建相应的自动化流程并处理由此产生的任务数量,这可能没问题。不过,我还没弄清楚的是,Discourse 中的某个管理员如何对某个帖子执行操作,以触发一个 Webhook,使得 Zapier 能够识别出应发送该主题中的特定帖子(而不是该标签主题下的所有帖子)。
我对 Discourse 完全陌生,所以我在想,是否有什么与帖子相关的功能是我遗漏的。
在帖子级别进行过滤可能需要在 Zapier 上实现。你希望使用什么样的数据来决定是否触发这个 Zap?
这正是我的 Discourse 知识有所欠缺的地方。我不确定有哪些特定于帖子的数据可以用来标记该帖子需要同步,并且这些数据会被传递到 Webhook 负载中。
标志(Flags)的作用不同……不确定这是否可行。
我们不想更改用户可见的帖子内容。
徽章(Badges)似乎可行,但我没看到它们能触发 Webhook。
有什么建议吗?
我最初的想法是,筛选那些已被标记为“已解决”的帖子,或被工作人员点赞的帖子。不幸的是,这两种操作都不会触发 webhook。我认为不针对点赞触发 webhook 是有充分理由的,但或许可以开发某种机制,在话题被标记为“已解决”时触发 webhook。
若要利用 Discourse 当前功能针对特定帖子触发 webhook,您可以尝试设置一个在“标记事件”时触发的 webhook。在 Zapier 中,您可以通过筛选标记为“其他事项”(Something Else)的帖子,并指定由您网站上的特定用户发起的标记来实现过滤。
查看随“标记事件”传递的负载的最简单方法是在 Discourse 上创建一个 webhook,并将其触发器设置为“标记事件”。为了测试,您可以在 webhook 的“负载 URL”字段中输入任意 URL,例如 http://example.com。在您的网站上标记一个帖子后,前往“管理 / API / Webhooks”,点击“投递状态”链接以进入该 webhook 的请求列表。
点击“请求”按钮,即可查看 webhook 传递的负载内容。
在 Zapier 中,您应该能够访问请求负载中的任何值。若要筛选由特定用户标记为“其他事项”的帖子,您需要检查请求中的 flag_type 是否为 notify_moderators,并且请求中的 created_by 字段是否设置为您希望触发 Zapier 操作的用户名。
好的,我明白这行得通。人们能看到我们在此讨论的帖子被标记了吗?我们希望将“其他”作为该特定内容的标记原因……对于想要触发此 Webhook 的人来说,这有点像是黑魔法。有没有办法为帖子添加操作以自动化这些步骤(或者,如果我们能添加操作,能否创建一个操作来收集我们需要的帖子信息,并将其发送到 Zapier Webhook 操作端点)?
感谢您的所有帮助,非常感激!
只有工作人员可以看到帖子被标记为“其他内容”。
很遗憾,当帖子被标记为“其他内容”时添加的消息并未包含在网络钩子的有效载荷中。因此,我认为这并非对您而言的最佳方案。
需要工程师确认这一点,但我认为创建一个插件应该是相当直接的,该插件会在工作人员点击添加到帖子“管理操作”菜单的按钮时触发自定义网络钩子。
情况确实如此。
太棒了,感谢你们两人的帮助。
你们觉得 这个 是否是了解插件开发的最佳去处?
是的,如果您想自己开发插件,那是最佳的起点。