使用 Zapier 的 Discourse Zap 模板

Zapier 提供多种官方的 Discourse 自动化模板。这些模板可让您以最小的配置将 Discourse 与外部应用程序连接起来。您可以在以下位置找到它们:

向下滚动该页面即可查看当前可用的集成列表。

这些模板分为两类。在第一类中,Discourse 是_触发应用_。这些模板允许您将 Discourse 帖子发布到 Slack、Mattermost、Discord、Facebook 群组、Facebook 页面、Google 表格以及其他服务。在第二类模板中,Discourse 是_操作应用_。使用这些模板,您可以将来自 WordPress 和 Ghost 的帖子发布到 Discourse。此外,还有一个模板可将 Twitch 直播流发布到 Discourse。

在 Zapier 上添加您的 Discourse 凭据

要使用任何 Zapier Discourse 集成,您需要在首次设置自动化(Zap)时添加论坛的基础 URL,以及您的 Discourse 用户名和 API 密钥。

在大多数情况下,自动化应由站点管理员使用其 Discourse 用户名和 API 密钥进行配置。API 密钥可在 Discourse 的“管理 / API / 密钥”页面创建。请注意,完整的 API 密钥值仅在首次创建密钥时显示一次,因此请务必在此时将其复制保存。

将 Discourse 凭据添加到 Zapier 后,点击“继续”按钮。您应该会在屏幕上看到“成功”消息。

配置自动化将检索哪些帖子

当 Discourse 作为触发应用时,默认情况下,您网站上的所有新帖子都会触发自动化。您可以在可选的“编辑选项”步骤中,将自动化限制为仅针对特定主题中创建的帖子触发,或仅针对特定用户创建的帖子触发。

使用该步骤的“主题”下拉菜单选择一个应触发自动化的特定主题。配置此项后,Zapier 将仅检索所选主题中创建的帖子。使用该步骤的“作者”下拉菜单选择自动化的用户名。配置此项后,Zapier 将仅检索该用户创建的帖子。

添加过滤步骤以实现对帖子的更精细控制

如果“编辑选项”步骤无法为您提供足够的控制来决定哪些帖子用于触发自动化,您可以向自动化添加一个可选的“过滤”步骤。过滤功能的一个示例是:您可以选择仅当帖子是特定类别中的第一个帖子时,才让自动化继续执行。要添加过滤,请点击触发器下方的 :heavy_plus_sign: 图标,然后从菜单中选择“过滤”。

过滤功能允许您设置自动化继续执行的条件。下面的示例将仅当帖子是 ID 为 2 的类别中的主题的第一个帖子时,才继续执行。

选择要发布的 Discourse 内容

当将 Discourse 帖子发布到其他应用程序时,Zapier 将允许您选择要发布的帖子部分。您选择发布的内容将取决于您要发布到的应用程序。以下将以将 Discourse 帖子发布到 Facebook 群组为例进行说明。

表单中的“消息”字段设置将发布的内容。若要发布完整的帖子内容,请从“消息”下拉菜单中选择“原始”字段。若仅发布主题标题,请从下拉菜单中选择“主题标题”。

构建帖子或主题的链接

当将 Discourse 帖子发布到外部应用程序时,您可能需要根据从 Discourse 返回的数据构建指向该帖子或其主题的链接。为此,请在您添加链接的字段中输入站点的基础 URL,后接 /t/。例如,如果您的站点 URL 是 https://discourse.example.com,请在表单中输入 https://discourse.example.com/t/

现在打开该字段的下拉菜单,并从菜单中选择“主题别名(Topic Slug)”。

Zapier 将在该字段中添加一个主题别名的占位符。

现在在主题别名占位符后输入斜杠(/),然后从下拉菜单中选择“主题 ID(Topic ID)”。

最终结果将类似于以下截图。

若要构建指向主题中特定帖子的链接,请在该字段中再添加一个斜杠(/),然后从菜单中选择“帖子编号(Post Number)”。

请注意,您在设置自动化时使用的任何占位符的值,都将在发布新帖子时被从 Discourse 传递的值替换。

无需模板即可创建集成

Zapier 在其集成页面上列出的模板旨在简化 Discourse 与外部应用程序的连接。如果您希望将 Discourse 连接到没有模板的应用程序,或者如果您希望创建一个监听 Discourse Webhook 或向 Discourse API 发出 POST 请求的自动化,您可以按照或修改此处列出的指南之一来实现:

17 个赞

在 Zapier 添加凭据的屏幕上出现以下提示:

添加新账户时出错

身份验证失败:错误代码 500:{“status”:500,“error”:“Internal Server Error”}

所有信息均正确。

Discourse 显示 API 密钥使用成功

以及 以下错误日志

Message

Draft::OutOfSequence (Draft::OutOfSequence)
/var/www/discourse/app/models/draft.rb:124:in `get'

Backtrace

/var/www/discourse/app/models/draft.rb:124:in `get'
/var/www/discourse/lib/topic_list_responder.rb:11:in `respond_with_list'
/var/www/discourse/app/controllers/list_controller.rb:152:in `block in generate_message_route'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/base.rb:195:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/callbacks.rb:135:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/rescue.rb:22:in `process_action'

Env

HTTP HOSTS: discuss.bevry.me

当前运行版本为 2.5.0.beta4 ( 811bc3544f )


不过,刷新弹出提示的 Zap 添加页面后,显示如下:

因此,尽管出现错误,账户似乎已成功添加。


然而,选择其中一个已添加的条目后,又会重新触发身份验证流程:

4 个赞

您使用的是 Discourse 的“所有用户”API 密钥以及您站点上的管理员用户名吗?我不确定这是否是必需条件,但我上周使用管理员 API 凭证设置了一个新的 Zapier Discourse 账户,当时对我有效。

1 个赞

我们也遇到了这个问题。

由于以下更改,之前(现在已修正)无法对负 ID 用户执行任何操作(或者说,很多操作):

@tgxworld 如果能禁用这一新行为,和/或将某些账户加入白名单,那就太好了。

3 个赞

这是一个错误,已在以下链接修复:

3 个赞

我们确实昨天就遇到了这个问题 :laughing:
谢谢!!(我应该在发帖前先检查一下)

3 个赞

非常感谢,效果完美!

1 个赞

你好,有没有办法在过滤 Discourse 帖子作为触发器时,仅保留新主题(即线程中的首条帖子),而丢弃线程中的回复?谢谢。

我终于找到了解决方法:

1 个赞

对我来说,这仍然会引发 403 错误,特别是在 Zap 的“设置触发器”部分,我应该在那里指定作者:

我尝试了“所有用户,全局”和“单个用户,全局”设置,以及“所有用户,只读”设置。它们都返回相同的错误(403)。

1 个赞