Skip to content

Help channel free/busy indicator #147

@pydis-bot

Description

@pydis-bot

Originally posted by ByteCommander:

Seems like many users are still not knowing that they should not interrupt ongoing help sessions with their new question, or not willing or thinking of checking the time stamps and content of the last few messages to determine that.

I have seen #37 and agree that simply determining how long ago the last message is sent is not sufficient, neither is requiring staff to manually mark channels all the time.

How about a combination of timestamps, basic recognition of common asking and concluding/thanking phrases, and letting the bot ask directly in the channel whether to mark it as free or busy if necessary, e.g. letting the respective users simply click a reaction button?

This sounds complicated, but I believe it's very well doable.


First about how to indicate the state of a channel: I suggest appending some Unicode emoji to the help channel name, like

  • ✅ for free
  • ⏳ for stale
  • ❓️ for unclear
  • ⛔ for busy

You see I don't think of a black and white system here, but there should be one or two extra states indicating that the channel was busy last, but has neither been indicated as free nor received any messages lately, so we can't know for sure if it's still busy or not.


About how to change the state of a channel:

  • Timestamps

    The most basic idea would be to simply set a channel to busy if it has received any messages in the last X minutes. Maybe 10 Minutes would be an acceptable value, though that has to be tested live.

    Such a timeout would switch busy or unclear channels to stale. Maybe another, longer timeout (e.g. 1h) would automatically switch stale to free as well.

  • Detecting common phrases

    A quite advanced way would be to automatically detect whether user messages are indicating that they just ask a new question ("I have a question", "How could I ...", → set to busy) or got a satisfying answer ("Thank you", "That works", "You're welcome"). This is the difficult part. Maybe some machine learning could be applied here, but I don't know much about that. The alternative would be observing the conversations and finding some regex patterns or matching common keywords with fuzzy search or whatever.

    However, the bot should not just silently switch the channel state immediately, I'd rather let it post a short message saying something like the drafts below and set the state to unclear in the meantime. This leads to the next point:

  • Let the bot directly ask the user

    As said above, if the bot detected message activity matching common session starting/ending phrases that should change the channel state, let it confirm the user that - maybe optionally, depending on the confidence in the intention detection:

    Hey, seems like you just asked a question. If that is right, I can mark this channel as busy so that other people will less likely interrupt you with their own questions. Please click the Y reaction below for that. If you did not want to start a new help session and want to keep the channel marked as free, click the N. Thank you.

    That sounded like you just got your problem solved. Is this true? If yes, I'll mark this help channel as free again, so that the next person can jump in and ask their own question. Please click the Y reaction below to confirm. If I got that wrong and you are not finished yet, please excuse my interruption and click the N, then I'll keep it set to busy.

    If the user clicks Y, the bot changes the channel to busy/free respectively, N resets it to the previous state. No action would leave it in the unclear state for a while, until the timeout would set it to stale and finally free.

    There should also be informational/interactive messages on those timeouts, telling the user what's going to happen and allowing them to accept or cancel that automatic action:

    Seems like this channel had no activity for the past 15 minutes, so I'm switching its status to stale now. If you know whether it is actually still busy or already free, please indicate that by clicking the respective icon below.

    Those bot messages should definitely have a cool-down per channel though, so that they don't clutter up chat that badly.


Additionally, there should be a bot command like !channel free and !channel busy to manually switch the states, not sure if the stale/unclear states should be allowed to set manually though.

Also, there should be a !channel get/!channel show/!channel info/plain !channel command to show an overview of all help channels with their states and last change reason and/or recommend a channel where to ask.

Thoughts about this approach?

Metadata

Metadata

Assignees

No one assigned

    Labels

    a: help channelsRelated to the help channel systemt: featureNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions