Skip to main content

Feature Updates To Slack

caution

This guide is deprecated. If you're looking for ways to integrate with Slack, you should refer to the Slack integration guide instead.

Event hook option is removed in Unleash v5

Create a custom Slack WebHook URL:

  1. Go to https://slack.com/apps/manage/custom-integrations
  2. Click Incoming WebHooks
  3. Click “Add Configuration”
  4. This is Slack's help page on how to do this: https://api.slack.com/messaging/webhooks
    • Choose a channel, follow the wizard, get the custom URL.

Send data to Slack using an event hook function

Using the eventHook option, create a function that will send the data you'd like into Slack when mutation events happen.

const unleash = require('unleash-server');
const axios = require('axios');

function onEventHook(event, eventData) {
const { createdBy: user, data } = eventData;
let text = '';

const unleashUrl = 'http://your.unleash.host.com';
const feature = `<${unleashUrl}/#/features/strategies/${data.name}|${data.name}>`;

switch (event) {
case 'feature-created':
case 'feature-updated': {
const verb =
event === 'feature-created' ? 'created a new' : 'updated the';
text = `${user} ${verb} feature ${feature}\ndescription: ${
data.description
}\nenabled: ${data.enabled}\nstrategies: \`${JSON.stringify(
data.strategies,
)}\``;
break;
}
case 'feature-archived':
case 'feature-revived': {
const verb = event === 'feature-archived' ? 'archived' : 'revived';
text = `${user} ${verb} the feature ${feature}`;
break;
}
default: {
console.error(`Unknown event ${event}`);
return;
}
}

axios
.post(
'https://hooks.slack.com/services/THIS_IS_WHERE_THE_CUSTOM_URL_GOES',
{
username: 'Unleash',
icon_emoji: ':unleash:', // if you added a custom emoji, otherwise you can remove this field.
text: text,
},
)
.then((res) => {
console.log(`Slack post statusCode: ${res.status}. Text: ${text}`);
})
.catch((error) => {
console.error(error);
});
}

const options = {
eventHook: onEventHook,
};

unleash.start(options).then((server) => {
console.log(`Unleash started on http://localhost:${server.app.get('port')}`);
});