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