Sending a private message without cc causes a 500 error
-
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...
-
@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 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"
-
FYI the next Lemmy version will use
Create/Note
for private messages. You can test it on voyager.lemmy.mlAdd note wrapper (fixes #2657) by Nutomic · Pull Request #5221 · LemmyNet/lemmy
Private messages and public comments are quite awkward in Activitypub, because the json format looks identical. They only way to differentiate them is to check for the presence or absence of https:...
GitHub (github.com)
-
FYI the next Lemmy version will use
Create/Note
for private messages. You can test it on voyager.lemmy.mlAdd note wrapper (fixes #2657) by Nutomic · Pull Request #5221 · LemmyNet/lemmy
Private messages and public comments are quite awkward in Activitypub, because the json format looks identical. They only way to differentiate them is to check for the presence or absence of https:...
GitHub (github.com)
@nutomic@lemmy.ml thanks for the update! That's awesome to hear
-
@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.
-
@freamon thanks! Happy to look into handling
Create(ChatMessage)
... I think the error aside, NodeBB would drop it anyway sinceChatMessage
isn't an expected post type. -
@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 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.
-
@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.
-
Missing cc on incoming non-public payload causes note assertion failure · Issue #13202 · NodeBB/NodeBB
https://community.nodebb.org/topic/18642/sending-a-private-message-without-cc-causes-a-500-error/14
GitHub (github.com)
-
In a bit of code that is too clever for my own good, I collapse
to
andcc
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 || [])]);
-
@julian Wouldn't
??
be better? -
@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