Babble - A Chat Plugin

Is there any plan to make Babble one of the officially supported plugins (Plugin directory | Discourse - Civilized Discussion)? If not, why not?

1 Like

There’s no plan to do this. We find that Discourse paired with a chat software is adequate when you treat chat like short term memory and Discourse like long term memory.

Also chat tends to have a low signal to noise ratio which directly contradicts our aims to increase conversation quality via emphasizing paragraphs over words.


Thanks Justin. Do you have any examples or guidance around best practices for combining discourse with chat? I get that chat has low signal to noise but for our startup it will be an important piece of the puzzle. Thanks in advance.

1 Like

Hi, great plugin! This will definitely see some use on my site.

Just a thought. This chat UI behaves a little strangely on mobile due to the fact that it doesn’t account for the height of the keyboard when a user is typing. Maybe have an option for the chat messages to default to the bottom of the chat window vs. the top (like most messaging apps)? This would make new responses still visible on mobile when a chat is just starting out.

Fantastic work on this though. Still digging in, but so far this is a great find.

1 Like

A lot of it is going to be setting a culture. Encouraging behaviors like posting transcripts or summaries from chat to Discourse, moving longer discussions to Discourse, keeping a knowledge base in topics and linking to them, etc. If you treat chat like information won’t exist after a day, that mindset ultimately helps.


Hey folks,

I’ve put in a few fixes here, including patching up the emoji and attachment features to work with the latest discourse, fixing the user card not appearing when clicking mentions / user avatars, preventing images from stretching horizontally on expanding the chat, and patching up some deprecations as well.



How can I replace the Message button while clicking on the user to open up the Babble PM instead of the default “Start a message” screen?

  1. My users have a feature request that would make usability easier.

We have 2 chat rooms and our users would love to have a quicker way to switch between the two.
How about to add fa-chevron arrows left and right from the chat room name so quickly switch to the next/previous chat room?

  1. Currently users without access to any chat room see babble settings in their user preferences. Might be better to remove it ff discourse offers such ability.

  2. Setting custom avatars for each individual chat room would be huge help

1 Like

Is there any update on this? Could someone help me?

Did you discover a way to resolve that final bug you mention? I’m also seeing the DMs show up in search when I’m in incognito mode. I’m assuming only the two people that actually had the conversation would actually be able to read the messages (I hope!!) but it definitely adds a lot of noise for a new lurker to the community who might be wondering what all the random “number” threads are.

Would love to hear if you figured out how to get around it or if you’re just not using the DM feature?

I stopped using babble after writing that post. Not sure of the current status…

Got it. cc: @gdpelican if you have time to take a look!

Missing poster avatar, i think that is for the recent update in discourse …

1 Like

On my phone the Babble button appears in the header perfectly:

But on my desktop, it appears somewhere in the middle of the page and looks like this:

I would like the button to appear as header icon on my desktop as well.
How can I achieve that?

1 Like

I believe this might be a new feature. If I remember correctly at the same time when your own avatar became hidden another change also happened: your posts are now right aligned
(And maybe the post backgrounds weren’t blue, but I can’t remember if that was the case.)

So hiding your own avatar might be a feature to make it more clear which are your own posts

I don’t know if anything changed recently, but after rebuilding Discourse the search function didn’t work anymore. It caused an internal server error on everything you enter in the search box.
I checked the logs and this is what I found:

Clicked on it:

plugins/babble/app/models/search.rb:3:in `execute'

app/controllers/search_controller.rb:132:in `query'

actionpack ( lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack ( lib/abstract_controller/base.rb:195:in `process_action'

actionpack ( lib/action_controller/metal/rendering.rb:30:in `process_action'

actionpack ( lib/abstract_controller/callbacks.rb:42:in `block in process_action'

activesupport ( lib/active_support/callbacks.rb:112:in `block in run_callbacks'

app/controllers/application_controller.rb:340:in `block in with_resolved_locale'

i18n (1.8.5) lib/i18n.rb:313:in `with_locale'

app/controllers/application_controller.rb:340:in `with_resolved_locale'

activesupport ( lib/active_support/callbacks.rb:121:in `block in run_callbacks'

activesupport ( lib/active_support/callbacks.rb:139:in `run_callbacks'

actionpack ( lib/abstract_controller/callbacks.rb:41:in `process_action'

actionpack ( lib/action_controller/metal/rescue.rb:22:in `process_action'

actionpack ( lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'

activesupport ( lib/active_support/notifications.rb:180:in `block in instrument'

activesupport ( lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activesupport ( lib/active_support/notifications.rb:180:in `instrument'

actionpack ( lib/action_controller/metal/instrumentation.rb:32:in `process_action'

actionpack ( lib/action_controller/metal/params_wrapper.rb:245:in `process_action'

activerecord ( lib/active_record/railties/controller_runtime.rb:27:in `process_action'

actionpack ( lib/abstract_controller/base.rb:136:in `process'

actionview ( lib/action_view/rendering.rb:39:in `process'

rack-mini-profiler (2.0.4) lib/mini_profiler/profiling_methods.rb:104:in `block in profile_method'

actionpack ( lib/action_controller/metal.rb:190:in `dispatch'

actionpack ( lib/action_controller/metal.rb:254:in `dispatch'

actionpack ( lib/action_dispatch/routing/route_set.rb:50:in `dispatch'

actionpack ( lib/action_dispatch/routing/route_set.rb:33:in `serve'

actionpack ( lib/action_dispatch/journey/router.rb:49:in `block in serve'

actionpack ( lib/action_dispatch/journey/router.rb:32:in `each'

actionpack ( lib/action_dispatch/journey/router.rb:32:in `serve'

actionpack ( lib/action_dispatch/routing/route_set.rb:834:in `call'

lib/middleware/omniauth_bypass_middleware.rb:68:in `call'

rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'

rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'

rack (2.2.3) lib/rack/head.rb:12:in `call'

lib/content_security_policy/middleware.rb:12:in `call'

lib/middleware/anonymous_cache.rb:336:in `call'

rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'

rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'

actionpack ( lib/action_dispatch/middleware/cookies.rb:648:in `call'

actionpack ( lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'

activesupport ( lib/active_support/callbacks.rb:101:in `run_callbacks'

actionpack ( lib/action_dispatch/middleware/callbacks.rb:26:in `call'

actionpack ( lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'

actionpack ( lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'

actionpack ( lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'

logster (2.9.1) lib/logster/middleware/reporter.rb:43:in `call'

railties ( lib/rails/rack/logger.rb:37:in `call_app'

railties ( lib/rails/rack/logger.rb:28:in `call'

config/initializers/100-quiet_logger.rb:19:in `call'

config/initializers/100-silence_logger.rb:31:in `call'

actionpack ( lib/action_dispatch/middleware/remote_ip.rb:81:in `call'

actionpack ( lib/action_dispatch/middleware/request_id.rb:27:in `call'

lib/middleware/enforce_hostname.rb:22:in `call'

rack (2.2.3) lib/rack/method_override.rb:24:in `call'

actionpack ( lib/action_dispatch/middleware/executor.rb:14:in `call'

rack (2.2.3) lib/rack/sendfile.rb:110:in `call'

actionpack ( lib/action_dispatch/middleware/host_authorization.rb:76:in `call'

rack-mini-profiler (2.0.4) lib/mini_profiler/profiler.rb:321:in `call'

message_bus (3.3.1) lib/message_bus/rack/middleware.rb:61:in `call'

lib/middleware/request_tracker.rb:176:in `call'

railties ( lib/rails/engine.rb:527:in `call'

railties ( lib/rails/railtie.rb:190:in `public_send'

railties ( lib/rails/railtie.rb:190:in `method_missing'

rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'

rack (2.2.3) lib/rack/urlmap.rb:58:in `each'

rack (2.2.3) lib/rack/urlmap.rb:58:in `call'

unicorn (5.6.0) lib/unicorn/http_server.rb:632:in `process_client'

unicorn (5.6.0) lib/unicorn/http_server.rb:728:in `worker_loop'

unicorn (5.6.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'

unicorn (5.6.0) lib/unicorn/http_server.rb:144:in `start'

unicorn (5.6.0) bin/unicorn:128:in `<top (required)>'

vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'

vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

I removed Babble, rebuild and the search function works perfectly again.

Please fix this error.


Curious about the experiences of those running Babble plugin alongside Matterbridge + Matterbabble to 3rd party chat services.

Are you able to successfully sync your Babble chats with other chat services such as Slack, Discord, Matrix, etc?

Just ran into this myself, rebuild after removing babble fixed search on my site as well.

1 Like

@gdpelican we’re also experiencing the same issue (search returns Internal server error) could you have a look at it whenever you get time? Our community has some hard core chat users so they’re currently sad because of us disabling babble until fixed.

1 Like

Same here - and we use Babble quite intensively