sipgate has a fantastic kitchen, serving breakfast and lunch. We have a web page which lists what’s on the lunch menu. In a sense there’s no point in checking because the food is, without fail, always yummy. Nonetheless, it’s still nice to know. I wondered, since I spend so much time in Slack, whether I could just find out what’s for lunch from there?
Enter Slash Commands
As it happens, Slack has something called Slash Commands. According to Slack, slash commands “enable Slack users to interact with external services directly from Slack.”
The first step is to add a slash command in Slack. Go to the App Directory and select ‘Build’ from the navigation bar. You want to select Make a Custom Integration. You’ll see a list of 4 types of custom integrations which you can build:
- Incoming WebHooks
- Slash Commands
- Outgoing WebHooks
Select Slash Commands and start by choosing your command. This is what a Slack user will type in at the Slack command line to trigger your slash command. In this case the command is ‘/lunch’.
After adding this command, you have to add some integration settings. Most importantly, you need to set a URL which the slash command will request when it’s run. I’ll talk about that next.
As you can see, the URL I added was for a Heroku application. I wrote a simple Sinatra application which just scrapes the website. (Something better like JSON is not an option right now.) I’ve included the relevant parts of the application below…
Once you’ve got your application running and the slash command configured in Slack, you’re good to go. As soon as you type the forward slash, Slack will show a list of available slash commands and then filter these as you type more letters.
It’s 09:12 and I’m already thinking about lunch. Mmm, Kalbsbraten.