ActivityPub 插件

在文章模式下,非拉丁字母用户名似乎会出现问题。用户名似乎需要编码?

2 个赞

在不稳定的网络环境中,帖子可能会被收到多次。

3 个赞

@angus @infodesk@oxygen.offdem.net 应该在初始帖子之后发布了一些内容,但它们似乎根本没有出现在我的时间线上,而且 Discourse 上也没有任何错误。

几天前,我使用了共享草稿,但在发布后,消息没有出现在 Mastodon 上。因此,我认为这与共享草稿的错误有关,今天我直接发布了一个新主题,但尽管帖子应该在欧洲中部时间 13:18 发送到 Fediverse,但什么都没有出现——所以不可转发。:thinking:

插件版本

eee34494

错误日志

终于出现了:https://oxygen.offdem.net/logs/show/c6449d732e8e9b866bf07935e8132744

(请注意,一个能重新发送最新帖子的修复程序将非常棒)

最新公告

分类设置

ActivityPub 插件有一个强大的日志记录系统,可以捕获大多数问题。首先,请确保已为该插件开启详细日志记录。

此帖子的发布状态是什么?(即,分享一张您点击帖子上的 AP 图标时出现的模态框的截图)

我假设发布状态是“已发布”(即图标是绿色的)?如果您开启了详细日志记录,能否分享一下发布时记录了什么?(应该会有记录的)。

1 个赞

谢谢 @angus,错误日志在我之前的帖子中:

这是帖子的状态:

您可以在这里看到该主题:O₄FFDEM programme is out! - Announcements - OFFDEM

1 个赞

感谢您提供更多详细信息。

只有管理员才能在实例上查看日志 :slight_smile:

您能将相关日志复制到私信中发给我吗?谢谢。

3 个赞

各位朋友,非常感谢你们为将这个概念推进到这一步所付出的辛勤工作!!我多年前就开始关注 Discourse 中实现联合的讨论,很高兴看到它取得了如此大的进展。

我已成功地通过我的 Mastodon 账户关注了我的 Discourse 分类,实现了联合。我的分类中的新主题可以通过我的 Mastodon 账户查看。

但我似乎没有在 Discourse 中收到来自我的联合 Discourse 主题的 Mastodon 回复,不过来自我关注的 Mastodon 账户的顶级 Toot 似乎可以正常显示为新主题。这是目前预期的行为吗?

我通读了此帖,但我认为我没有明确看到任何关于联合主题回复的内容。

这是我的分类 ActivityPub 设置的截图。

这与分类的安全设置有关吗?目前我将其设置为所有人都可以查看主题,但只有管理员可以创建和回复。

谢谢!

2 个赞

@rsmithlal,感谢您试用该插件,并提供详细反馈!

是的,这就是回复的 toots 未被导入的原因。只是为了确认我的理解,您期望:

  1. 用户不能在 Discourse 中回复 Discourse 帖子。
  2. 用户可以在 Mastodon 中回复 Discourse 帖子。

是这样吗?如果是这样,目前还不支持。但我明白,关于类别安全设置应如何与 ActivityPub 交互这一点,目前还没有完全说清楚。我们希望在下一阶段的工作中更明确地解决这个问题。

2 个赞

您好 @angus,这是否意味着,在正确配置的情况下,Discourse 主题的回复应该作为 Discourse 回复出现在联合主题中,而这些 Discourse 主题已与联合的 toots 进行了联合?

例如:

  1. 假设我在我的 Discourse 实例 Discourse1.server 的联合类别 “我的联合类别” 中创建了一个新主题 “我的第一个联合主题”
  2. 这个新主题被联合,并作为来自 fed-cat@discourse1.server 的一个 toot 出现在我的 Mastodon 账户 rob@mastodon1.server 的信息流中,该账户关注 “我的联合类别, fed-cat@discourse1.server”
  3. 我在 Mastodon1.server 上创建了一个 回复 toot,回复了由 Discourse1.server 最初联合的包含 “我的第一个联合主题” 内容的联合笔记。

在这种情况下,我期望我的 Mastodon toot 回复 应该 作为回复 出现在 Discourse1.server 的原始 “我的第一个联合主题” 主题中。

这对我来说是理想情况,但我尚未实现。它目前是否可行?

如果可行,哪些配置设置可以使其按预期运行?

非常感谢。希望我的解释很清楚!

1 个赞

主类别已启用 ActivePub,我也创建了一个启用了 ActivePub 的子类别。但是,当我尝试通过子类别点击“关注”按钮关注某人时,我会得到一个无聊的未找到/不允许的错误页面。主类别工作正常。

设置中没有进行任何花哨或奇怪的操作。

期待的行为还是 bug?

@rsmithlal 是的,您所描述的正是“完整主题”发布类型的预期工作方式。您唯一需要做的更改是允许普通用户在类别中回复(在类别访问设置中)。它之所以对您不起作用,是因为您将回复限制为管理员。ActivityPub 导入的回复无法覆盖该限制。

总的来说,子类别不会继承父类别的配置,ActivityPub 在这方面也没有区别。ActivityPub 设置是特定于类别的,并且(目前)没有继承。话虽如此,您所描述的是一个用户体验问题,我将很快解决,即当您专门查看子类别时,ActivityPub 控件不应出现。

3 个赞

谢谢您,@angus,我会试试的。非常令人兴奋!!

我之前大部分都限制了回复,因为它只是一个测试类别和主题。我最初将其设为仅管理员可见,但一直无法激活 ActivityPub,直到我将其开放给所有人可见。这是一次非常有启发性的交流。

2 个赞

@Jagster 您描述的问题将在合并此内容后得到修复。感谢您的报告。

5 个赞

问题

您好,我们正在 agora.eXO.cat 上测试此插件,但无法使其正常工作(Discourse 网页上的状态显示“Note was not published via ActivityPub”,其他 Fediverse 应用找不到该 actor)。

有什么特别需要注意的吗?查看文档并没有指出任何特别的故障排除方法,而且日志(见下文)也无法提供进一步的帮助 :-(。

设置

插件版本:79da1c2

我们正在使用一个公开子分类,我们希望将其发布到 Fediverse。

设置很简单,除了以下几点外,没有进行任何更改:

  • 为测试将计划时间缩短到 1 分钟
  • 为分类选择 actor 名称和显示名称

我们尝试过的一些方法:

  • 启用“activity pub object logging”并检查日志
  • 删除了产生错误的行,因为它给了我们“鸡生蛋还是蛋生鸡”的感觉(“也许无法安排帖子,因为没有收件人,在创建帖子之前不会创建 actor”)
> ./launcher enter app
> sed -i.orig -E 's!^(.*no recip.*)$!#\\1!' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb
> ./launcher restart app
  • 当该补丁不起作用时,我们将其移除
  • 删除并重新创建分类,这样就不会有任何“特殊”字符(该词实际上是 exofàsia,我们想拼写为:eXOfàsia)
  • 重新创建分类时,使用 Note(默认)而不是 Article(我们想要的)

日志

消息

[Discourse Activity Pub] eXOfàsia - Àgora de l'eXO 无法安排 https://agora.exo.cat/ap/activity/803be329c95f67b5ab62d43c7c61f6f3 进行投递:没有收件人

回溯

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:93:in log_failure' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:35:in can_deliver?’
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:13:in perform' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:27:in perform’
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:140:in activity_pub_deliver_activity' /var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:38:in perform_activity_pub_activity’
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:473:in block (2 levels) in activate!' /var/www/discourse/lib/plugin/instance.rb:341:in public_send’
/var/www/discourse/lib/plugin/instance.rb:341:in block (2 levels) in add_to_class' /var/www/discourse/plugins/discourse-activity-pub/plugin.rb:654:in block (2 levels) in activate!’

环境

HTTP HOSTS: agora.exo.cat

消息

[Discourse Activity Pub] eXOfàsia - Àgora de l'eXO 无法安排 https://agora.exo.cat/ap/activity/30d34f8b38be0d2d5bc997fd4147c5b2 进行投递:没有收件人

回溯

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:93:in log_failure' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:35:in can_deliver?’
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:13:in perform' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:27:in perform’
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:140:in activity_pub_deliver_activity' /var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:38:in perform_activity_pub_activity’
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:473:in block (2 levels) in activate!' /var/www/discourse/lib/plugin/instance.rb:341:in public_send’
/var/www/discourse/lib/plugin/instance.rb:341:in block (2 levels) in add_to_class' /var/www/discourse/plugins/discourse-activity-pub/plugin.rb:481:in block (2 levels) in activate!’

环境

HTTP HOSTS: agora.exo.cat

Webfinger

还有 Webfinger 返回的内容:

> curl -L 'https://agora.eXO.cat/.well-known/webfinger?resource=acct:exofasia@agora.exo.cat'
{"subject":"acct:exofasia@agora.exo.cat","aliases":["https://agora.exo.cat/c/exo/exofasia/33"],"links":[{"rel":"self","type":"application/activity+json","href":"https://agora.exo.cat/ap/actor/31cb67a1093eca932caaf1e764814bde"}]}
2 个赞

@evilham,您看到的这条消息是在 Actor 没有关注者(不会发布任何活动)时记录的。有谁在关注这个 Actor 吗?

请注意,目前唯一可以关注的 Actor 是 Category Actor(即 Group Actor)。只要您在某个类别中启用了 ActivityPub,该 Actor 就会被创建(因此不会引起鸡生蛋的问题)。您目前无法关注 User Actor(即 Person)。

1 个赞

嘿,问题恰恰在于找不到该 actor(请自行尝试:exofasia@agora.exo.cat):

通过昨晚在此处更详细地检查,我看到我们不是第一个遇到这种情况的 实例

所以,也许日志条目完全不相关,但它 我们拥有的唯一条目 ><,因此是我们唯一可以遵循的线索。

帖子本身仍然显示一个与 fediverse 断开连接的图标和以下文本:

任何尝试安排发布帖子的操作都会导致我们提到的日志,除此之外别无他物。

该类别声称已正确配置(如前所述,没有任何更改):

并且该类别是完全公开的。

我刚刚成功地从我的本地实例关注了该用户。

我已成功找到它。

然后成功发送了关注请求并收到了接受。

如果您刷新您实例上的“关注者”列表,您现在会看到来自 general@angus.ngrok.io 的关注。

我怀疑您遇到的问题是您将 HTTP 签名设置为必需。

并且您用来关注的客户端不支持和/或未发送适当的 HTTP 签名。这也许是 @Lhc_fl 遇到的问题。

2 个赞

哦,这很有趣,可以确认如下!

确实,因为这是默认设置,我们只做了最少的更改。

我们尝试了几种客户端,主要是 Mastodon 和 Pleroma。

遵循 HTTP 签名必需的提示,我们禁用了它(即更改了默认设置),然后尝试重新安排帖子,这次取得了积极的结果(可能是因为只有 1 个关注者,所以有所不同?):

另一方面,至少 Mastodon 在搜索个人资料时仍然显示 404,因此主要目标(从其他 fediverse 应用程序关注类别)仍未实现。

我们还能研究些什么?来促进这一点?

我刚刚也成功关注了 Mastodon 上的那个类别。

1 个赞

哦,天哪,我不明白,在上一篇文章之前,我尝试了两个不同的 Mastodon 服务器,其中一个我以前从未用过,结果在这两个服务器上个人资料都显示 404。\n\n下午会再检查一下,但如果有什么关于为什么视图可能不一致或者我们可以尝试什么的方法,那就太好了。

1 个赞