Skip to main content
Contact our team to know more about our services
select webform
By submitting, you acknowledge that you've read and agree to our privacy policies, and Opcito may use the information provided for business purposes.
Become a part of our team
select webform
One file only.
1.5 GB limit.
Allowed types: gif, jpg, jpeg, png, bmp, eps, tif, pict, psd, txt, rtf, html, odf, pdf, doc, docx, ppt, pptx, xls, xlsx, xml, avi, mov, mp3, mp4, ogg, wav, bz2, dmg, gz, jar, rar, sit, svg, tar, zip.
By submitting, you acknowledge that you've read and agree to our privacy policies, and Opcito may use the information provided for business purposes.
Slack API integration for efficient Java app communication
07 Sep 2023

Slack is a popular and versatile collaboration platform that has revolutionized the way organizations communicate and work together. It is widely used for collaboration in the business world, offering a robust set of functions for real-time messaging, file sharing, project management, and more. The name, "Slack," is an acronym for "Searchable Log of All Conversation and Knowledge," which highlights its primary focus on organizing and making information easily accessible to users. Because it excels in integration with other software, its presence isn't limited to a single domain. It boosts productivity and collaboration across various platforms like Windows, Linux, MacOS, Android, and iOS. Originally crafted for professional and organizational communication, Slack today has evolved into a versatile community platform.

One of Slack's extended capabilities is allowing the creation of channels tailored for specific members, ensuring timely notifications for designated events, or serving as dynamic group conversations. Slack's automation offers robust APIs for different applications. These APIs are used for creating chatbots that publish updates into any chosen channel. In this blog, I will explain the process of publishing updates to a Slack channel from Java.

Steps to configure a Slack developer account

  • Create a new app

Start by creating a new app in your developer account. This is where all the configurations will reside. You can find the necessary configurations here - https://api.Slack.com/apps.


Slack API integration Java Opcito 1

Slack API integration Java Opcito 2

After creating the new app, set up the features and functionalities as per your preference.

Slack API integration Java Opcito 3

  • Enable incoming webhooks

To activate this, click the radio button from the menu, as shown below:

Slack API integration Java Opcito 4

Incoming webhooks offer a straightforward way to relay messages from external sources directly into Slack. This process is facilitated through standard HTTP requests accompanied by a JSON payload. This payload includes the message, along with several additional optional information details.

Here, a new webhook URL is generated that can be used to post messages.

Slack API integration Java Opcito 5

  • Configure bots

Bots are used to interact with your app through channels and conversations. Assign display and default names for the bot.

Slack API integration Java Opcito 6

Also, turn on the Messages Tab radio button.

Slack API integration Java Opcito 7

  • OAuth & Permissions setup

Locate and enter the designated panel for scopes setup. Here, set up scopes for both users and bots within the panel. From the menu on the left, choose 'OAuth & Permissions' for adding scopes. 

Assign the scope as per requirements. For messaging, add the following scopes - channels:read, chat:write, groups:read, im:read, im:write, mpim:write, users:read, incoming-webhook.

Slack API integration Java Opcito 8

Slack API integration Java Opcito 9

The description of extra scopes is available here: https://api.Slack.com/scopes.

After adding the features and functionalities, install the setting to the workspace. This will generate the User OAuth Token and Bot User OAuth Token. Keep these in a backup location as they will later be used as a Bearer token while hitting APIs.

Slack API integration Java Opcito 10


The User OAuth Token will be used to send messages as a user, while the Bot User OAuth Token will be used to send messages as a bot/app.

General purpose APIs to get details and send messages

Here are some simple API commands:

  • API to get all the users: This API lists all the users in the workspace. As a response, it includes the user's ID, which will be further helpful while sending messages from the API.
    Curl command: curl --location --request GET 'https://Slack.com/api/users.list' --header 'Authorization: Bearer xoxp-123456789-123456789-123456789-123456789'
  • API to get all the channels:  This API returns a list of all the channels from the workspace with their ID.
    Curl command: curl --location --request GET 'https://Slack.com/api/conversations.list' –header 'Authorization: Bearer xoxp-123456789-123456789-123456789-123456789'
  • API to send message: Messages can be sent as both - direct messages or channel messages using this API. If a message needs to be sent to a channel, pass the channel name returned from the second API as a body parameter channel. If the message needs to be sent as DM, pass the user ID returned from the first API as a body parameter channel. The body text contains the message that needs to be sent.
    Curl command: curl --location --request POST 'https://Slack.com/api/chat.postMessage' \
    --header 'Authorization: Bearer xoxp-123456789-123456789-123456789-123456789' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "channel": "api-integration",
        "text": "direct message from postman"
    }'

Java integration to send Slack messages

Sometimes, there may be a requirement to publish some informative messages or error messages from a Java application directly to Slack channels. This can be achieved using the webhook URL and jslack maven dependency available.

In the Java application, add the Maven dependency for jslack in pom.xml file.

<dependency>
    <groupId>com.github.seratch</groupId>
    <artifactId>jSlack</artifactId>
    <version>3.4.2</version>
</dependency>

This dependency will enable different classes to work with while interacting with Slack from Java.

Here is a sample function to send a message to a channel from Java:

public void sendMessageToSlack(String message) throws IOException {
    String webhookUrl = "https://hooks.Slack.com/services/123456/123456/123456";
    String channel = "api-integration";
    Payload payload = Payload.builder().channel(channel).text(message).build();
    Slack.getInstance().send(webhookUrl, payload);
}

Start integrating today

To sum it up, Slack's API integration is a game-changer in the world of collaboration and communication. I encourage you to dive into the world of Slack API integration because it can significantly enhance your team's communication and productivity. Go ahead, give it a try, and happy coding!

Subscribe to our feed

select webform