Work with a Slack User Client

Use these Apex classes to work with a Slack user client.

Provides access to the Slack Web API with a user token to perform tasks as the associated user, such as sending messages to a channel.

Get Started

Before putting the Slack User Client to use, it’s important to note that the Slack Bot Client is the preferred alternative to confirm your app will work as expected. Don't assume that a user token exists for each user that interacts with your app, even if your app configuration defines user scopes. If you decide to use a bot client, you can expect a bot token to be available in the workspace where your app is installed.

Why Does This Happen?

There are multiple reasons why your workspace doesn't contain a user token for certain users. One of the reasons is that users are associated between Slack and Salesforce through a process that doesn’t involve authorizing a Slack app.

Regardless of whether the app configuration includes the correct scopes, app developers can’t trust that a user mapping includes a token. For that reason, if you choose to use the User Client, verify that the user token exists. If it doesn't, write exceptions to trigger the OAuth flow between the Slack Application and the Salesforce Org.

Usage

Before you can work with a bot client, register the action and get access to a Slack context. To get access to a Slack client, use the Slack.App class.

Many Slack API methods require a token. UserClient automatically includes an appropriate token in your requests. For example, ChatPostMessageRequest calls Slack's chat.postMessage method, which requires a token along with a few other arguments. This token is automatically included when you use UserClient to make a request.

UserClient Methods

The following are methods for UserClient.

apiTest(req)

Signature

Parameters

req

Type: Slack.ApiTestRequest

Return Value

Type: Slack.ApiTestResponse

appsEventAuthorizationsList(req)

Signature

Parameters

req

Type: Slack.AppsEventAuthorizationsListRequest

Return Value

Type: Slack.AppsEventAuthorizationsListResponse

appsUninstall(req)

Signature

Parameters

req

Type: Slack.AppsUninstallRequest

Return Value

Type: Slack.AppsUninstallResponse

authRevoke(req)

Signature

Parameters

req

Type: Slack.AuthRevokeRequest

Return Value

Type: Slack.AuthRevokeResponse

authTeamsList(req)

Signature

Parameters

req

Type: Slack.AuthTeamsListRequest

Return Value

Type: Slack.AuthTeamsListResponse

authTest(req)

Signature

Parameters

req

Type: Slack.AuthTestRequest

Return Value

Type: Slack.AuthTestResponse

botsInfo(req)

Signature

Parameters

req

Type: Slack.BotsInfoRequest

Return Value

Type: Slack.BotsInfoResponse

callsAdd(req)

Signature

Parameters

req

Type: Slack.CallsAddRequest

Return Value

Type: Slack.CallsAddResponse

callsEnd(req)

Signature

Parameters

req

Type: Slack.CallsEndRequest

Return Value

Type: Slack.CallsEndResponse

callsInfo(req)

Signature

Parameters

req

Type: Slack.CallsInfoRequest

Return Value

Type: Slack.CallsInfoResponse

callsParticipantsAdd(req)

Signature

Parameters

req

Type: Slack.CallsParticipantsAddRequest

Return Value

Type: Slack.CallsParticipantsAddResponse

callsParticipantsRemove(req)

Signature

Parameters

req

Type: Slack.CallsParticipantsRemoveRequest

Return Value

Type: Slack.CallsParticipantsRemoveResponse

callsUpdate(req)

Signature

Parameters

req

Type: Slack.CallsUpdateRequest

Return Value

Type: Slack.CallsUpdateResponse

chatDelete(req)

Signature

Parameters

req

Type: Slack.ChatDeleteRequest

Return Value

Type: Slack.ChatDeleteResponse

chatDeleteScheduledMessage(req)

Signature

Parameters

req

Type: Slack.ChatDeleteScheduledMessageRequest

Return Value

Type: Slack.ChatDeleteScheduledMessageResponse

chatGetPermalink(req)

Signature

Parameters

req

Type: Slack.ChatGetPermalinkRequest

Return Value

Type: Slack.ChatGetPermalinkResponse

chatMeMessage(req)

Signature

Parameters

req

Type: Slack.ChatMeMessageRequest

Return Value

Type: Slack.ChatMeMessageResponse

chatPostEphemeral(req)

Signature

Parameters

req

Type: Slack.ChatPostEphemeralRequest

Return Value

Type: Slack.ChatPostEphemeralResponse

chatPostMessage(req)

Signature

Parameters

req

Type: Slack.ChatPostMessageRequest

Return Value

Type: Slack.ChatPostMessageResponse

chatScheduleMessage(req)

Signature

Parameters

req

Type: Slack.ChatScheduleMessageRequest

Return Value

Type: Slack.ChatScheduleMessageResponse

chatScheduledMessagesList(req)

Signature

Parameters

req

Type: Slack.ChatScheduledMessagesListRequest

Return Value

Type: Slack.ChatScheduledMessagesListResponse

chatUpdate(req)

Signature

Parameters

req

Type: Slack.ChatUpdateRequest

Return Value

Type: Slack.ChatUpdateResponse

conversationsArchive(req)

Signature

Parameters

req

Type: Slack.ConversationsArchiveRequest

Return Value

Type: Slack.ConversationsArchiveResponse

conversationsClose(req)

Signature

Parameters

req

Type: Slack.ConversationsCloseRequest

Return Value

Type: Slack.ConversationsCloseResponse

conversationsCreate(req)

Signature

Parameters

req

Type: Slack.ConversationsCreateRequest

Return Value

Type: Slack.ConversationsCreateResponse

conversationsHistory(req)

Signature

Parameters

req

Type: Slack.ConversationsHistoryRequest

Return Value

Type: Slack.ConversationsHistoryResponse

conversationsInfo(req)

Signature

Parameters

req

Type: Slack.ConversationsInfoRequest

Return Value

Type: Slack.ConversationsInfoResponse

conversationsInvite(req)

Signature

Parameters

req

Type: Slack.ConversationsInviteRequest

Return Value

Type: Slack.ConversationsInviteResponse

conversationsJoin(req)

Signature

Parameters

req

Type: Slack.ConversationsJoinRequest

Return Value

Type: Slack.ConversationsJoinResponse

conversationsKick(req)

Signature

Parameters

req

Type: Slack.ConversationsKickRequest

Return Value

Type: Slack.ConversationsKickResponse

conversationsLeave(req)

Signature

public Slack.ConversationsLeaveResponse conversationsLeave(Slack.ConversationsLeaveRequest req)

Parameters

req

Type: Slack.ConversationsLeaveRequest

Return Value

Type: Slack.ConversationsLeaveResponse

conversationsList(req)

Signature

Parameters

req

Type: Slack.ConversationsListRequest

Return Value

Type: Slack.ConversationsListResponse

conversationsMark(req)

Signature

Parameters

req

Type: Slack.ConversationsMarkRequest

Return Value

Type: Slack.ConversationsMarkResponse

conversationsMembers(req)

Signature

Parameters

req

Type: Slack.ConversationsMembersRequest

Return Value

Type: Slack.ConversationsMembersResponse

conversationsOpen(req)

Signature

Parameters

req

Type: Slack.ConversationsOpenRequest

Return Value

Type: Slack.ConversationsOpenResponse

conversationsRename(req)

Signature

Parameters

req

Type: Slack.ConversationsRenameRequest

Return Value

Type: Slack.ConversationsRenameResponse

conversationsReplies(req)

Signature

Parameters

req

Type: Slack.ConversationsRepliesRequest

Return Value

Type: Slack.ConversationsRepliesResponse

conversationsSetPurpose(req)

Signature

Parameters

req

Type: Slack.ConversationsSetPurposeRequest

Return Value

Type: Slack.ConversationsSetPurposeResponse

conversationsSetTopic(req)

Signature

Parameters

req

Type: Slack.ConversationsSetTopicRequest

Return Value

Type: Slack.ConversationsSetTopicResponse

conversationsUnarchive(req)

Signature

Parameters

req

Type: Slack.ConversationsUnarchiveRequest

Return Value

Type: Slack.ConversationsUnarchiveResponse

dndEndDnd(req)

Signature

Parameters

req

Type: Slack.DndEndDndRequest

Return Value

Type: Slack.DndEndDndResponse

dndEndSnooze(req)

Signature

Parameters

req

Type: Slack.DndEndSnoozeRequest

Return Value

Type: Slack.DndEndSnoozeResponse

dndInfo(req)

Signature

Parameters

req

Type: Slack.DndInfoRequest

Return Value

Type: Slack.DndInfoResponse

dndSetSnooze(req)

Signature

Parameters

req

Type: Slack.DndSetSnoozeRequest

Return Value

Type: Slack.DndSetSnoozeResponse

dndTeamInfo(req)

Signature

Parameters

req

Type: Slack.DndTeamInfoRequest

Return Value

Type: Slack.DndTeamInfoResponse

emojiList(req)

Signature

Parameters

req

Type: Slack.EmojiListRequest

Return Value

Type: Slack.EmojiListResponse

filesDelete(req)

Signature

Parameters

req

Type: Slack.FilesDeleteRequest

Return Value

Type: Slack.FilesDeleteResponse

filesInfo(req)

Signature

Parameters

req

Type: Slack.FilesInfoRequest

Return Value

Type: Slack.FilesInfoResponse

filesList(req)

Signature

Parameters

req

Type: Slack.FilesListRequest

Return Value

Type: Slack.FilesListResponse

filesRemoteInfo(req)

Signature

Parameters

req

Type: Slack.FilesRemoteInfoRequest

Return Value

Type: Slack.FilesRemoteInfoResponse

filesRemoteList(req)

Signature

Parameters

req

Type: Slack.FilesRemoteListRequest

Return Value

Type: Slack.FilesRemoteListResponse

filesRemoteShare(req)

Signature

Parameters

req

Type: Slack.FilesRemoteShareRequest

Return Value

Type: Slack.FilesRemoteShareResponse

filesRevokePublicURL(req)

Signature

Parameters

req

Type: Slack.FilesRevokePublicURLRequest

Return Value

Type: Slack.FilesRevokePublicURLResponse

filesSharedPublicURL(req)

Signature

Parameters

req

Type: Slack.FilesSharedPublicURLRequest

Return Value

Type: Slack.FilesSharedPublicURLResponse

filesUpload(req)

Signature

Parameters

req

Type: Slack.FilesUploadRequest

Return Value

Type: Slack.FilesUploadResponse

getErrors()

Signature

Return Value

Type: List<String>

migrationExchange(req)

Signature

Parameters

req

Type: Slack.MigrationExchangeRequest

Return Value

Type: Slack.MigrationExchangeResponse

pinsAdd(req)

Signature

Parameters

req

Type: Slack.PinsAddRequest

pinsList(req)

Signature

Parameters

req

Type: Slack.PinsListRequest

Return Value

Type: Slack.PinsListResponse

pinsRemove(req)

Signature

Parameters

req

Type: Slack.PinsRemoveRequest

Return Value

Type: Slack.PinsRemoveResponse

reactionsAdd(req)

Signature

Parameters

req

Type: Slack.ReactionsAddRequest

Return Value

Type: Slack.ReactionsAddResponse

reactionsGet(req)

Signature

Parameters

req

Type: Slack.ReactionsGetRequest

Return Value

Type: Slack.ReactionsGetResponse

reactionsList(req)

Signature

Parameters

req

Type: Slack.ReactionsListRequest

Return Value

Type: Slack.ReactionsListResponse

reactionsRemove(req)

Signature

Parameters

req

Type: Slack.ReactionsRemoveRequest

Return Value

Type: Slack.ReactionsRemoveResponse

remindersAdd(req)

Signature

Parameters

req

Type: Slack.RemindersAddRequest

Return Value

Type: Slack.RemindersAddResponse

remindersComplete(req)

Signature

Parameters

req

Type: Slack.RemindersCompleteRequest

Return Value

Type: Slack.RemindersCompleteResponse

remindersDelete(req)

Signature

Parameters

req

Type: Slack.RemindersDeleteRequest

Return Value

Type: Slack.RemindersDeleteResponse

remindersInfo(req)

Signature

Parameters

req

Type: Slack.RemindersInfoRequest

Return Value

Type: Slack.RemindersInfoResponse

remindersList(req)

Signature

Parameters

req

Type: Slack.RemindersListRequest

Return Value

Type: Slack.RemindersListResponse

searchAll(req)

Signature

Parameters

req

Type: Slack.SearchAllRequest

Return Value

Type: Slack.SearchAllResponse

searchFiles(req)

Signature

Parameters

req

Type: Slack.SearchFilesRequest

Return Value

Type: Slack.SearchFilesResponse

searchMessages(req)

Signature

Parameters

req

Type: Slack.SearchMessagesRequest

Return Value

Type: Slack.SearchMessagesResponse

starsAdd(req)

Signature

Parameters

req

Type: Slack.StarsAddRequest

Return Value

Type: Slack.StarsAddResponse

starsList(req)

Signature

Parameters

req

Type: Slack.StarsListRequest

Return Value

Type: Slack.StarsListResponse

starsRemove(req)

Signature

Parameters

req

Type: Slack.StarsRemoveRequest

Return Value

Type: Slack.StarsRemoveResponse

teamAccessLogs(req)

Signature

Parameters

req

Type: Slack.TeamAccessLogsRequest

Return Value

Type: Slack.TeamAccessLogsResponse

teamBillableInfo(req)

Signature

Parameters

req

Type: Slack.TeamBillableInfoRequest

Return Value

Type: Slack.TeamBillableInfoResponse

teamInfo(req)

Signature

Parameters

req

Type: Slack.TeamInfoRequest

Return Value

Type: Slack.TeamInfoResponse

teamIntegrationLogs(req)

Signature

Parameters

req

Type: Slack.TeamIntegrationLogsRequest

Return Value

Type: Slack.TeamIntegrationLogsResponse

teamProfileGet(req)

Signature

Parameters

req

Type: Slack.TeamProfileGetRequest

Return Value

Type: Slack.TeamProfileGetResponse

usergroupsCreate(req)

Signature

Parameters

req

Type: Slack.UsergroupsCreateRequest

Return Value

Type: Slack.UsergroupsCreateResponse

usergroupsDisable(req)

Signature

Parameters

req

Type: Slack.UsergroupsDisableRequest

Return Value

Type: Slack.UsergroupsDisableResponse

usergroupsEnable(req)

Signature

Parameters

req

Type: Slack.UsergroupsEnableRequest

Return Value

Type: Slack.UsergroupsEnableResponse

usergroupsList(req)

Signature

Return Value

Type: Slack.UsergroupsListResponse

usergroupsUpdate(req)

Signature

Parameters

req

Type: Slack.UsergroupsUpdateRequest

Return Value

Type: Slack.UsergroupsUpdateResponse

usergroupsUsersList(req)

Signature

Parameters

req

Type: Slack.UsergroupsUsersListRequest

Return Value

Type: Slack.UsergroupsUsersListResponse

usergroupsUsersUpdate(req)

Signature

Parameters

req

Type: Slack.UsergroupsUsersUpdateRequest

Return Value

Type: Slack.UsergroupsUsersUpdateResponse

usersConversations(req)

Signature

Parameters

req

Type: Slack.UsersConversationsRequest

Return Value

Type: Slack.UsersConversationsResponse

usersDeletePhoto(req)

Signature

Parameters

req

Type: Slack.UsersDeletePhotoRequest

Return Value

Type: Slack.UsersDeletePhotoResponse

usersGetPresence(req)

Signature

Parameters

req

Type: Slack.UsersGetPresenceRequest

Return Value

Type: Slack.UsersGetPresenceResponse

usersIdentity(req)

Signature

Parameters

req

Type: Slack.UsersIdentityRequest

Return Value

Type: Slack.UsersIdentityResponse

usersInfo(req)

Signature

Parameters

req

Type: Slack.UsersInfoRequest

Return Value

Type: Slack.UsersInfoResponse

usersList(req)

Signature

Parameters

req

Type: Slack.UsersListRequest

Return Value

Type: Slack.UsersListResponse

usersLookupByEmail(req)

Signature

Parameters

req

Type: Slack.UsersLookupByEmailRequest

Return Value

Type: Slack.UsersLookupByEmailResponse

usersProfileGet(req)

Signature

Parameters

req

Type: Slack.UsersProfileGetRequest

Return Value

Type: Slack.UsersProfileGetResponse

usersProfileSet(req)

Signature

Parameters

req

Type: Slack.UsersProfileSetRequest

Return Value

Type: Slack.UsersProfileSetResponse

usersSetActive(req)

Signature

Parameters

req

Type: Slack.UsersSetActiveRequest

Return Value

Type: Slack.UsersSetActiveResponse

usersSetPresence(req)

Signature

Parameters

req

Type: Slack.UsersSetPresenceRequest

Return Value

Type: Slack.UsersSetPresenceResponse

viewsOpen(req)

Signature

Parameters

req

Type: Slack.ViewsOpenRequest

Return Value

Type: Slack.ViewsOpenResponse

viewsPush(req)

Signature

Parameters

req

Type: Slack.ViewsPushRequest

Return Value

Type: Slack.ViewsPushResponse

viewsUpdate(req)

Signature

Parameters

req

Type: Slack.ViewsUpdateRequest

Return Value

Type: Slack.ViewsUpdateResponse