Socket
Socket
Sign inDemoInstall

hubot-slack

Package Overview
Dependencies
0
Maintainers
1
Versions
59
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    hubot-slack

A Slack adapter for hubot


Version published
Maintainers
1
Install size
23.6 kB
Created

Readme

Source

hubot-slack

This is a Hubot adapter to use with Slack.
Build Status

Getting Started

Creating a new bot
  • npm install -g hubot coffee-script
  • hubot --create [path_name]
  • cd [path_name]
  • npm install hubot-slack --save
  • Initialize git and make your initial commit
  • Check out the hubot docs for further guidance on how to build your bot
Testing your bot locally
  • ./bin/hubot
Deploying to Heroku

This is a modified set of instructions based on the instructions on the Hubot wiki.

  • Make sure hubot-slack is in your package.json dependencies

  • Edit your Procfile and change it to use the slack adapter:

      web: bin/hubot --adapter slack
    
  • Install heroku toolbelt if you haven't already.

  • heroku create my-company-slackbot

  • heroku addons:add redistogo:nano

  • Activate the Hubot service on your "Team Services" page inside Slack.

  • Add the config variables. For example:

      % heroku config:add HEROKU_URL=http://soothing-mists-4567.herokuapp.com
      % heroku config:add HUBOT_SLACK_TOKEN=dqqQP9xlWXAq5ybyqKAU0axG
      % heroku config:add HUBOT_SLACK_TEAM=myteam
      % heroku config:add HUBOT_SLACK_BOTNAME=slack-hubot
    
  • Deploy and start the bot:

      % git push heroku master
      % heroku ps:scale web=1
    
  • Profit!

Adapter configuration

This adapter uses the following environment variables:

HUBOT_SLACK_TOKEN

This is the service token you are given when you add Hubot to your Team Services.

HUBOT_SLACK_TEAM

This is your team's Slack subdomain. For example, if your team is https://myteam.slack.com/, you would enter myteam here.

HUBOT_SLACK_BOTNAME

Optional. What your Hubot is called on Slack. If you entered slack-hubot here, you would address your bot like slack-hubot: help. Otherwise, defaults to slackbot.

HUBOT_SLACK_CHANNELMODE

Optional. If you entered blacklist, Hubot will not post in the rooms specified by HUBOT_SLACK_CHANNELS, or alternately only in those rooms if whitelist is specified instead. Defaults to blacklist.

HUBOT_SLACK_CHANNELS

Optional. A comma-separated list of channels to either be blacklisted or whitelisted, depending on the value of HUBOT_SLACK_CHANNELMODE.

Optional. By default, Slack will not linkify channel names (starting with a '#') and usernames (starting with an '@'). You can enable this behavior by setting HUBOT_SLACK_LINK_NAMES to 1. Otherwise, defaults to 0. See Slack API : Message Formatting Docs for more information.

Under the Hood

Receiving Messages:

The slack adapter adds a path to the robot's router that will accept POST requests to:

/hubot/slack-webhook

Source: https://github.com/tinyspeck/hubot-slack/blob/2.1.0/src/slack.coffee#L149-L165

Expected parameters:

  • text
  • user_id
  • user_name
  • channel_id
  • channel_name

If there is a message and it can deduce an author from those paramters, it'll create a new TextMessage object and have the robot receive it, from there proceeding down the regular hubot path.

Sending Messages

When a script calls send() or reply() this adapter makes a POST request to your team's specific URL webhook:

https://<your_team_name>.slack.com/services/hooks/hubot

with a JSON-formatted body including the following dictionary:

  • username
  • channel
  • text
  • link_names (optionally)
Message to a specific room:

Sometime, it's useful to send a message regardless of the channel's activity (like robot.hear or robot.response). Hubot has robot.messageRoom available for this use case.

Slack API uses channel ID's by default, which uses computer-friendly alphanumeric ID. To use the pretty names, prefix it with a hash.

robot.respond /hello$/i, (msg) ->
  robot.messageRoom '#general', 'hello there'

Keywords

FAQs

Last updated on 02 Sep 2014

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc