public AlexaResponseModel Post(AlexaRequestModel alexaRequestModel) { Thread.CurrentPrincipal = RequestContext.Principal; logger.Info($"Request.Type = {alexaRequestModel.Request.Type}"); AlexaResponseModel alexaResponseModel = null; switch (alexaRequestModel.Request.Type) { case "LaunchRequest": alexaResponseModel = this.intentProvider.LaunchRequest(alexaRequestModel); break; case "IntentRequest": alexaResponseModel = this.intentProvider.IntentRequest(alexaRequestModel); break; case "SessionEndedRequest": alexaResponseModel = this.intentProvider.SessionEndedRequest(alexaRequestModel); break; case "LeaveIntent": alexaResponseModel = this.intentProvider.SessionEndedRequest(alexaRequestModel); break; case "AMAZON.HelpIntent": alexaResponseModel = this.intentProvider.HelpRequest(alexaRequestModel); break; } return(alexaResponseModel); }
public AlexaResponseModel SessionEndedRequest(AlexaRequestModel alexaRequestModel) { var intentModel = BuildIntentModel(alexaRequestModel, BuildAlexaResponseModel()); intentModel.Output.Append(StaticText.SessionEndedRequest_Goodbye); intentModel.Response.Response.ShouldEndSession = true; BuildOutput(intentModel); FinalizeOutput(intentModel); return(intentModel.Response); }
public AlexaResponseModel LaunchRequest(AlexaRequestModel alexaRequestModel) { var alexaResponseModel = BuildAlexaResponseModel(); var intentModel = BuildIntentModel(alexaRequestModel, alexaResponseModel); intentModel.Output.Append(StaticText.LaunchIntent_Welcome); BuildOutput(intentModel); FinalizeOutput(intentModel); return(intentModel.Response); }
public static AlexaRequestDTO ToAlexaRequestDTO(AlexaRequestModel alexaRequestModel) { var alexaRequestDTO = new AlexaRequestDTO() { Timestamp = alexaRequestModel.Request.Timestamp, Intent = (alexaRequestModel.Request.Intent == null) ? "" : alexaRequestModel.Request.Intent.Name, RequestId = alexaRequestModel.Request.RequestId, SessionId = alexaRequestModel.Session.SessionId, UserId = alexaRequestModel.Session.User.UserId, IsNew = alexaRequestModel.Session.New, Version = alexaRequestModel.Version, Type = alexaRequestModel.Request.Type, Slots = alexaRequestModel.Request.Intent.Slots, DateCreated = DateTime.UtcNow }; return(alexaRequestDTO); }
private IntentModel BuildIntentModel(AlexaRequestModel alexaRequestModel, AlexaResponseModel alexaResponseModel) { var playerId = base.CustomPrincipal.PlayerId; var playerDto = base.PlayerRepository.GetPlayer(playerId); var mapDto = base.MapRepository.GetMap(playerDto.MapRefId); var cellDto = base.MapRepository.GetCell(playerDto.MapRefId, playerDto.LocationX, playerDto.LocationY); var intentModel = new IntentModel() { Request = alexaRequestModel, Response = alexaResponseModel, Player = playerDto, Map = mapDto, Cell = cellDto }; return(intentModel); }
public AlexaResponseModel HelpRequest(AlexaRequestModel alexaRequestModel) { var intentModel = BuildIntentModel(alexaRequestModel, BuildAlexaResponseModel()); var value = base.GetSlotValue(intentModel.Request, "item"); var output = new StringBuilder(); output.Append("The Realm Help Menu"); output.Append("Movement actions are Go, Move, or Travel followed by a direction such as north, south, east, or west."); output.Append("Item actions are Get, Drop, or Use followed by the item name."); output.Append("The following toggle are available to improve game play. "); output.Append("Toggle area will toggle the general area description. "); output.Append("Toggle directions will toggle announcements of the travel directions. "); output.Append("Toggle items will toggle the announcement of items on the ground. "); intentModel.Output.Append(output); FinalizeOutput(intentModel); return(intentModel.Response); }
public AlexaResponseModel IntentRequest(AlexaRequestModel alexaRequestModel) { var alexaResponseModel = BuildAlexaResponseModel(); var intentModel = BuildIntentModel(alexaRequestModel, alexaResponseModel); var intentClass = this.intentStrategyClasses .SingleOrDefault(o => o.GetField(StaticText.IntentType) .GetValue(null).ToString() == alexaRequestModel.Request.Intent.Name); if (intentClass != null) { var intentStrategyClass = (IIntent)Activator.CreateInstance(intentClass); intentStrategyClass.Execute(intentModel); } BuildOutput(intentModel); FinalizeOutput(intentModel); return(intentModel.Response); }
protected virtual string GetSlotValue(AlexaRequestModel alexaRequestModel, string key) { return(alexaRequestModel.Request.Intent.Slots .SingleOrDefault(o => o.Key.Equals(key, StringComparison.InvariantCultureIgnoreCase)).Value ?? string.Empty); }