Many of our Desk.com customers use Slack to help with internal communications. One of the advantages of Slack is that it lets you use (and even build your own) bots, or automated programs that run and perform a variety of automated tasks to enable and empower your team.
One of our biggest needs is for our entire support team to know when one of us is in a meeting, logged out of our phone system to handle something other than phone calls, or unavailable for any other reason. Due to some limitations of our phone system, it's not possible for everyone to just *see* that, so we created a bot to let the team know.
Once invited to a channel, anyone can tell the bot they're going unavailable with a simple "@teambot brb" or "@teambot meeting.” That kicks off a set of processes, including pushing a message to our support channel to the effect of "Mike has gone unavailable, do not go away until Mike is back.” The message repeats every 5 minutes until Mike is back. When Mike returns, he simply types "@teambot back" to turn off the push message.
In the code, we do some more complex things as well, such as:
We don’t allow anyone else to try "@teambot brb.” This way only one person can be gone at a time.
We don’t allow anyone to try "@teambot back" if they're not the person who's away, so people don't set someone else as back so they can leave.
We log the timestamps when people go away and come back, so we can report on it and make sure nobody is unavailable for too long.
A built-in override for management and senior members of our team lets them "@teambot back" for anyone, or "@teambot Set Tom away" if Tom forgets to set himself as unavailable.
This bot helps us keep track of our team at all times across all locations, and ensures we've got the resources available for our customers at all appropriate times.
System Status Bot
When there's any sort of problem with the Desk.com service, we run System Status Bot to remind us, at set intervals, to provide updates to our customers across all of our channels; our System Statussite, our phone system messaging, the message at the top of the Desk websites, etc.
It posts to our support channel and reminds us when it's time to update that messaging and has proven incredibly beneficial to our customers in getting them the most up to date information when there's any sort of issue with the service.
When we get a positive or negative CSAT rating, it gets posted to a number of our channels. This way we can recognize people’s great work or review the case and look for ways to improve and reach back out to the customer to try and turn their experience around. We also post our current overall CSAT score on a daily basis to track how we are doing.
We’ve found it's equally important to share the _good_ experiences, too. This helps our team stay motivated to keep doing great work. At the same time, the bot gives us better visibility and insight into how we can improve and work on making every experience great. Both approaches have really helped us drive our goal of consistently increasing our customers’ satisfaction.
After we complete an internal training of any part of our service, the trainer builds a quiz around it to ensure team members retain knowledge from the training.
The quiz runs in a generalize channel and makes a game (complete with a score and trophy for the winner) out of it. First person to get the answer right wins the point(s).
Make your own
Here are some resources to help you get started building your own bots:
Botkit: a framework to help you quickly get up and running with a basic bot: https://github.com/howdyai/botkit
How to deploy a Slack bot to Heroku: https://blog.heroku.com/how-to-deploy-your-slack-bots-to-heroku
Slack's RTM (Real time messaging) API documentation: https://api.slack.com/rtm
Slack's Bot users overview: https://api.slack.com/bot-users
Slack App directory: https://my.slack.com/apps