example.jbot.slack.SlackSlashCommand Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jbot-example Show documentation
Show all versions of jbot-example Show documentation
A sample Slack/Facebook bot using JBot.
package example.jbot.slack;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import me.ramswaroop.jbot.core.slack.models.Attachment;
import me.ramswaroop.jbot.core.slack.models.RichMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Profile;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* Sample Slash Command Handler.
*
* @author ramswaroop
* @version 1.0.0, 20/06/2016
*/
@RestController
@Profile("slack")
public class SlackSlashCommand {
private static final Logger logger = LoggerFactory.getLogger(SlackSlashCommand.class);
/**
* The token you get while creating a new Slash Command. You
* should paste the token in application.properties file.
*/
@Value("${slashCommandToken}")
private String slackToken;
/**
* Slash Command handler. When a user types for example "/app help"
* then slack sends a POST request to this endpoint. So, this endpoint
* should match the url you set while creating the Slack Slash Command.
*
* @param token
* @param teamId
* @param teamDomain
* @param channelId
* @param channelName
* @param userId
* @param userName
* @param command
* @param text
* @param responseUrl
* @return
*/
@RequestMapping(value = "/slash-command",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public RichMessage onReceiveSlashCommand(@RequestParam("token") String token,
@RequestParam("team_id") String teamId,
@RequestParam("team_domain") String teamDomain,
@RequestParam("channel_id") String channelId,
@RequestParam("channel_name") String channelName,
@RequestParam("user_id") String userId,
@RequestParam("user_name") String userName,
@RequestParam("command") String command,
@RequestParam("text") String text,
@RequestParam("response_url") String responseUrl) {
// validate token
if (!token.equals(slackToken)) {
return new RichMessage("Sorry! You're not lucky enough to use our slack command.");
}
/** build response */
RichMessage richMessage = new RichMessage("The is Slash Commander!");
richMessage.setResponseType("in_channel");
// set attachments
Attachment[] attachments = new Attachment[1];
attachments[0] = new Attachment();
attachments[0].setText("I will perform all tasks for you.");
richMessage.setAttachments(attachments);
// For debugging purpose only
if (logger.isDebugEnabled()) {
try {
logger.debug("Reply (RichMessage): {}", new ObjectMapper().writeValueAsString(richMessage));
} catch (JsonProcessingException e) {
logger.debug("Error parsing RichMessage: ", e);
}
}
return richMessage.encodedMessage(); // don't forget to send the encoded message to Slack
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy