using System.Text.Json; using Amazon.Lambda.Core; using Amazon.Lambda.LexEvents; namespace BlueprintBaseName._1; /// /// Base class for intent processors. /// public abstract class AbstractIntentProcessor : IIntentProcessor { internal const string MESSAGE_CONTENT_TYPE = "PlainText"; /// /// Main method for proccessing the lex event for the intent. /// /// /// /// public abstract LexResponse Process(LexEvent lexEvent, ILambdaContext context); protected string SerializeReservation(FlowerOrder order) { return JsonSerializer.Serialize(order, new JsonSerializerOptions { DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull }); } protected FlowerOrder DeserializeReservation(string json) { return JsonSerializer.Deserialize(json) ?? new FlowerOrder() ; } protected LexResponse Close(IDictionary sessionAttributes, string fulfillmentState, LexResponse.LexMessage message) { return new LexResponse { SessionAttributes = sessionAttributes, DialogAction = new LexResponse.LexDialogAction { Type = "Close", FulfillmentState = fulfillmentState, Message = message } }; } protected LexResponse Delegate(IDictionary sessionAttributes, IDictionary slots) { return new LexResponse { SessionAttributes = sessionAttributes, DialogAction = new LexResponse.LexDialogAction { Type = "Delegate", Slots = slots } }; } protected LexResponse ElicitSlot(IDictionary sessionAttributes, string intentName, IDictionary slots, string? slotToElicit, LexResponse.LexMessage? message) { return new LexResponse { SessionAttributes = sessionAttributes, DialogAction = new LexResponse.LexDialogAction { Type = "ElicitSlot", IntentName = intentName, Slots = slots, SlotToElicit = slotToElicit, Message = message } }; } protected LexResponse ConfirmIntent(IDictionary sessionAttributes, string intentName, IDictionary slots, LexResponse.LexMessage? message) { return new LexResponse { SessionAttributes = sessionAttributes, DialogAction = new LexResponse.LexDialogAction { Type = "ConfirmIntent", IntentName = intentName, Slots = slots, Message = message } }; } }