Slack

The Slack component is an application component that allows users to get and send message on Slack. It can carry out the following tasks:

#Release Stage

Alpha

#Configuration

The component definition and tasks are defined in the definition.json and tasks.json files respectively.

#Setup

In order to communicate with Slack, the following connection details need to be provided. You may specify them directly in a pipeline recipe as key-value pairs within the component's setup block, or you can create a Connection from the Integration Settings page and reference the whole setup as setup: ${connection.<my-connection-id>}.

FieldField IDTypeNote
Bot OAuth Token (required)bot-tokenstringToken associated to the application bot.
User OAuth Tokenuser-tokenstringToken to act on behalf of a Slack user.

#Connecting through a Slack App

The Slack component connects with your workspace via a Slack App. In order to read / write messages from / to Slack, you'll need to:

  • Add the app to your workspace.
  • Add the app to the channels you want to interact with.

The Slack integration on Instill Cloud uses OAuth 2.0 to connect with Slack via the instill-ai app. There, creating a connection will simply require authenticating on Slack. Your newly created connection, which you can reference in your pipelines, will allow you to read messages and send them on behalf of your user or the instill-ai bot on the channels where that app is installed.

If you want to connect with Slack via OAuth 2.0 on Instill Core, you will need to provide your app's client ID and client secret as environment variables on Instill Core.

#Supported Tasks

#Read Message

Get the latest message since specific date

InputIDTypeDescription
Task ID (required)taskstringTASK_READ_MESSAGE
Channel Name (required)channel-namestringChannel name, as displayed on Slack.
Start to Read Datestart-to-read-datestringDate (in YYYY-MM-DD format) from which messages will start to be fetched. If not provided, it will be 7 days before the current date. The date will be in the UTC timezone.
OutputIDTypeDescription
Conversationsconversationsarray[object]An array of conversations with thread messages.
Output Objects in Read Message

Conversations

FieldField IDTypeNote
Last Datelast-datestringDate of the last message.
Start Conversation Messagemessagestringmessage to start a conversation.
Start Datestart-datestringwhen a conversation starts.
Replied messagesthread-reply-messagesarrayreplies in a conversation.
User UIDuser-idstringunique id from Slack.
User Nameuser-namestringuser name in Slack.

Replied Messages

FieldField IDTypeNote
Replied Timedatetimestringreplied datetime.
Replied Messagemessagestringmessage to reply a conversation.
User UIDuser-idstringunique id from Slack.
User Nameuser-namestringuser name in Slack.

#Send Message

send message to a specific channel

InputIDTypeDescription
Task ID (required)taskstringTASK_WRITE_MESSAGE
Channel Name (required)channel-namestringChannel name, as displayed on Slack.
Message (required)messagestringThe message to be sent to the target channel.
Send As Useras-userbooleanSend the message on behalf of the user identified by the setup.user-token field.
OutputIDTypeDescription
ResultresultstringResult of the message delivery.

#Supported Events

#New Message Event

A new message event from Slack.

ConfigurationIDTypeDescription
Channel Names (required)channel-namesarray[string]Names of the Slack channels to listen to.
Event MessageIDTypeDescription
TimestamptimestampstringTimestamp of the message.
ChannelchannelobjectChannel information.
UseruserobjectUser information.
Message TexttextstringContent of the message.
Event Message Objects

Channel

FieldField IDTypeNote
Channel IDidstringUnique ID of the Slack channel.
Channel NamenamestringName of the Slack channel.

User

FieldField IDTypeNote
User IDidstringUnique ID of the Slack user.
User NamenamestringUsername of the Slack user.
Real Namereal-namestringReal name of the Slack user.
ProfileprofileobjectUser profile information.

Profile

FieldField IDTypeNote
Display Namedisplay-namestringDisplay name of the Slack user.

#Example Recipes

Send a message to Slack when a new message is posted in a channel


# VDP Version
version: v1beta
on:
slack-0:
type: slack
event: EVENT_NEW_MESSAGE
config:
channel-names:
- channel-to-be-listened
setup: ${connection.my-slack-connection}
variable:
message:
title: message
format: string
listen:
- ${on.slack-0.message.text}
user:
title: user
format: string
listen:
- ${on.slack-0.message.user.name}
channel:
title: channel
format: string
listen:
- ${on.slack-0.message.channel.name}
component:
slack-0:
type: slack
input:
channel-name: channel-for-notification
message: Message received in #${variable.channel} from @${variable.user}: ${variable.message}
as-user: false
condition:
setup: ${connection.my-slack-connection}
task: TASK_WRITE_MESSAGE