2019-06-20 19:32:41 +02:00
---
2024-01-23 19:52:10 +01:00
title: Feature Updates To Slack
2019-06-20 19:32:41 +02:00
---
2019-06-20 18:48:25 +02:00
2022-04-22 11:16:42 +02:00
:::caution
2022-09-07 14:26:23 +02:00
2023-09-14 15:27:51 +02:00
This guide is deprecated. If you're looking for ways to integrate with Slack, you should refer to [the Slack integration guide ](../reference/integrations/slack.md ) instead.
2022-09-07 14:26:23 +02:00
2023-04-21 14:33:09 +02:00
Event hook option is removed in Unleash v5
2022-04-22 11:16:42 +02:00
:::
2024-01-23 19:52:10 +01:00
## Create a custom Slack WebHook URL: {#create-a-custom-slack-webhook-url}
2019-06-20 18:48:25 +02:00
1. Go to [https://slack.com/apps/manage/custom-integrations ](https://slack.com/apps/manage/custom-integrations )
1. Click Incoming WebHooks
1. Click “Add Configuration”
2022-09-07 14:26:23 +02:00
1. This is Slack's help page on how to do this: https://api.slack.com/messaging/webhooks
2019-06-20 18:48:25 +02:00
- Choose a channel, follow the wizard, get the custom URL.
2021-06-04 11:17:15 +02:00
## Send data to Slack using an event hook function {#send-data-to-slack-using-an-event-hook-function}
2019-06-20 18:48:25 +02:00
Using the `eventHook` option, create a function that will send the data you'd like into Slack when mutation events happen.
```javascript
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';
2021-06-04 11:17:15 +02:00
const feature = `<${unleashUrl}/#/features/strategies/${data.name}|${data.name}>` ;
2019-06-20 18:48:25 +02:00
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,
},
)
2022-09-07 14:26:23 +02:00
.then((res) => {
2019-06-20 18:48:25 +02:00
console.log(`Slack post statusCode: ${res.status}. Text: ${text}`);
})
2022-09-07 14:26:23 +02:00
.catch((error) => {
2019-06-20 18:48:25 +02:00
console.error(error);
});
}
const options = {
eventHook: onEventHook,
};
2022-09-07 14:26:23 +02:00
unleash.start(options).then((server) => {
2019-06-20 18:48:25 +02:00
console.log(`Unleash started on http://localhost:${server.app.get('port')}`);
});
```