Manage Bots and Integrations

Slack wants to provide more features—way more features!—than the company could ever create on its own. Its approach is to be a platform upon which other services can build. This commitment, and third-party developers’ embrace of it, has become one of the best things about Slack.

Making conduits to other ecosystems possible, and providing access to extra single-purpose tools, even tiny ones, makes Slack richer and more useful. These third-party connections are called integrations, though Slack has moved to more frequently referring to them as apps.

For example, your team may be using an integration with a task-management system like Trello or JIRA to push certain notifications into a Slack channel or to you via a direct message. Integrations also include automated-response systems, or bots. A bot appears like another team member, and can respond to a variety of requests, from ordering a pizza to updating a linked calendar.

All teams include Slackbot, which is built by Slack and a key part of how Slack “talks” to you privately about things happening in Slack, such as you being invited to another channel. Slackbot also conveys certain public information, like everyone being reminded of an event.

I look to Twitter’s early years as an example of what Slack could become. Twitter initially welcomed third-party software to spread the use of its microblogging service, and gave developers broad and deep access to its application programming interface (API) to capture data and post messages. Twitter developers adopted conventions like filtering by @handles and options like muting long before Twitter integrated those as core features.

Slack guides its product more strongly than Twitter did at its beginning, while providing robust tools for its developers. Because Slack charges for advanced features and is aimed at businesses that use expensive tools they may have spent years customizing, it’s highly unlikely that Slack will move in Twitter’s direction.

In this chapter, I first introduce you to Slackbot and then I look at how to Install Integrations.

Chat with Slackbot

Although Slack teams are primarily populated with real people, every Slack team includes a bot, a non-human automated interaction system, called Slackbot. With a presence icon in the shape of a heart , Slackbot is your plastic pal who’s fun to be with (to quote The Hitchhiker’s Guide to the Galaxy).

When you join a team, Slackbot welcomes you and invites you to fill out your team profile (Figure 123). It’s your concierge, too, talking to you when you paste in a link (such as to Google Drive) or use an integration to certain external services for the first time, like the project-management system Asana: Slackbot asks about your preferences for how Asana works with Slack and stores your answers in your Slack account in that team.

**Figure 123:** Slackbot says hello and offers suggestions for finishing your profile.
Figure 123: Slackbot says hello and offers suggestions for finishing your profile.

Slackbot was designed to be fun, useful, and not annoying. It has several functions.

Watching for Alerts

When something happens in Slack that you should know about, you get a message from Slackbot, typically in the channel or conversation in which you’re already focused.

However, events can happen elsewhere, and Slackbot tracks those. A notable case is when someone else @mentions you in a channel in which you are not a member. Slackbot asks them whether to invite you or send you a link (Figure 124). Either way, you hear from Slackbot (Figure 125).

**Figure 124:** When Tonya @mentioned Adam in a channel that he hadn’t joined, Slackbot asked her what to do.
Figure 124: When Tonya @mentioned Adam in a channel that he hadn’t joined, Slackbot asked her what to do.
**Figure 125:** After Tonya clicked “send them a link to your message,” this alert appeared in Adam’s Slackbot conversation. When Adam clicked the link, he joined the channel.
Figure 125: After Tonya clicked “send them a link to your message,” this alert appeared in Adam’s Slackbot conversation. When Adam clicked the link, he joined the channel.

Keeping Private Notes

Even though Slackbot is just a bot (sorry, Slackbot!), it looks and acts like a full team member in the Slack ecosystem. You can always find Slackbot in the sidebar under Direct Messages, even if you’ve never had a conversation with it.

If you switch to your conversation with Slackbot, you can use direct messages to store private notes and other information. Everything in this Slackbot conversation becomes searchable, but you’re the only one who sees those search results.

You can do almost anything in a Slackbot conversation that you can in any other conversation, including applying formatting to messages.

Testing a Message

I often use my Slackbot conversation as a test bed. For instance, when I compose a post, I start in the Slackbot conversation, work on it while sharing it just with Slackbot, and only once it’s refined do I share it with a channel or an additional conversation (Figure 126).

**Figure 126:** If you want to create a post or snippet, or upload a file, you can try it privately in your Slackbot conversation first.
Figure 126: If you want to create a post or snippet, or upload a file, you can try it privately in your Slackbot conversation first.

You can also upload files to your Slackbot conversation to see how they look in Slack or to make sure they appear in the message list as expected, before you upload them to another conversation or to a channel.

Making Reminders

You can make reminders yourself, for other teammates, and for a channel. A reminder you set for yourself will appear as a direct message from Slackbot, subject to any notification choices you’ve made for direct messages in all your Slack apps, no matter in which Slack app you made the reminder. A reminder for a teammate will also appear to them as a direct message from Slackbot, but subject to your teammate’s notification choices. A reminder for a channel appears in that channel as a regular message.

You can set up a general reminder, or you can ask Slack to remind you about a particular message:

**Figure 128:** You can choose to get reminders about individual messages.
Figure 128: You can choose to get reminders about individual messages.

To review a list of extant reminders that you’ve set for yourself and that other people have set for channels or conversations in which you’re a participant, either click View Existing Reminders after adding one (Figure 129), or issue the command /remind list. The list has active links that let you mark reminders as complete, delete them, or snooze them if they’re overdue. Click Dismiss, and the list disappears from the message list, too!

**Figure 129:** The reminder list shows both reminders you entered and those that other people have entered for you, as well as overdue reminders that you haven’t marked as complete.
Figure 129: The reminder list shows both reminders you entered and those that other people have entered for you, as well as overdue reminders that you haven’t marked as complete.

Slackbot reminds you at the appropriate interval, and you can snooze it or tell it that you’ve taken care of it, in which case it updates the notice visually (Figure 130).

**Figure 130:** After a reminder is complete, Slackbot crosses it out.
Figure 130: After a reminder is complete, Slackbot crosses it out.

Sass

Did I mention that Slackbot is sassy? Not necessarily by default, but you can up the sass quotient (or reduce it). If your team’s admin hasn’t turned the feature off, in Slack’s preferences on the Web (enter in your browser’s address field team-name.slack.com/customize/slackbot), you can set trigger words or phrases. In Figure 131, the trigger word “raccoons” results in “Don’t tell Glenn!”, because in that team I am associated with raccoons for reasons too amusing to explain here.

**Figure 131:** Raccoons and I have a close association. It may have to do with me not always staying on topic.
Figure 131: Raccoons and I have a close association. It may have to do with me not always staying on topic.

Each trigger word or phrase can have more than one response associated with it, and Slack selects randomly from multiple responses. Having different responses can make Slack seem more amusing and less relentless.

You can include both text and images in a response, using a URL to specify a path to an image; it’s expanded when Slackbot responds with that message. You can also use emoji in the standard :emoji-name: format. These responses are public, and are formatted like messages from other users.

I’ll be honest: This feature can get old fast if you pick any common word. While Slackbot chooses among all available responses, it always replies when a keyword is used, and thus any frequently used word causes Slackbot to natter on all the time. (I’ve suggested to the company that it use more randomization and settings to allow Slackbot to respond only 1 in X times, where team members or admins can set X.)

Install Integrations

Integrations expand Slack’s capabilities. An integration can be a special slash command, a bot, or a connection to some other service. Integrations are installed into a team.

Paid teams can install unlimited integrations; free teams can install up to ten. With free teams, the Google Drive, Dropbox, Box, and RSS feed options count as integrations, and are added the first time they’re invoked. This reduces the count of integrations remaining. With paid teams, several integrations, including Google Drive, are shown as available even before they’re linked to a remote account, as they’re so commonly used and there’s no integrations limit.

These integrations are installed in many Slack teams; if you belong to a bunch of teams, you might think they’re part of Slack:

**Figure 132:** Google Calendar can remind you of upcoming events, among other things.
Figure 132: Google Calendar can remind you of upcoming events, among other things.

I suggest that you make a list of services you already use and check them against Slack’s availability. For examples of how integrations can improve your overall efficiency, see Centralize Communications into Slack, later. Also, Take Control of Slack Admin has a chapter about integrations that are interesting from an admin angle.

Slack allows anyone with permission to add integrations to a team. Start with Slack’s Web-based App Directory, which works much like an app store for a smartphone (Figure 133). To navigate to the App Directory from within Slack, click the team name at the top of the main sidebar and choose Apps & Integrations. If you belong to more than one team, note that you can switch teams with the pop-up menu at the upper right.

**Figure 133:** The App Directory is a one-stop shop for adding and managing integrations.
Figure 133: The App Directory is a one-stop shop for adding and managing integrations.

You install an integration from its page in the App Directory, where you will see a button labeled either Install or Visit Site to Install. (For a team for which you lack permission to add integrations, the button will be gray and unclickable.)

The simpler, but less common, case is an Install button; click it, and the integration is added, and you can then configure it. For instance, the Tomatobot integration has an Install button (Figure 134).

**Figure 134:** Adding an integration is as simple as clicking Install.
Figure 134: Adding an integration is as simple as clicking Install.

For a Visit Site to Install button, once you click it, you will likely have to log in to that integration’s site. (If you haven’t set up an account at that site, you’ll need to do so or authenticate through Twitter, Google, or some third-party system, depending on the site). Whatever the process of associating yourself, you will then click Add to Slack, select the Slack team, and click the Authorize button (Figure 135).

**Figure 135:** Some integrations require a login.
Figure 135: Some integrations require a login.

Once you’ve installed an integration, it appears in the team’s Installed Apps list (accessed from the Manage button in the App Directory or by entering team-name.slack.com/apps/manage in your browser’s address field). When you view its entry, you typically find a little advice about using it, and an option for removing it from the team. You may also see an Edit button you can click to configure it—and in some cases, the remove option is inside the Edit option.

Other members of your team can see that the integration is installed and—if they have permission to work with apps and custom integrations—remove it or configure it.