Slack Integration
Summary
Slack is a cloud-based collaboration tool used to communicate teams. JEMHCloud supports Slack notifications from Issue Events and Post Functions. You will be able to notify your Slack Channels when JEMHC detects an issue change.
Configuring the Slack Connection
In order to send Slack notifications from Issue and Post function events, you need to set up a Slack connection first. The connection knows how to send Slack messages via Slack Rest APIs.
To create a Slack Connection:
Log into your Slack's Team
Go to JEMH Cloud → Slack Connection → Connect To Slack
Authorize JEMHC to be installed to Slack as an App. This allows communication from JEMHCloud to Slack
Check out new Slack Connection on the screen.
Once you have the connection created, you can set Slack Notification Mappings to drive Slack notifications from Issue Created/Updated/Deleted events or Slack Post Functions to drive Slack notifications from transition events.
Send Slack notifications from issue events
Like Email and SMS Notification Mapping, Slack Notification Mapping is in charge of sending Slack messages from Issue events through the Slack Connection.
Creating a Slack Notification Mapping:
Go to JEMH Cloud → Notifications → Slack → Create
Complete the form, select the nominated projects, select the Slack Connection you want to use and the channel that will receive Slack messages. Enter a velocity script if you want to modify the notification behaviour at runtime (more below).
On Submit, you should see the new Slack mapping
To test the mapping, create an issue in the nominated project and go to Auditing → Events
You should see the issue created event in the queue. When event has been processed, the configured channel in the mapping should have received an Slack message.
The report of the event should confirm the message was sent to a selected Slack channel (e.g.)
In Auditing → Outbound Messages → Type Slack, the table should show the Slack messages sent and the cog icon should show their contents.
Send Slack Notifications from Post Functions
JEMHCloud allows you to send Slack notifications when Issue transitions are performed through JIRA Post Functions.
Adding the Slack Notification Post Function to workflow transition:
Go to right corner Cog → JIRA Administration → Issue → Workflows. Edit the workflow of the project you want to add the Post Function. Click on the transition you want to change and select the Post Functions tab. Click on Add post function
Select Send Slack Notification by JEMHCloud and click Add
Set the Slack Connection, Chanel and Velocity script if necessary. Press Add/Update
Move the Post Function to last position and publish the workflow draft.
Remember to publish the workflow change draft!
To test the post function, go to an issue and perform the transition.
Post function event should appear in JEMH Cloud → Notifications → Events. The event report identifies the channel notified:
In Auditing → Outbound Messages, the table shows the SLACK messages sent.
Unable to find your desired Slack channel?
Due to limitations with Slack API, we currently only display the first 1000 channels.
If you cannot find your chosen channel, you can override this setting using the velocity script in the notification configuration:
Select any channel - this will get overridden.
Enter the following script in the velocity script editor, replacing
AnotherChannelNameOrId
with the channel name or channel ID:
$slackNotificationUtils.setChannel('AnotherChannelNameOrId')
You can find channel ID’s when accessing Slack through your Web Browser, normally under the following structure:
https://app.slack.com/client/WORKSPACE_ID/CHANNEL_ID
Filter Scripts
Both Slack Notification Mapping and Slack Post Function behaviour can be changed at runtime with a Velocity Script. The script can use the event data or be time-based to change how notifications are performed.
Change Channel
Change channel when Critical
#if ($context.issue.fields.priority.name.textValue() != 'Critical')
$slackNotificationUtils.setChannel('AnotherChannelNameOrId') ## JEMHC looks for the channel by either name or id
#end
Restrict notifications to specific time ranges
Notify only after hours
#if (!$dateTimeUtils.betweenHours("18:00", "06:00"))
$slackNotificationUtils.inhibitNotification() ## Slack messages are not sent during business hours **
#end
Restrict by priority
Velocity Script cannot be validated at configuration time (for example the dynamic channel). You should test the script by re-executing events in Auditing → Events