Search code examples
javaslack

Is there a way to send a response to a Slack user via the Slack API Java SDK?


I am writing a Slack Bot in Java and I want to send messages to the user in response to slash commands.

This can be done by sending HTTP requests to the response_url parameter coming with the slash command request using a http client library.

I was not able to send a message to the response_url using the Java SDK for Slack because none of the methods of the methods client Slack allow me to set the response_url (chatPostEphemeral, chatPostMessage, ...)

Is there a way to use the Java SDK for Slack to respond to slash commands?


Solution

  • Have you tried sending a request to the response_url by using the WebClient class to send a POST request with the desired payload?

    something like:

    public class RespondToSlashCommand {
    
    public static void main(String[] args) {
        String responseUrl = "https://hooks.slack.com/commands/YourResponseUrlHere";
        String message = "This is a response to a slash command.";
    
        // Initialize the Slack API client
        Slack slack = Slack.getInstance();
        SlackHttpClient slackHttpClient = slack.getHttpClient();
    
        // Prepare the JSON payload
        String jsonPayload = String.format("{\"text\": \"%s\"}", message);
        RequestBody requestBody = RequestBody.create(jsonPayload, MediaType.parse("application/json"));
    
        try {
            // Send a POST request to the response_url
            Response response = slackHttpClient.postJsonBody(responseUrl, requestBody);
    
            if (response.isSuccessful()) {
                System.out.println("Response sent successfully!");
            } else {
                System.out.println("Failed to send response: " + response.message());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    }