in src/main/java/software/aws/chatops_lex_api/resource/Util.java [360:400]
public static String processResponse(final PostTextResponse response, final Boolean IS_SLACK, final String slackChannel){
String returnMessage = response.message();
if (response.dialogState() == DialogState.FULFILLED
|| response.dialogState() == DialogState.READY_FOR_FULFILLMENT) {
logger.info("END OF CONVERSATION");
returnMessage = "New account request created";
Map<String, String> accountRequest = new HashMap<>();
accountRequest.putAll(response.sessionAttributes());
accountRequest.putAll(response.slots());
accountRequest.put("UserId", UUID.randomUUID().toString());
accountRequest.remove("UserInput");
Util.putItemDynamo(accountRequest);
logger.info("Sending notification to this topic: " + AccountVendor.CONFIRM_TOPIC_ARN);
AccountVendor.snsClient.publish(PublishRequest.builder().subject("New AWS account request for your approval.")
.message(MessageFormat.format(
"{0} {1} has requested a new aws account with the following features: \nAccountType: {2}\nAccountOU: {3}\nRootEmail: {4}\n\n Please approve using the link below, otherwise this request will auto expire in 48 hours\n\n Approve here: {5}",
accountRequest.get("UserName"), accountRequest.get("UserLastname"),
accountRequest.get("AccountType"), accountRequest.get("AccountOU"),
accountRequest.get("RootEmail"),
AccountVendor.CALLBACK_URL + "/" + accountRequest.get("UserId")))
.topicArn(AccountVendor.CONFIRM_TOPIC_ARN).build());
} else {
logger.info("Slots: " + response.slots());
logger.info("Slots to elicit: " + response.slotToElicit());
logger.info("Current dialog state: " + response.dialogState().toString());
}
if (IS_SLACK) {
try {
logger.info("Posting message in Slack");
Util.postSlack(AccountVendor.SLACK_TOKEN, slackChannel, returnMessage);
} catch (Exception e) {
logger.info("ERROR: could not post message in slack. Messaage: " + e.getMessage());
}
}
return returnMessage;
}