Ejemplo n.º 1
0
        public string MaintainConversation(UserRequest userRequest)
        {
            Person       person       = PersonService.GetPersonByUserRequest(userRequest);
            Conversation conversation = ConversationService.GetActiveConversationForPerson(person);

            if (conversation == null)
            { // TODO clean up / look for reactive chatbot
                return("You do not have an active conversation");
            }

            AiResponseExtract response = AiService.ProcessUserRequest(conversation, userRequest);

            // Handle incoming Text
            Communication comm = CommunicationService.CreateIncomingCommunication(conversation, userRequest, response);

            conversation.Communications.Add(comm);

            // Change State (Message)
            DataClasses.Message nextMessage = MessageService.GetNextMessage(conversation, response);
            ConversationService.UpdateCurrentMessage(conversation, nextMessage, response);

            // Handle outbound Text
            Communication newComm = CommunicationService.CreateOutgoingCommunication(conversation, nextMessage);

            conversation.Communications.Add(newComm);

            Context.SaveChanges();
            return(nextMessage.Body);
        }