mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: feature_updates_to_slack
 | |
| title: Feature Updates To slack
 | |
| ---
 | |
| 
 | |
| ## Create a custom Slack WebHook url: {#create-a-custom-slack-webhook-url}
 | |
| 
 | |
| 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”
 | |
| 1. This is Slack's help page on how to do this: https://api.slack.com/custom-integrations/incoming-webhooks
 | |
|    - Choose a channel, follow the wizard, get the custom URL.
 | |
| 
 | |
| ## Send data to Slack using an event hook function {#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.
 | |
| 
 | |
| ```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';
 | |
|   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')}`);
 | |
| });
 | |
| ```
 |