this post was submitted on 19 Feb 2025
0 points (NaN% liked)

ActivityPub

0 readers
1 users here now

Focused discussion related to ActivityPub integration in NodeBB


This is a forum category containing topical discussion. You can start new discussions by mentioning this category.

founded 2 months ago
 

The logs from this are already cleared on my server, but when I sent a private message (standard Create/Note with a single recipient who also has a Mention in the tag property) from my custom software to my account here, I received a 500 error saying something like "cc is not iterable" (though I don't know the exact phrasing). When I included cc as an empty array, it started working. Not sure whether it was missing on Create or Note, maybe it was both.

top 18 comments
sorted by: hot top controversial new old
[–] freamon@community.nodebb.org 1 points 4 weeks ago (2 children)

@rikudou As far as I understand things, a 'private message' in ActivityPub is Create / ChatMessage, not Create / Note. I think NodeBB wouldn't be the only software to complain if 'cc' is missing from either part of Create / Note (although it's not expected in either part of Create / ChatMessage).

[–] julian@community.nodebb.org 1 points 4 weeks ago (2 children)

@freamon Create(ChatMessage) is not part of ActivityPub. From my light research online it is something added by a Pleroma extension and possibly supported by Lemmy.

NodeBB will automatically slot received non-public notes as chat messages.

[–] nutomic@lemmy.ml 2 points 4 weeks ago (1 children)

FYI the next Lemmy version will use Create/Note for private messages. You can test it on voyager.lemmy.ml

https://github.com/LemmyNet/lemmy/pull/5221

[–] julian@community.nodebb.org 1 points 4 weeks ago (1 children)

@nutomic@lemmy.ml thanks for the update! That's awesome to hear

[–] freamon@community.nodebb.org 1 points 4 weeks ago (1 children)

@julian I've added support to PieFed to successfully receive Create / Note as a PM from NodeBB.

From Nutomic's PR, it looks like you'll continue you get Create / ChatMessage from them, as also you will from PieFed. This currently fails, as I guess that it converts them into a Create / Note, but then complains of there being no 'cc'.

It doesn't make sense for PMs to be 'carbon copied' to anyone, so I'll raise an Issue at your repo.

[–] julian@community.nodebb.org 1 points 4 weeks ago (1 children)

@freamon thanks! Happy to look into handling Create(ChatMessage)... I think the error aside, NodeBB would drop it anyway since ChatMessage isn't an expected post type.

[–] freamon@community.nodebb.org 1 points 4 weeks ago

@julian Oh, I've just realised I read Nutomic's PR the wrong way around. After 2.0, you'll start getting Notes from them. If 'ChatMessage' processing isn't worth handling by NodeBB, I can change PieFed to send you Notes instead.

[–] freamon@community.nodebb.org 1 points 4 weeks ago (1 children)

@julian Oh, right. Thanks. But yeah, it's what Lemmy (and PieFed) uses, so I just assumed it was part of AP, and never looked into it any further.

I was thinking while typing this "I bet that means that chat messages from NodeBB to PieFed will fail", which I just tested, and sure enough they do (I'll make an Issue for it on PieFed's repo).

[–] julian@community.nodebb.org 1 points 4 weeks ago (1 children)

Ah, that's unfortunate. When NodeBB sends a chat message out, it is just a regular Note with the recipients directly addressed, with no as:Public pseudo-user.

So as long as PieFed handles mentioned-only notes the activity should be processed...

[–] freamon@community.nodebb.org 1 points 4 weeks ago (1 children)

@julian It currently doesn't. If someone is Mentioned, the assumption is that it was part of post / comment in a community, and it fails because it can't find the community. I know that, for Lemmy, if you Mention someone in a comment, and they don't have a copy of the community (or they do and there's no local subscribers to it), then it will reject it. I don't know what it does if there's no community at all (I'll figure out a way to test it, on a server I can control).

[–] freamon@community.nodebb.org 1 points 4 weeks ago

@freamon Update: no, Lemmy doesn't understand them either. It rejects Create / Note without a community with the usual "did not match any variant of untagged enum AnnouncableActivities"

[–] rikudou@community.nodebb.org 1 points 3 weeks ago (1 children)

@freamon As others have said, ChatMessage is non-standard. The Create/Note is not particularly great for private messages, but whatever. Anyway, cc is not a required field of Note nor Create, so any software that would complain has a bug.

[–] freamon@community.nodebb.org 1 points 3 weeks ago (1 children)

@rikudou Yeah, sorry, I didn't mean to derail this thread. The GitHub issue was intended to only really be about the 'cc' problem, because it looks like PieFed will have to start sending Create/Note to non-Lemmy platforms anyway, but it'd easier if 'cc' doesn't have to be artificially included to keep NodeBB happy.

[–] julian@community.nodebb.org 1 points 3 weeks ago (1 children)
[–] julian@community.nodebb.org 1 points 3 weeks ago (1 children)

In a bit of code that is too clever for my own good, I collapse to and cc into a single deduplicated array with:

const recipients = new Set([...object.to, ...object.cc]);

Which of course assumes that both properties are iterable. That has now been changed to an even clever-er (and less readable):

const recipients = new Set([...(object.to || []), ...(object.cc || [])]);

:sunglasses:

[–] rikudou@community.nodebb.org 1 points 3 weeks ago (1 children)
[–] julian@community.nodebb.org 1 points 3 weeks ago

@rikudou maybe? Nullish coalescing sounds really cool, but I've avoided it for years because of browser compatibility.

Node has had support forever (since v14, I've discovered), but I just don't know how to use it is all :smile:

[–] julian@community.nodebb.org 1 points 1 month ago

@rikudou thanks, can you file an issue on the GitHub repo?

https://github.com/NodeBB/NodeBB/issues/new