Skip to content
This repository has been archived by the owner on Jan 7, 2023. It is now read-only.

iniva/slack-webhooks-handler

Repository files navigation

Build Status Coverage Status

Slack Webhooks Handler

Manage incoming webhooks to send messages to Slack

Installation

# npm
npm install slack-webhooks-handler

# yarn
yarn add slack-webhooks-handler

Options

  • url(required): Your Slack custom integration (Incoming Webhook) URL
  • botName(optional): The name of the bot that will appear when sending messages. Do this if you want/need to override the one you set on your custom integration.
// options object
{
    url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX',
    botName: 'MyAPP-CI'
}

Usage

All you need to do is prepare a POST endpoint in your API that will be used when configuring the webhook in your preferred version control hosting (Github, Gitlab, Bitbucket, etc.)

At the moment you have the main dispatcher (Dispatcher) and a factory function.

You can rely on the factory function (currently only supports Github's release and issues events, more on the way...), or you can use the dispatcher alone to send a simple message (just text) or a custom one following the attachments structure

const { Dispatcher, factory } = require('slack-webhooks-handler')

const dispatcher = new Dispatcher(options);
const hook = factory('github');
const { attachments } = hook(payload);

dispatcher.withAttachments(attachments);

(async () => {
    try {
        await dispatcher.send();
    }
    catch (error) {
        console.log(error);
    }
})();

Available Dispatcher Methods

  • setMessage: Use it when you intend to send a simple message.
  • setChannel: Even if you set your Slack Webhook to a specific channel, you can use this method to change the target channel for specific messages.
  • withAttachments: Use it to set attachments for messages.
  • preparePayload: Use it to preview the payload you will send to Slack.

Payload docs

For more info about event payloads take a look at: