Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 protected virtual string GetSlotValue(AlexaRequestModel alexaRequestModel, string key)
 {
     return(alexaRequestModel.Request.Intent.Slots
            .SingleOrDefault(o => o.Key.Equals(key, StringComparison.InvariantCultureIgnoreCase)).Value ?? string.Empty);
 }