示例#1
0
def create_node_5(data):

    # Accept answer from create_reminder()
    thread_data = json.dumps({'schedule_period_input': data['trigger_text']})
    reminder = ReminderSession(data)
    reminder.append_thread_data(thread_data, thread_id='0', position_id='6')

    # Update kema_schedule with collected data over course of thread
    # Extract thread data
    _, thread_insert_data = reminder.extract_thread_data(thread_id='0')

    thread_insert_data_dict = {
        'trigger_message_sid': reminder.trigger_message_sid,
        'user_phone': reminder.user_phone,
        'trigger_text': thread_insert_data['trigger_text'],
        'task': thread_insert_data['task'],
        'barrier': thread_insert_data['barrier'],
        'possibility': thread_insert_data['possibility'],
        'schedule_deadline_input':
        thread_insert_data['schedule_deadline_input'],
        'schedule_period_input': thread_insert_data['schedule_period_input'],
    }

    insert_into_table(thread_insert_data_dict, 'kema_schedule')

    # Confirm Time
    msg = '''Ok! I'll remind you on those days'''
    reminder.send_msg(msg)

    # Clear path
    update_thread_position(reminder.trigger_message_sid, clear_thread=True)
示例#2
0
def delete_reminder_node_1(data):
    """Accept response for number of task to remove"""

    current_date = datetime.now()
    reminder = ReminderSession(data)
    trigger_text = data['trigger_text']

    if trigger_text.strip() == '0':
        # User exits delete thread
        return

    # Extract trigger text and match task number to delete
    _, thread_data = reminder.extract_thread_data(thread_id='2')
    task_list = thread_data['task_list']

    task_to_delete = None
    for (msg_sid, task, task_num) in task_list['task_list']:
        if str(task_num) == trigger_text.strip():
            task_to_delete = msg_sid

    if task_to_delete:
        # Delete task
        reminder.update_schedule(schedule_end=True)

        # Send confirmation text
        msg = """The task {} has been deleted""".format(task_to_delete)
        reminder.send_msg(msg)
    else:
        reminder.send_msg("""Ok no tasks were deleted""")

    # Clear thread
    update_thread_position(reminder.trigger_message_sid, clear_thread=True)
示例#3
0
def reminder_node_6(data):
    '''
    Node accepting response from user on whether to end or update schedule
    for multi-task thread
    '''

    # Read response
    current_date = datetime.now()
    reminder = ReminderSession(data)
    thread_id = '1'

    # Extract thread_data from kema_thread
    _, thread_data = reminder.extract_thread_data(thread_id=thread_id)

    if reminder.trigger_text == '1':
        # End schedule permanently
        reminder.update_schedule(schedule_end=True)

        msg = '''Ok I've ended reminders for this task.'''
        reminder.send_msg(msg)

    elif reminder.trigger_text == '2':
        # Update schedule_start to the next week
        strt_nxt_wk = current_date + timedelta(7) - timedelta(
            days=current_date.isoweekday() % 7)
        reminder.update_schedule(schedule_start=strt_nxt_wk)

        msg = '''Ok I've updated the schedule to start next week for this task.'''
        reminder.send_msg(msg)
    else:
        msg = '''Sorry I didn't understand that.'''
        reminder.send_msg(msg)

        # Clear path
        update_thread_position(reminder.trigger_message_sid, clear_thread=True)
        return

    # Send status check for next task
    if len(thread_data.get('tasks')) > 1:
        new_trigger_message_sid, thread_data = reminder.get_new_active_task(
            thread_data)
        if len(thread_data['tasks']) == 1:
            position_id = '1'
        else:
            position_id = '3'

        # Update kema_thread
        param_dict = {
            'trigger_message_sid': new_trigger_message_sid,
            'position_id': position_id,
            'thread_data': json.dumps(thread_data),
        }
        # Need to set thread_id in WHERE clause?
        reminder.set_table_values('kema_thread', param_dict)

        msg = "Have you completed {} yet? 1 if YES, 2 if NO.".format(
            active_data['task'])
        reminder.send_msg(msg)
示例#4
0
def reminder_node_3(data):
    """  Multi-task version of reminder_node_1 """

    # Read response
    current_date = datetime.now()
    reminder = ReminderSession(data)
    thread_id = '1'

    # Extract thread_data from kema_thread
    _, thread_data = reminder.extract_thread_data(thread_id=thread_id)

    # Determine actions based on response
    if reminder.trigger_text == '1' or reminder.trigger_text.lower() in (
            'yes'):
        active_task_data = thread_data['tasks'][
            0]  # TODO: set this to search for active task

        # Select past barrier
        barrier, possibility = reminder.extract_past_barrier()

        msg = '''That's great! You're that much closer to the goal you set of: {}. Would you like me to end this reminder permanently or start again next week?\n1. End permanently\n2.Restart for next week'''.format(
            possibility)
        reminder.send_msg(msg)

        # Update position in kema_thread db
        thread_id = '1'
        next_position_id = '6'
        update_thread_position(reminder.trigger_message_sid,
                               thread_id=thread_id,
                               position_id=next_position_id,
                               user_phone=reminder.user_phone)
        return

    elif reminder.trigger_text == '2' or reminder.trigger_text.lower() in (
            'no'):
        msg = '''What is keeping you from completing this task?'''
        reminder.send_msg(msg)
        thread_id = '1'
        next_position_id = '4'

        # Update position in kema_thread db
        update_thread_position(reminder.trigger_message_sid,
                               thread_id=thread_id,
                               position_id=next_position_id,
                               user_phone=reminder.user_phone)
        print('updated thread position to ', thread_id, next_position_id)
        return
    else:
        msg = ''' Sorry I didn't understand that. '''
        reminder.send_msg(msg)
        return
示例#5
0
def reminder_node_5(data):
    '''Terminal node accepting accepting response from user on completion of tasks
    Updates schedule or requests input on blocking emotions
    '''

    # Read response
    current_date = datetime.now()
    trigger_text = data['trigger_text']
    reminder = ReminderSession(data)

    # Determine actions based on response
    if reminder.trigger_text == '1' or reminder.trigger_text.lower() in (
            'yes'
    ) or reminder.trigger_text == '2' or reminder.trigger_text.lower() in (
            'no'):
        # Update kema_schedule database to delay schedule

        # Select past barrier
        barrier, possibility = reminder.extract_past_barrier()

        if reminder.trigger_text == '1' or reminder.trigger_text.lower() in (
                'yes'):
            # Update schedule_start to the next week
            strt_nxt_wk = current_date + timedelta(7) - timedelta(
                days=current_date.isoweekday() % 7)
            reminder.update_schedule(schedule_start=strt_nxt_wk)

            msg = '''That's great! I'll remind you next week. You're that much closer to the goal you set of: {}. You can do it!'''.format(
                possibility)
            reminder.send_msg(msg)

        elif reminder.trigger_text == '2' or reminder.trigger_text.lower() in (
                'no'):
            # End schedule permanently
            reminder.update_schedule(schedule_end=True)

            msg = '''That's great! You're that much closer to the goal you set of: {}. You can do it!'''.format(
                possibility)
            reminder.send_msg(msg)

    else:
        msg = ''' Sorry I didn't understand that. '''
        reminder.send_msg(msg)

    # Clear path
    update_thread_position(reminder.trigger_message_sid, clear_thread=True)
示例#6
0
def reminder_node_2(data):
    '''Terminal node to add a new barrier'''

    current_date = datetime.now()
    new_barrier = data['trigger_text']
    reminder = ReminderSession(data)

    # Select past barrier
    prev_barrier, possibility = reminder.extract_past_barrier()

    # Update kema_schedule with new barrier
    updt_barriers = ','.join([prev_barrier, new_barrier])
    reminder.set_table_values('kema_schedule', {'barrier': updt_barriers})

    # Clear path
    update_thread_position(reminder.trigger_message_sid, clear_thread=True)

    msg = ''' Got it! I'll remember that for the future. These are are the things that you said have blocked you from completing this task before: {}. Just remember your possibility:  {}. You can do it!'''.format(
        prev_barrier, possibility)
    reminder.send_msg(msg)
示例#7
0
def reminder_node_1(data):
    '''Terminal node accepting accepting response from user on completion of tasks
    Updates schedule or requests input on blocking emotions
    '''

    # Read response
    current_date = datetime.now()
    reminder = ReminderSession(data)

    # Determine actions based on response
    if reminder.trigger_text == '1' or reminder.trigger_text.lower() in (
            'yes'):
        # Update kema_schedule database to end schedule
        barrier, possibility = reminder.extract_past_barrier()

        msg = '''That's great! You're that much closer to the goal you set of: {}. Would you like me to end this reminder permanently or start again next week?\n1. End permanently\n2.Restart for next week'''.format(
            possibility)
        reminder.send_msg(msg)

        # Update position in kema_thread db
        thread_id = '1'
        next_position_id = '5'
        update_thread_position(reminder.trigger_message_sid,
                               thread_id=thread_id,
                               position_id=next_position_id,
                               user_phone=reminder.user_phone)
        return

    elif reminder.trigger_text == '2' or reminder.trigger_text.lower() in (
            'no'):
        msg = '''What is keeping you from completing this task?'''
        reminder.send_msg(msg)
        thread_id = '1'
        next_position_id = '2'

        # Update position in kema_thread db
        update_thread_position(reminder.trigger_message_sid,
                               thread_id=thread_id,
                               position_id=next_position_id,
                               user_phone=reminder.user_phone)
        return
    else:
        msg = ''' Sorry I didn't understand that. '''
        reminder.send_msg(msg)

    # Clear path
    update_thread_position(reminder.trigger_message_sid, clear_thread=True)