Example #1
0
        public override async Task <ChatResponse> HandleReceiverRequest(ActionRequest action, ServerCallContext context)
        {
            _logger.LogInformation("receiverService.HandleReceiverRequest()");

            ChatSession chatSession = MapToChatSession(action.Request);

            var currentState = _logic.GetLogic(chatSession.State);

            if (currentState == null)
            {
                context.Status = new Status(StatusCode.Internal, $"State {chatSession.State.ToString()} is not found in receiver logic controller");
                return(null);
            }

            var response = new ChatResponse()
            {
                Session = MapToChatRequest(chatSession),
                Success = true
            };

            switch (action.Message)
            {
            case "/back":
                response.Message = await currentState.Back(chatSession);

                break;

            case "/menu":
                response.Message = await currentState.Menu(chatSession);

                break;

            default:
                var actionResult = await currentState.Act(action.Message, chatSession);

                response = ResponseModelToChatResponse(actionResult);
                break;
            }

            response.Session = MapToChatRequest(chatSession);
            context.Status   = new Status(StatusCode.OK, $"Success action");
            return(response);
        }
Example #2
0
        public async Task <ActionResult <ResponseModel> > HandleLogicAsync(string message, [FromBody] ChatSession session)
        {
            if (string.IsNullOrEmpty(message) || session == null)
            {
                return(BadRequest());
            }

            var currentState = _logic.GetLogic(session.State);

            if (currentState == null)
            {
                return(BadRequest());
            }

            var result = new ResponseModel()
            {
                Session = session
            };

            switch (message)
            {
            case "/back":
                result.Message = await currentState.Back(session);

                break;

            case "/menu":
                result.Message = await currentState.Menu(session);

                break;

            default:
                result = await currentState.Act(message, session);

                break;
            }

            return(Ok(result));
        }