Skip to content

re-implemenation of the CorrelAid Slackbot in Javascript with AWS Lambda and the serverless framework.

License

Notifications You must be signed in to change notification settings

CorrelAid/correlaid-slackbot-js

Repository files navigation

correlaid-slackbot-js 🤖

Re-implemenation of the CorrelAid Slackbot CorrelBot in Node.js with AWS Lambda and the serverless framework.

Current features

  • /telko slash command: post simple "poll" or show details for the core team call
  • /projectupdate slash command: post summary of the projects Kanban board
  • automated project update: posts summary of the projects Kanban board every Monday to the #projects channel.
  • comment under links from domain pad.correlaid.org to remind people how they can get access
  • comment under links from domain hackmd.io that we have transitioned to pad.correlaid.org and that the content should be transferred there.

Deprecated features

The bot also used to send welcome messages to new members of the workspace. This is now replaced by a Slack workflow.

Development

install

install nodejs dependencies:

yarn install

test

yarn test

lint

so far, only code formatting via prettier is implemented. To run:

yarn lint

Deployment to AWS

Requirements

env.yml

You need a yml file in the root folder with the environment variables for the application. The file name should follow env_{stage}.yml, depending on to which stage you want to deploy to. Examples:

  • .env_dev.yml
  • .env_prod.yml

The variables are (used in serverless.yml):

  • SLACK_API_TOKEN: the "Bot User Oauth Access Token" of the CorrelBot Slack App. You can find it on the "OAuth & Permissins" subpage of the CorrelBot Slack App page (only accessible with the suitable permissions for the CorrelAid workspace).
  • SLACK_SIGNING_SECRET: the signing secret that slack uses to generate the signature header. You can find it on the "Basic Information" page of the CorrelBot Slack App (only accessible with the suitable permissions for the CorrelAid workspace).
  • SLACK_PROJECTS_CHANNEL: ID of channel where the automated project update should be posted each Monday morning.
  • GITHUB_PAT: Github personal access token (PAT) from a user with write access to the CorrelAid/projects repository.
  • GITHUB_OWNER: owner of the repository. In this case, "correlaid".
  • GITHUB_REPO: name of repository. In this case, "projects".
  • GITHUB_PROJECT_ID: ID of the "projects" project in GitHub.

Check env_template.yml for how the env_{stage}.yml file should look like and generate it accordingly.

aws credentials

You need to have set up your aws credentials. See this guide.

serverless

You need to have serverless installed. Find the installation instructions here.

Deploy

dev

You can deploy the service to the dev stage AWS Lambda with the following command:

serverless deploy --aws-profile yourprofilename

where yourprofilename is the AWS profile you generated earlier when setting up the AWS credentials (e.g. "default").

prod

serverless deploy --aws-profile yourprofilename --stage prod

Configure app endpoints in Slack

The two endpoints that are shown in the serverless output are the ones that need to be put in the slack app configuration:

  • POST endpoint ending in slack-slash is for the slash command:
    • go to subpage "Slash commands"
    • create slash command if not there
    • under request URL put the POST endpoint
  • POST endpoint ending in slack-events is for the CorrelBot that reacts to the hackmd messages
    • go to subpage "event subscriptions"
    • under "subscribe to workspace events", subscribe to the link_shared event
    • under request URL put the POST endpoint

About

re-implemenation of the CorrelAid Slackbot in Javascript with AWS Lambda and the serverless framework.

Resources

License

Stars

Watchers

Forks