Create a serverless Slack App with AWS Lambda, API Gateway, DynamoDB, and CloudFormation. All services will be automatically provisioned for you. All that's needed is your Slack App keys.
- Setup your AWS Credentials
- Install Serverless.js
npm install -g serverless
- Install The Serverless Slack App Template and provision all AWS services
serverless install --url https://github.com/johnagan/serverless-slack-app
cd serverless-slack-app
npm install
serverless deploy
- Create a new Slack App
- Use the generated POST url for Slack's slash commands, events, and interactive messages
- Update the serverless.yml with your new Slack App keys
Slack | Serverless |
---|---|
- Deploy the changes to AWS
serverless deploy
- Navigate to the GET url provided from serverless
- Walk through the OAuth flow and install the App
- Goto the team and test the slash command
/greet
// Slash Command handler
slack.on('/greet', (msg, bot) => {
let message = {
text: "How would you like to greet the channel?",
attachments: [{
fallback: 'actions',
callback_id: "greetings_click",
actions: [
{ type: "button", name: "Wave", text: ":wave:", value: ":wave:" },
{ type: "button", name: "Hello", text: "Hello", value: "Hello" },
{ type: "button", name: "Howdy", text: "Howdy", value: "Howdy" },
{ type: "button", name: "Hiya", text: "Hiya", value: "Hiya" }
]
}]
};
// ephemeral reply
bot.replyPrivate(message);
});
// Interactive Message handler
slack.on('greetings_click', (msg, bot) => {
let message = {
// selected button value
text: msg.actions[0].value
};
// public reply
bot.reply(message);
});
- Open the bot source code
- Add/Remove/Update the code with your bot functionality
- Run
serverless deploy
to deploy your changes to AWS - Rinse and repeat.
All the tokens and urls above were invalidated before posting this tutorial. You will need to use your own tokens