mirror of
https://github.com/Unleash/unleash.git
synced 2024-10-28 19:06:12 +01:00
ab24264df9
<!-- Thanks for creating a PR! To make it easier for reviewers and everyone else to understand what your changes relate to, please add some relevant content to the headings below. Feel free to ignore or delete sections that you don't think are relevant. Thank you! ❤️ --> ## About the changes <!-- Describe the changes introduced. What are they and why are they being introduced? Feel free to also add screenshots or steps to view the changes if they're visual. --> This is a demo that uses [Floe](https://www.floe.dev/) to review the `how-to` directory using the `spelling-and-grammar` rule. You can read more about the tool here: https://www.floe.dev/docs
2.5 KiB
2.5 KiB
title |
---|
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:
- Go to https://slack.com/apps/manage/custom-integrations
- Click Incoming WebHooks
- Click “Add Configuration”
- 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')}`);
});