in src/main/java/software/aws/chatops_lex_api/resource/AccountVendor.java [108:161]
public Response vend(String payload) {
logger.info("JSON: " + payload);
Gson gson = new Gson();
@SuppressWarnings("rawtypes")
Map parameters = gson.fromJson(payload, Map.class);
String slackChannel = "";
String text = "";
Boolean IS_SLACK = Boolean.FALSE;
if (parameters.containsKey("type") && "url_verification".equals(parameters.get("type").toString())) {
// this is a slack url callback verification
Map<String, String> elems = new HashMap<>();
elems.put("challenge", parameters.get("challenge").toString());
return Response.status(200).entity(elems).build();
} else if (parameters.containsKey("type") && "event_callback".equals(parameters.get("type").toString())) {
logger.info("This is a slack message");
IS_SLACK = Boolean.TRUE;
if (!"message"
.equals(gson.fromJson(payload, JsonObject.class).getAsJsonObject("event").get("type").getAsString())) {
logger.info("I'm not interested in this event type from slack.");
return Response.status(200).build();
}
text = gson.fromJson(payload, JsonObject.class).getAsJsonObject("event").get("text").getAsString();
slackChannel = gson.fromJson(payload, JsonObject.class).getAsJsonObject("event").get("channel").getAsString();
try{
Util.getUserInfoSlack(parameters, text, payload, gson);
}catch(Exception e){
logger.info("We could not find the slack username info who is requesting a new account. Message: "+ e.getMessage());
return Response.status(200).entity("I'm taking a nap now. Please come back in 10 minutes.").build();
}
}
logger.info("UserName: " + parameters.get("UserEmail"));
if (!parameters.containsKey("UserEmail") || !parameters.containsKey("UserName") || !parameters.containsKey("UserLastname")) {
throw new WebApplicationException(Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity("JSON inside the body must have these elements: UserEmail, UserName and UserLastname")
.build());
}
Map<String, String> sessionAttributes = new HashMap<>();
sessionAttributes.putAll(parameters);
String returnMessage = Util.postLex(sessionAttributes, IS_SLACK, slackChannel);
Map<String, String> elems = new HashMap<>();
elems.put("initial-params", payload);
elems.put("response", returnMessage);
return Response.status(200).entity(elems).build();
}