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); }
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)); }