Skip to content

A SlackBot for listening to a Slack channel and sending JSON webhooks for each message in the channel

License

Notifications You must be signed in to change notification settings

brett-hobbs/webhook-slackbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

webhook-slackbot - Better Outgoing Webhooks from Slack

A SlackBot that listens to one or more Slack channels and sends a JSON webhook for each message.

The existing support for outgoing webhooks from Slack suffers from a few serious shortcomings.

  • The only format offered is a key/value format that somewhat resembles an html form post. Traditional webhook formats like JSON and XML are not supported.
  • Likely due to the limitation mentioned above - rich messages with attachments are syndicated with an empty message body. Its possible to get some metadata about the message (channel, user, etc.) but the message itself may be missing entirely.

This is a simple application that connects to the Slack RTM API (which appears to be where Slack is focusing its investment) and listens for messages. When a message occurs it broadcasts the metadata about the message and its full contents as a webhook with a JSON payload.

This application intends to provide a simple solution for getting a better outgoing webhook from Slack. Its very easy to configure and run on Heroku. There are only two configuration variables required: SLACK_TOKEN and WEBHOOK_URL.

Filtering messages is also supported with the MESSAGE_FILTER_FIELD and MESSAGE_FILTER_TEXT options. MESSAGE_FILTER_FIELD supports a lodash style get path to a field within the Slack message object (For example attachments[0].title references message.attachments[0].title). Then MESSAGE_FILTER_TEXT is used to filter by a matching substring in the aforementioned field.

Try it out:

  1. Go to your slack settings "Build a Custom Integration" and get a token for API access

  2. Click this Heroku badge to deploy an instance: Deploy

  3. Enter the token from step 1 and a webhook url endpoint of your choosing to configure the bot

Future updates will include:

  • XML webhook formatting
  • Signed webhook payloads

For now, its pretty easy to pipe your webhooks through a tool like Reflector.io for additional configuration.

About

A SlackBot for listening to a Slack channel and sending JSON webhooks for each message in the channel

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published