haacked
haacked

Manage Slack channels with Abbot

Abbot skill authors now have access to the Rooms API (via bot.rooms) to manage channels in Slack. This API lets skill authors create new channels, invite users to a channel, set a topic or purpose for a channel, and archive a channel. This feature can come in handy when building out your own incident workflow, especially when combined with signals!

This feature requires that you grant a couple of additional Slack scopes to Abbot, channels:manage and groups:write. When you log in to Abbot with your Slack account, you’ll be prompted to grant these scopes in the header:

Image with header that says "Abbot has new capabilities! These capabilities require updated permissions from Slack. Please reinstall Abbot for the best experience."

To help with learning how this feature works, we published a set of demonstration skills in each language:

The usage pattern for each of these skills is the same:

  • @abbot room-py create {room-name} - Creates a room with the given name.
  • @abbot room-py topic #room {topic} - Sets a topic for the specified room
  • @abbot room-py purpose #room {purpose} - Sets a purpose for the specified room
  • @abbot room-py topic {topic} - Sets a topic for the current room
  • @abbot room-py purpose {purpose} - Sets a purpose for the current room
  • @abbot room-py archive #room - Archives the specified room
  • @abbot room-py invite #room @mention1 @mention2 ... @mentionN - Invites the specified users to the specified room.

Note that these samples are meant to demonstrate how to use the API, but they’re only marginally useful as-is. Where the real power comes in is combining the Rooms APIs with signals and patterns and other skills.

For example, you could have an incident skill that raises a signal when a new Slack channel needs to be created for managing that incident. Another skill could subscribe to that skill and use the Rooms API to create a Slack channel in response.

Chat session where an incident skill creates a GitHub issue, pages oncall user, and creates a channel. Afterwards, the room is archived

For fun, another thing you could do is have a pattern that changes the room topic in response to certain words being mentioned in chat.

Give it a try and let us know what you think!