Skip to content

A Serverless.js Slack App Boilerplate with OAuth and Bot actions

License

Notifications You must be signed in to change notification settings

johnagan/serverless-slack-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Serverless Slack App Boilerplate

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.

Install Serverless and provision AWS

serverless-slack-install

  1. Setup your AWS Credentials
  2. Install Serverless.js
npm install -g serverless
  1. 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 Slack App

serverless-slack-app

  1. Create a new Slack App
  2. Use the generated POST url for Slack's slash commands, events, and interactive messages
  3. Update the serverless.yml with your new Slack App keys
Slack Serverless
slack-app-keys serverless-keys

Install the Slack App and Test

serverless-slack-app-install

  1. Deploy the changes to AWS serverless deploy
  2. Navigate to the GET url provided from serverless
  3. Walk through the OAuth flow and install the App
  4. Goto the team and test the slash command /greet

Update the Code

// 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);
});
  1. Open the bot source code
  2. Add/Remove/Update the code with your bot functionality
  3. Run serverless deploy to deploy your changes to AWS
  4. Rinse and repeat.

All the tokens and urls above were invalidated before posting this tutorial. You will need to use your own tokens

About

A Serverless.js Slack App Boilerplate with OAuth and Bot actions

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published