Private messaging to a group


(James Curran) #1

We’re developing a new learn to program site aimed at school students and teachers, and will be using Discourse as our forum – what you’re building is definitely the way of the future!

In a previous version of our site, we had both a public forum for students to ask questions, and private messaging so a student could ask for help without needing to be brave enough to post publicly. The private messages went to a group of tutors, any of whom could reply back to the student. We also used PMs, to encourage students (and whole classes of students) who looked like they were struggling (e.g. had submitted their code zillions of times to our auto marker).

I’ve marked this under feature, because I’m wondering if Discourse supports messaging a named group? I know it can support groups, as in multiple listed individuals. Under the bonnet, I assume group PMs work in some way, since moderators all receive moderation PMs as a group (which appear as #moderators in the list of participants in a PM). However, you can’t use #moderators as recipients in the initial message.

More broadly, I’m wondering whether this is the Discourse-esque approach to solving this problem? or if people have other ideas.

Thanks again for your amazing work on Discourse so far.


Private messages to a group, or other means to handle private support requests
(Sam Saffron) #2

Technically we support most of this, a PM can target a group or groups.

The biggest pain to getting this going is the UI and more fine grained control.

Even though, in your case, you may want to allow any user to PM the #tutors group, it is less likely you want them to be able to PM the #everyone group. We would need some extra permissions at the group level that allow a group to be a PM target and a UI paradigm for entering a group in the PM target box.


(James Curran) #3

thanks @sam! Yes, the permission model is a little bit complex – even more so when you’ve got kids first learning the boundaries of online social interaction. They’ll definitely spam each other if given a #everyone option. At a minimum, we’d want tutors to be able to message all groups, and everyone to message #tutors.

I assume the #moderators is just a visual reminder that moderators are included in the PM, and doesn’t actually cause the moderators to be included? i.e. the mechanism for including moderators is hidden from the front-end/API?

We’re (mostly) not Ruby/Rails developers (we’re a Python/Django shop really), but my team would interested in hacking in this feature. Is this a feature you’d like to see included?


(Sam Saffron) #4

I would be more than happy to see it included, but would much prefer if we can work through the mockups first and make sure we are happy with the front end.


(Sam Saffron) #5

The #moderators group in a PM already targets the group. It fully works, meaning every member of the group is notified and can participate. There is no UI to enter it, so the only place the function is exposed is in the “flag -> notify moderators”, it adds the moderators group to the PM targets behind the scenes:


(James Curran) #6

yep, that’s exactly what I meant.

Are you happy with the # as the representation of groups? i.e. if you enter # then the autocomplete will be over groups rather than users? It’s a pity groups don’t have avatars, since that will break the visual consistency, but perhaps that’s a good thing for making the individual/group distinction clear.

In terms of permissions to message a group, do you see that as being just a boolean property of the group or a list of groups that can message a group? The latter would be my preference, since it will allow more flexibility, but is substantially more complex. I’d like to find an intermediate solution if possible.

One option would be two booleans – the first one indicates a group can be messaged by anyone, and the second indicates members of a group can message any group. As I understand it, this would give groups more permission granting powers than they currently have (except for access control to particular topics).

Another alternative would be to make messaging any group a privilege of trust level 2+. We could easily add tutors to that level from the outset. This would be consistent with PMs only being accessible to trust level 1 users, and perhaps better matches the Discourse philosophy.


(James Curran) #7

In fact, I like this idea a lot more now I think about it. For our particular application, being able to separate the trust level for replying to a private message (TL 0 or 1 – students whether they’re active on the forum or not), creating a private message to a group with the can_receive_messages flag (TL 0 or 1), creating a private message to an arbitrary user (TL 2 – teachers + tutors), creating a private message to any group (TL 2 or 3 – tutors and mods, and maybe teachers).


(Sam Saffron) #8

I would stick with a simple implementation for now, cause security can very quickly become an unmanageable quagmire. If we start adding way too much fidelity too early we can get ourselves into a big mess.

I think “allow group to be a pm target” would solve the majority of this issue.

You can then use secure categories for “private” teacher + tutor conversations, they were designed for that.

I don’t think we need to involve trust levels here, keep in mind trust levels are basically a measure of participation not something conferred by the mods. Some of your students may get to TL 3.


(James Curran) #9

Ok, sounds good to me. That would cover the student PMing #tutors, which is my main concern.

We’re definitely intending to have private categories for teachers and tutors. I was very glad to see you add that feature recently :smiley:.

I would also like tutors and mods to be able to PM a group even if it doesn’t have the “allow group to be a pm target” flag set, so they can PM encouragement to a whole school in one go. But I’ve realised that the semantics of using a group for that won’t quite work as it did in our old system anyway. Even if you started a PM with a broadcast to all members of a school, you then had one on one conversations between a student and the tutors when the student replied. This seems a lot tougher to implement on top of the current Discourse model.


(Manoj Lamba) #10

Hey all - was the feature to Privately and easily Message an entire group built? Thanks!


(Matt McNeil) #11

@jrc Did you ever build this feature (or find a different workaround)? Our org would also love to be able to send PMs to groups.


(Justin Pierce) #12

Yeah this would be nice, even if it’s only available to admins/staff.


(Brentley Jones) #13

I’m assuming this isn’t something that made it in yet? I was thinking this would solve a need I expressed over a year and a half ago here:

https://meta.discourse.org/t/private-forums-or-discussion-threads/1764/16?u=ajarn&source_topic_id=8376

Basically, I have a need for a user to create a thread that only they and certain groups can read. They can all reply to it, but I can’t have it be a category because then people that have write access (the posters) could also read other people’s threads, which is undesirable. Another way to support what I need would be to have a write-only access to a category, which would mean you can see the category, your own threads, and maybe a banner, but not anyone else’s threads.


(Dave McClure) #14

This exists now.

Groups have a setting:

Who can use the group as an Alias?

  • Nobody
  • Moderators and Admins Only
  • Moderators, Admins and Group Members
  • Everyone

BUT, when you PM a group, the group name is replaced by the expanded user list it represents, which may work for many use cases, but is less than ideal, IMHO.


(Brentley Jones) #15

Yeah, less than ideal for me. I would like new members to a group to be able to see older posts, retroactively.


(Sam Saffron) #16

This is now complete per:


(Sam Saffron) #17