The Slack connector is used to integrate with the Slack web API and REST time messaging API to create Slack channels and send messages to channels or users.
The Slack connector is displayed on the process diagram with the Slack logo.
Important: The Slack connector requires a Slack account to use. This account is separate to the Alfresco hosted environment and should be created and managed by customers.
The actions that can be executed using the Slack connector are:
- Send a message to a specific user or channel (public or private)
- Create a new channel (public or private)
Send message
The SEND_MESSAGE action is used by the Slack connector to send a message to a user or channel.
The input parameters to send a message in Slack are:
Parameter | Type | Description |
---|---|---|
channelId | String | Requires one. The channel ID to send the message to. |
channelName | String | Requires one. The name of the channel to send the message to. |
userId | String | Requires one. The user ID of the message recipient. |
userEmail | String | Requires one. The email address of the message recipient. |
text | String | Required. The contents of the message. The message supports Freemarker syntax, for example ${fullName.lastName} can be used from the metadata parameter to include variables. |
metadata | JSON | Optional. Metadata to be used by the text parameter to include process variables in a message. |
requestResponse | String | Optional. Set to no and a response will be sent back to the process immediately after the message is sent. Set to any and a response will be sent back to the process only after a reply is received in the same channel. Set to thread and a response will be sent back to the process only after a reply is received in a thread. |
The output parameters from sending a message in Slack are:
Parameter | Type | Description |
---|---|---|
message | String | Optional. The message received in the channel or thread if the input parameter requestResponse was set to any or thread . |
Create channel
The CREATE_CHANNEL action is used by the Slack connector to create a new public or private channel in Slack.
The input parameters to create a channel in Slack are:
Parameter | Type | Description |
---|---|---|
channelName | String | Required. The name of the channel to be created. |
channelType | String | Required. Set whether the channel is public or private . |
members | String | Required. A list of members that will be invited to join the new channel using Slack IDs or email addresses. |
The output parameters from creating a channel in Slack are:
Parameter | Type | Description |
---|---|---|
slackResult | JSON | Optional. An object containing the details of the newly created channel. |
An example of a channel creation in the slackResult
is:
{
"ok":true,
"channel":{
"id":"CFWSKMFR6",
"name":"my_channel",
"is_channel":true,
"created":1549985348,
"is_archived":false,
"is_general":false,
"unlinked":0,
"creator":"UFX13DBJM",
"name_normalized":"my_channel",
"is_shared":false,
"is_org_shared":false,
"is_member":true,
"is_private":false,
"is_mpim":false,
"last_read":"0000000000.000000",
"latest":null,
"unread_count":0,
"unread_count_display":0,
"members":[
"UFX13DBJM",
"DFWSKM0HH"
],
"topic":{
"value":"",
"creator":"",
"last_set":0
},
"purpose":{
"value":"",
"creator":"",
"last_set":0
},
"previous_names":[],
"priority":0
}
}
Configuration
The Slack connector requires a Slack application and a Slack bot in order to function. The application and bot need to be configured correctly.
-
Use the Slack website to create an application.
Note: You will need to be logged in as a workspace administrator to create an application.
-
Use the following URL to create a bot in the application you created:
https://api.slack.com/apps/<app_id>/bots
. -
Use the following URL to configure the scope and permissions of the application and bot:
https://api.slack.com/apps/<app_id>/oauth
.The required scope and permissions are:
- app_mentions:read
- channels:read
- channels:manage
- groups:read
- groups:write
- mpim:read
- mpim:write
- users:read
- users:read.email
- chat:write
- chat:write.public
- im:read
- im:write
-
Use the following URL to obtain the Slack bot token and signing secret:
https://api.slack.com/apps/<app_id>/oauth
.
Configuration parameters
The configuration parameters for the Slack connector are:
Parameter | Description |
---|---|
SLACK_BOT_TOKEN | Required. The Slack bot user token obtained from configuring Slack, beginning xoxb- . |
SLACK_SIGNING_SECRET | Required. The Slack signing secret obtained from the Basic Information page in Slack. |
Event subscription
To use Slack as a trigger the Slack bot needs to subscribe to events.
-
Use the following URL to configure the events:
https://api.slack.com/apps/<app_id>/event-subscriptions
. -
Set the Request URL for Slack to post HTTP requests to as:
https://<cluster-name>/<application-name>/connector/<connector-name>/slack/events
. Where:cluster-name
is the name of the cluster running Process Automation.application-name
is the name of the application the trigger is configured for.connector-name
is the name of the Slack connector instance in the application.
-
Subscribe the Slack bot user to the following events:
- app_mention
- message.channels
- message.groups
- message.im
- message.npim
Errors
The possible errors that can be handled by the Slack connector are:
Error | Description |
---|---|
MISSING_INPUT | A mandatory input variable was not provided. |
INVALID_INPUT | The input variable has an invalid type. |
INVALID_RESULT_FORMAT | The REST service result payload cannot be parsed. |
USER_NOT_FOUND | User is not found. |
CHANNEL_NOT_FOUND | Channel is not found. |
INVALID_REQUEST | A null response is received while sending message. |
INVALID_CHANNEL | There is a problem with the channel. |
MSG_TOO_LONG | Message text is too long. |
FATAL_ERROR | The server could not complete the operation without encountering a catastrophic error. |
UNKNOWN_ERROR | Unexpected runtime error. |
UNAUTHORIZED | The request has not been applied because it lacks valid authentication. |
FORBIDDEN | The server understood the request but refuses to authorize it. |
REQUEST_TIMEOUT | The server would like to shut down this unused connection. |