使用 Discourse API 与 Front App

大家好!我目前正在尝试将 Front App 与 Discourse 进行集成。目前,我使用 Pipedream 将两者连接起来。

我已经成功设置了两个工作流:

  1. Discourse → Front App。当 Discourse 收到新消息时,会将该消息发布到 Front。
  2. Front → Discourse。当我在 Front 上回复那条从 Discourse 导入的消息时,Pipedream 的一个 Webhook 会监听 Front 上的新回复,然后调用 Discourse API 将回复发布到 Discourse。这运行得很好,但是当我在 Front 上查看时,它会显示我的回复(因为它触发了工作流 1,即当 Discourse 收到新消息时),导致收件箱线程中出现两条消息:一条是我通过 Front 发送的,另一条是工作流 1 导入的相同消息。

有人知道如何“排除”那些从 Front 发出并通过第一个工作流拉取的消息吗?Discourse API 支持这种操作吗?

提前感谢!

你好 :wave:,听起来你们有一个很棒的集成方案。

为了更好地提供帮助,我有几个问题想确认一下:

  1. 你们是根据 Discourse 私信(Personal Messages)的创建来路由,还是根据新主题或主题回复来路由?

如果是基于新主题或主题回复进行路由……

  1. 在你们的 Discourse 实例中,是否将任何主题或主题回复都作为新消息路由到 Front?

  2. 当你们通过 Front 回复消息时,是否使用 API 将回复发送到原始主题?

嘿,Jordan!

谢谢你回复我。:blush:

回答你的问题:

  1. 是的,任何主题或对主题的回复都会同步到 Front。
  2. 一旦我从 Front 回复,它会通过一个由 Pipedream 生成的 URL 触发 Discourse 的 POST API,将内容发布到原始主题下(通过主题 ID 进行匹配)。

简单来说,流程是这样的:
我在 Front 中给某人发送回复消息。
然后,Discourse API(来自工作流 1)检测到论坛中出现了新消息,便将其作为新消息同步回 Front。

我不希望出现内容重复的情况。

我知道这可能会让人有些困惑,如果我没解释清楚,请随时告诉我。:sweat_smile: 任何建议都会非常有帮助!

那么,是否可以安全地认为:您只希望在 Discourse 话题初次创建时将其作为消息推送到 Front,而之后不再推送?

我的理解正确吗?

  1. 在 Discourse 上创建话题
    1a) 将该话题转换为 Front 中的一条消息
  2. 用户在 Front 消息中回复
    2a) 将 Front 消息作为回复推送到 Discourse,关联到已创建的话题。

此时,Discourse 用户会对 2a 进行回复吗?还是说对话到此为止?

我之所以这样问,是因为您可能会在来自 Front 的创建请求中检查帖子 ID。如果 Front 触发了 post id#345 在 Discourse 上创建:

……那么,在您用于监听并将 Discourse 帖子转换为 Front 帖子的 Pipedream 代码中,可以确保 Post Id 不等于您刚刚创建的那个 ID。如果是,则不要将其转换为 Front 消息。

这在 Pipedream 中可行吗?我对该产品不太熟悉。

是的,Discourse 用户仍然可以回复 2a。我们已实现该功能!因此,当社区成员从 Discourse 发送新消息时,它会自动添加到 Front 的线程中。

以下截图可能有助于更清晰地说明:

如您所见,我通过 Front 回复了“这是来自 Front 的测试消息”,由于该消息发布到了 Discourse,Discourse API 检测到这是一条新消息,因此会将一条新消息发送到该线程中。

您的回复让我有所启发 :thinking: 或许可以创建一个函数,查找来自 Front 的 ID,然后在 Discourse 的“发送消息”API 中将其排除……我会尝试一下。感谢您的帮助!谢谢 :blush:

@jordan.vidrine,我想说声谢谢你的帮助!通过这条线程与你交流让我有了灵感,现在问题解决了。:sparkles: 特别是这部分:

我之所以这样问,是因为如果是从 Front 端触发创建帖子,你可能需要在创建时检查帖子 ID。如果 Front 触发了在 Discourse 上创建帖子 ID #345

祝好!

太棒了!很高兴听到它对你来说很顺利:+1: