Based on GitHub's Hubot. Connected to Slack. Deployed to Heroku.
I have a thing for robots and wanted to build a chatbot as an experiment that calls my service's (ConfigCat.com) \health
endpoint and returns if everything is okay. It took me quite a long time to go trough the possible frameworks and docs, read all the outdated guides to find the quickest and cheapest way. I feel like it might worth sharing.
The tools needed:
Adding Hubot integration to your Slack Workspace
Find Hubot in Slack App Directory
Connect to Workspace
Take a note of the API Token, you'll need it later
Running Hubot on local machine
Install Yeoman and Hubot generator
npm install -g yo generator-hubot
Scaffold a Hubot project
mkdir catbot
cd catbot
yo hubot --adapter=slack
Start Hubot using API Token
HUBOT_SLACK_TOKEN=xoxb-271695489427-739714865891-Z5gPPiuTORKDFO4QvqKe1B9y ./bin/hubot --adapter slack
Open Slack and start a conversation
The chatbot should be available under Apps.
Test with help
command
Recognizing health
command
And make a HTTP GET call to ConfigCat's /health
endpoint and reply back the results via Slack.
I created a configcat.coffee
under /scripts
folder with the following code:
module.exports = (robot) ->
robot.hear /health/i, (reply) ->
robot.http("https://api.configcat.com/api/v1/health")
.get() (err, res, body) ->
reply.send body
See the complete source code on GitHub.
I used CoffeeScript because I like to experiment and it feels fancy. But you can use JavaScript as well.
Test if the health
check works
Deploying to Heroku
Check Node.js version
node --version
Open package.json
and check Node.js version. In my case the generated package.json
was "node": "0.10.x"
so I changed it to:
"engines": {
"node": "10.16"
}
Git commit
Make sure you’ve created a git repository, and that your work is committed.
git init
git add .
git commit -m "Initial commit"
Heroku CLI
Install the Heroku CLI. then log in.
heroku login
Create app.
heroku create
Set environment variable for API Token.
heroku config:set HUBOT_SLACK_TOKEN=xoxb-271695489427-739714865891-Z5gPPiuTORKDFO4QvqKe1B9yt --app=arcane-dusk-29327
Git push
git push heroku master
Avoiding sleep mode
Since I'm using Heroku's free plan, the app will eventually go to sleep mode. To avoid that add hubot-eroku-keepalive script to your chatbot.
Top comments (0)