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.
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.
Slackbot was designed to be fun, useful, and not annoying. It has several functions.
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).
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.
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).
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.
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:
/remind
who
what
when
. For example, /remind me to stand up in 10 minutes
. You don’t have to put quotation marks around the “what” part to separate it from “when”; Slackbot parses that automatically.
You can also directly message Slackbot without typing a slash, as in remind me of a call tomorrow at 2pm
(Figure 127).
For reminders you create, you can remind yourself, other people, or entire channels. So you can say something like:
/remind @adamengst article discussion on Tuesday at 3 pm
or /remind #articles discuss latest issue tomorrow
.
Notice the syntax here, where to remind a person you type an @
with their handle, but to remind a channel you use a #
.
Reminders can recur automatically: use a pluralized day (Wednesdays
) or every
in association with something else (every two weeks
).
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!
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).
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.
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.)
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:
/giphy
followed by one or more words and the animated GIF site’s extensive archives are combed for keyword matches, and then an “appropriate” randomly selected entry from that set is inserted into the messaging stream. It’s like visual punctuation./hangout
; it inserts into the current channel or conversation a message containing a link that all participants can then click. (In testing, we found if Google Hangouts asks you to invite people to your hangout, you can just cancel that dialog.)(While working on the manuscript for this book, we found that IFTTT’s competitor Zapier did a better job of alerting us when files were moved in a shared Dropbox folder, which helped know who was working on the manuscript at any given time.)
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.
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).
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).
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.