Greg Thompson commited on
Commit
2887020
1 Parent(s): a0fb1a2

Updated v2_conversation_manager to handle message_package from data-driven quiz

Browse files
mathtext_fastapi/v2_conversation_manager.py CHANGED
@@ -105,9 +105,8 @@ def manage_math_quiz_fsm(user_message, contact_uuid, type):
105
 
106
 
107
  def retrieve_microlesson_content(context_data, user_message, microlesson, contact_uuid):
108
- if context_data['local_state'] == 'addition-question-sequence' or \
109
- user_message == 'add' or \
110
- microlesson == 'addition':
111
  messages = manage_math_quiz_fsm(user_message, contact_uuid, 'addition')
112
 
113
  if user_message == 'exit':
@@ -121,11 +120,12 @@ def retrieve_microlesson_content(context_data, user_message, microlesson, contac
121
  'input_prompt': input_prompt,
122
  'state': state_label
123
  }
124
- elif context_data['local_state'] =='addition2' or microlesson == 'addition2':
125
  if user_message == 'harder' or user_message == 'easier':
126
  user_message = ''
127
  message_package = num_one.process_user_message(contact_uuid, user_message)
128
  message_package['state'] = 'addition2'
 
129
 
130
  elif context_data['local_state'] == 'subtraction-question-sequence' or \
131
  user_message == 'subtract' or \
@@ -187,11 +187,11 @@ def manage_conversation_response(data_json):
187
  """ Calls functions necessary to determine message and context data """
188
  print("V2 ENDPOINT")
189
 
190
- user_message = ''
191
  # whatsapp_id = data_json['author_id']
192
  message_data = data_json['message_data']
193
  context_data = data_json['context_data']
194
  whatsapp_id = message_data['author_id']
 
195
  print("MESSAGE DATA")
196
  print(message_data)
197
  print("CONTEXT DATA")
@@ -208,20 +208,24 @@ def manage_conversation_response(data_json):
208
  # }
209
  print("STEP 1")
210
  print(data_json)
 
211
  if not context_data['current_state']:
212
  context_data['current_state'] = 'N1.1.1_G1'
 
213
 
214
  curriculum_copy = copy.deepcopy(gsm.curriculum)
215
-
216
  print("STEP 2")
217
- if context_data['user_message'] == 'easier':
218
  curriculum_copy.left()
219
  next_state = curriculum_copy.state
220
- elif context_data['user_message'] == 'harder':
221
  curriculum_copy.right()
222
  next_state = curriculum_copy.state
223
  else:
224
  next_state = context_data['current_state']
 
 
225
 
226
  print("STEP 3")
227
  microlesson = lookup_local_state(next_state)
@@ -229,7 +233,7 @@ def manage_conversation_response(data_json):
229
  print("microlesson")
230
  print(microlesson)
231
 
232
- microlesson_content = retrieve_microlesson_content(context_data, context_data['user_message'], microlesson, context_data['contact_uuid'])
233
 
234
  headers = {
235
  'Authorization': f"Bearer {os.environ.get('TURN_AUTHENTICATION_TOKEN')}",
@@ -240,8 +244,8 @@ def manage_conversation_response(data_json):
240
  for message in microlesson_content['messages']:
241
  data = create_text_message(message, whatsapp_id)
242
 
243
- print("data")
244
- print(data)
245
 
246
  r = requests.post(
247
  f'https://whatsapp.turn.io/v1/messages',
@@ -256,10 +260,12 @@ def manage_conversation_response(data_json):
256
  "context": {
257
  "contact_id": whatsapp_id,
258
  "contact_uuid": context_data['contact_uuid'],
259
- "current_state": microlesson_content['state'],
 
260
  "bot_message": microlesson_content['input_prompt'],
261
  "user_message": user_message,
262
  "type": 'ask'
263
  }
264
  }
 
265
  return updated_context
 
105
 
106
 
107
  def retrieve_microlesson_content(context_data, user_message, microlesson, contact_uuid):
108
+ # TODO: This is being filtered by both the local and global states, so not changing
109
+ if microlesson == 'addition':
 
110
  messages = manage_math_quiz_fsm(user_message, contact_uuid, 'addition')
111
 
112
  if user_message == 'exit':
 
120
  'input_prompt': input_prompt,
121
  'state': state_label
122
  }
123
+ elif context_data['local_state'] == 'addition2' or microlesson == 'addition2':
124
  if user_message == 'harder' or user_message == 'easier':
125
  user_message = ''
126
  message_package = num_one.process_user_message(contact_uuid, user_message)
127
  message_package['state'] = 'addition2'
128
+ message_package['input_prompt'] = '?'
129
 
130
  elif context_data['local_state'] == 'subtraction-question-sequence' or \
131
  user_message == 'subtract' or \
 
187
  """ Calls functions necessary to determine message and context data """
188
  print("V2 ENDPOINT")
189
 
 
190
  # whatsapp_id = data_json['author_id']
191
  message_data = data_json['message_data']
192
  context_data = data_json['context_data']
193
  whatsapp_id = message_data['author_id']
194
+ user_message = message_data['message_body']
195
  print("MESSAGE DATA")
196
  print(message_data)
197
  print("CONTEXT DATA")
 
208
  # }
209
  print("STEP 1")
210
  print(data_json)
211
+ print(f"1: {context_data['current_state']}")
212
  if not context_data['current_state']:
213
  context_data['current_state'] = 'N1.1.1_G1'
214
+ print(f"2: {context_data['current_state']}")
215
 
216
  curriculum_copy = copy.deepcopy(gsm.curriculum)
217
+ curriculum_copy.state = context_data['current_state']
218
  print("STEP 2")
219
+ if user_message == 'easier':
220
  curriculum_copy.left()
221
  next_state = curriculum_copy.state
222
+ elif user_message == 'harder':
223
  curriculum_copy.right()
224
  next_state = curriculum_copy.state
225
  else:
226
  next_state = context_data['current_state']
227
+ print("next_state")
228
+ print(next_state)
229
 
230
  print("STEP 3")
231
  microlesson = lookup_local_state(next_state)
 
233
  print("microlesson")
234
  print(microlesson)
235
 
236
+ microlesson_content = retrieve_microlesson_content(context_data, user_message, microlesson, context_data['contact_uuid'])
237
 
238
  headers = {
239
  'Authorization': f"Bearer {os.environ.get('TURN_AUTHENTICATION_TOKEN')}",
 
244
  for message in microlesson_content['messages']:
245
  data = create_text_message(message, whatsapp_id)
246
 
247
+ # print("data")
248
+ # print(data)
249
 
250
  r = requests.post(
251
  f'https://whatsapp.turn.io/v1/messages',
 
260
  "context": {
261
  "contact_id": whatsapp_id,
262
  "contact_uuid": context_data['contact_uuid'],
263
+ "current_state": next_state,
264
+ "local_state": microlesson_content['state'],
265
  "bot_message": microlesson_content['input_prompt'],
266
  "user_message": user_message,
267
  "type": 'ask'
268
  }
269
  }
270
+ print(updated_context)
271
  return updated_context