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);
        }
Ejemplo n.º 2
0
        public void StartConversation(ConversationStarter conversationStarter) // TODO put this here?
        {
            Person       person       = PersonService.GetPersonByPhoneNumber(conversationStarter.PhoneNumber);
            Conversation conversation = ConversationService.CreateConversation(conversationStarter, person);

            DataClasses.Message firstMessage = ScriptService.GetFirstMessageFromScript(conversation.Script);

            conversation.CurrentMessage = firstMessage;

            Communication text = CommunicationService.CreateOutgoingCommunication(conversation, firstMessage);

            conversation.Communications.Add(text);
            Context.SaveChanges();

            MessagingService.SendMessage(person.PhoneNumber, firstMessage.Body);
        }