Bridging Slack's #Helpdesk and Discourse (Proposal, feedback welcome!)

Hey all, following up on this proposal: #Helpdesk channel on Slack (proposal to close the channel) and a thread here: I’ve heard a number of people say Julia is not mainstream because it doesn’t have many stackoverflow questions answered but they don’t know about discourse, I decided to work actively on these ideas to look into bridging Slack and Discourse.

It turns out that it is indeed possible and pretty straightforward. I setup some integrations with Zapier (and previously made a version with Slack.jl) and have the basic functionality working:

This integration, when turned on, will post each new message from the #helpdesk channel into a dedicated section on Discourse for bridged questions. There are a number of obvious issues with this including but not limited to people posting messages which aren’t questions outside of a thread and then those accidentally being cross posted. (We can actively work on this by giving gentle reminders to folks to use threads as well as impose some basic rules potentially, like only cross post a message with a “?”)

When a message is posted to this dedicated Discourse section, it will automatically show as a “wiki” entry rather than a normal post so it is editable by all of those with the correct permission levels (this will help distribute the workload more evenly in case there’s cleanup needed for these questions). Here is how things may look on the Discourse side (note that in production, the posts will come from a bot user):

The only other potential issue is privacy. In my opinion, folks are free to use whichever name and profile image (within reason) they want on Slack. Thus, if someone is concerned with asking a question that will be traced back to them, they are welcome to ask pseudo-anonymously. We can also highlight in #helpdesk that all questions are posted publicly and visible to the world.

On the topic of Slack Questions not being on par with other Discourse or Stack Overflow questions, in my opinion, it’s a non-issue. I don’t see an issue with having potentially (but not limited to) simpler and shorter questions crossposted from Slack to Discourse. This will only improve the richness and accessibility of questions on Discourse.

TLDR; this is ready to go and pilot. I would love to hear feedback or suggestions on how to make this idea/system better. I already played around with auto-tagging answers but have not been able to get that working yet (hopefully sometime in the future after the question bridging is done I’ll figure it out).


Can you clarify how the answering of these questions should work?

1 Like

@tbeason A few different options:

  • the person who asked the question would port over an answer to Discourse
  • someone from Helpdesk would answer the question on discourse rather than Slack (perhaps the best option?)
  • Someone on Discourse would see the ported question after the fact, click the Slack link, and then find the answer (then ideally port the answer over if it wasn’t already).
1 Like

I think rather than doing this automatically, it would be nice to have some intervention. Something like a response from a slack bot saying - “I’d like to cross-post this to discourse, is that OK?” A more sophisticated thing might return some search results on discourse, and then say “Do any of these posts answer your question? If not, let’s cross-post so that more people can benefit!”

I have no idea how complicated this would be though :laughing:


@kevbonham Totally agree this would be ideal, would love to build on this iteratively and have something like this in v2.0. (Discord actually has really great tools for this sort of thing, we can definitely get close with Slack).

That makes sense. I think the biggest things are 1. Being friendly about it; don’t want to shame people if they didn’t search discourse first, but reminding people that their answer might be on discourse might be a good nudge, 2. As you said on slack, don’t make it onerous enough or worded in a way that people might be shy to do the cross-post. It should seem like the default is to cross post, but if anything is sensitive, they have the option not to


I think that the lack of a topic system in Slack makes me skeptical that this can be done in a way that’s useful. You can try to force people to use threads, and then treat threads like topics, but then you make the helpdesk channel less useful because threads get buried fast.

I worry that there’s no simple set of rules one can program into a bot that would make such a cross posting system work without a lot of cacophony.


@Mason Gentle reminders :slight_smile: not force.

Hm, interesting, can you elaborate on this? I don’t follow. Wouldn’t a thread have a longer visible half-life if there were only questions with threads in Helpdesk?

Yeah, who knows, maybe it will fail spectacularly, but seems worth a shot to preserve thousands of useful questions and answers.

1 Like

Yes, if all conversations happen in threads, the visible half-life of all threads will get longer. However, that half-life is then unrelated to how active or interesting the thread is.

Someone could ask a very compelling and interesting question that drags in dozens of people and has them discussing the question for many days, but if it’s in a thread, that conversation will stay visible just as long as if nobody ever replied. This is the problem that Zulip’s topics solve.

Imagine if Discourse only displayed posts in the order they were originally posted and didn’t bump them when they get new replies.

Yeah, it’s definitely worth trying something. I’m just pessimistic that the actual solution to this problem involves keeping Slack as a core part of our community.


This is a stop gap until we leave Slack IMO. It’s inevitable that it will happen, just a matter of when.

Edit: but we can save that conversation for another thread :slight_smile:


I’m actually also skeptical of the idea that we’ll ever have a Slack community that’s much smaller than the current one. But I’m hopeful that we can grow out other sectors of the community such that the relative weight of Slack is much less than it is now.

Edit: Oops, sorry for continuing the digression

1 Like

If it’s still relevant (I mentioned this in Slack previously):

A bot that listens to a specific instruction, possibly even with tags, might be a good middle ground.
That way, people could clarify whether they mind being mentioned in a crosspost. Simultaneously, it’s still fairly trivial and low-effort to mark something as “worth keeping”, if people remember to.

A more (probably overly so) elaborate setup to automate this further (would require a database though):
We could set up an opt-in system where it is tracked whether a user has already decided to agree to crossposting in general. If every participant of a thread opted in, there’s no need for further questions, otherwise the bot could wait some time for people to opt in or something.

1 Like

@logankilpatrick - I think this is a wonderful idea! If you are ready to pilot, one idea that I can think of before we do a jump from integrating it directly into helpdesk is to have a helpdesk-bridged sort of channel to debug things. That way, we can start getting Discourse posts made and figure out how to handle the problem of Slack threads.

I think going ahead and starting a small pilot in the Julia community is a great idea. If things go well, perhaps we can even make some sort of bot based off of Discourse that could answer questions on StackOverflow with links to relevant questions on Discourse to increase visibility. Going even further would be perhaps some level of Natural Language Understanding to link new questions asked in helpdesk with questions that were already answered in Discourse as @kevbonham suggested.


How about simply a bot that just archives a thread on discourse when asked by somebody? Manual is better than automatic here IMO


I really like this idea. The helpdesk channels on Slack and Zulip are filled with lots of good information that should be captured on Discourse.

Is this kind of bot possible on Zulip as well? @Mason?

1 Like

It would be possible to bridge it to Discourse, probably even easier than bridging Slack due to the topics. There are a few topics discussing if and how Zulip’s #helpdesk should be archived (e.g. 1, 2).

The Zulip team is working on a feature that would allow making streams publicly searchable, which would be easier than setting up our own thing with either zulip-archive or a Discourse bridge.


Thanks to @SaschaMann, we now have an archive running: Zulip Chat Archive

Due to privacy concerns where people in Zulip expected that only people who agreed to the community standards can view our messages, we created a new channel for this rather than archiving the old one. Hence, there’s currently not a lot there, but hopefully we can get people to prefer this channel in the future going forward.


Hey all, so in order to avoid re-posting unwanted questions or the like, I will add a “No Repost” check on the backed. So if your question contains “No Repost” or “Do not Repost”, then it will not be bridged to Discourse. This should help solve the privacy concerns.

1 Like

I think that sounds reasonable. Could you maybe program Slackbot to notify users that when they join helpdesk, they are warned about the bridging functionality?

1 Like

Yes, I will add at least 3 notices of bridging through slack via the initial note when someone joins, greet bot, direct message, and a note in the helpdesk channel description.