Spaces:
Build error
Build error
Merge branch 'feature-global-state' into 'feature-wormhole'
Browse filesUpdate the conversation manager's inputs from and outputs to Turn.io
See merge request tangibleai/community/mathtext-fastapi!15
mathtext_fastapi/v2_conversation_manager.py
CHANGED
|
@@ -153,21 +153,53 @@ def lookup_local_state(next_state):
|
|
| 153 |
return microlesson
|
| 154 |
|
| 155 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
def manage_conversation_response(data_json):
|
| 157 |
""" Calls functions necessary to determine message and context data """
|
| 158 |
print("V2 ENDPOINT")
|
| 159 |
|
| 160 |
user_message = ''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
|
| 162 |
# nlu_response = evaluate_message_with_nlu(message_data)
|
| 163 |
|
| 164 |
-
context_data = {
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
}
|
| 170 |
print("STEP 1")
|
|
|
|
| 171 |
if not context_data['current_state']:
|
| 172 |
context_data['current_state'] = 'N1.1.1_G1'
|
| 173 |
|
|
@@ -191,6 +223,35 @@ def manage_conversation_response(data_json):
|
|
| 191 |
|
| 192 |
microlesson_content = retrieve_microlesson_content(context_data, context_data['user_message'], microlesson, context_data['contact_uuid'])
|
| 193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
print("STEP 4")
|
| 195 |
# combine microlesson content and context_data object
|
| 196 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
return microlesson
|
| 154 |
|
| 155 |
|
| 156 |
+
def create_text_message(message_text, whatsapp_id):
|
| 157 |
+
""" Fills a template with input values to send a text message to Whatsapp
|
| 158 |
+
|
| 159 |
+
Inputs
|
| 160 |
+
- message_text: str - the content that the message should display
|
| 161 |
+
- whatsapp_id: str - the message recipient's phone number
|
| 162 |
+
|
| 163 |
+
Outputs
|
| 164 |
+
- message_data: dict - a preformatted template filled with inputs
|
| 165 |
+
"""
|
| 166 |
+
message_data = {
|
| 167 |
+
"preview_url": False,
|
| 168 |
+
"recipient_type": "individual",
|
| 169 |
+
"to": whatsapp_id,
|
| 170 |
+
"type": "text",
|
| 171 |
+
"text": {
|
| 172 |
+
"body": message_text
|
| 173 |
+
}
|
| 174 |
+
}
|
| 175 |
+
return message_data
|
| 176 |
+
|
| 177 |
+
|
| 178 |
def manage_conversation_response(data_json):
|
| 179 |
""" Calls functions necessary to determine message and context data """
|
| 180 |
print("V2 ENDPOINT")
|
| 181 |
|
| 182 |
user_message = ''
|
| 183 |
+
# whatsapp_id = data_json['author_id']
|
| 184 |
+
message_data = data_json['message_data']
|
| 185 |
+
context_data = data_json['context_data']
|
| 186 |
+
whatsapp_id = message_data['author_id']
|
| 187 |
+
print("MESSAGE DATA")
|
| 188 |
+
print(message_data)
|
| 189 |
+
print("CONTEXT DATA")
|
| 190 |
+
print(context_data)
|
| 191 |
+
print("=================")
|
| 192 |
|
| 193 |
# nlu_response = evaluate_message_with_nlu(message_data)
|
| 194 |
|
| 195 |
+
# context_data = {
|
| 196 |
+
# 'contact_uuid': 'abcdefg',
|
| 197 |
+
# 'current_state': 'N1.1.1_G2',
|
| 198 |
+
# 'user_message': '1',
|
| 199 |
+
# 'local_state': ''
|
| 200 |
+
# }
|
| 201 |
print("STEP 1")
|
| 202 |
+
print(data_json)
|
| 203 |
if not context_data['current_state']:
|
| 204 |
context_data['current_state'] = 'N1.1.1_G1'
|
| 205 |
|
|
|
|
| 223 |
|
| 224 |
microlesson_content = retrieve_microlesson_content(context_data, context_data['user_message'], microlesson, context_data['contact_uuid'])
|
| 225 |
|
| 226 |
+
headers = {
|
| 227 |
+
'Authorization': f"Bearer {os.environ.get('TURN_AUTHENTICATION_TOKEN')}",
|
| 228 |
+
'Content-Type': 'application/json'
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
# Send all messages for the current state before a user input prompt (text/button input request)
|
| 232 |
+
for message in microlesson_content['messages']:
|
| 233 |
+
data = create_text_message(message, whatsapp_id)
|
| 234 |
+
|
| 235 |
+
print("data")
|
| 236 |
+
print(data)
|
| 237 |
+
|
| 238 |
+
r = requests.post(
|
| 239 |
+
f'https://whatsapp.turn.io/v1/messages',
|
| 240 |
+
data=json.dumps(data),
|
| 241 |
+
headers=headers
|
| 242 |
+
)
|
| 243 |
+
|
| 244 |
print("STEP 4")
|
| 245 |
# combine microlesson content and context_data object
|
| 246 |
+
|
| 247 |
+
updated_context = {
|
| 248 |
+
"context": {
|
| 249 |
+
"contact_id": whatsapp_id,
|
| 250 |
+
"contact_uuid": context_data['contact_uuid'],
|
| 251 |
+
"state": microlesson_content['state'],
|
| 252 |
+
"bot_message": microlesson_content['input_prompt'],
|
| 253 |
+
"user_message": user_message,
|
| 254 |
+
"type": 'ask'
|
| 255 |
+
}
|
| 256 |
+
}
|
| 257 |
+
return updated_context
|
scripts/make_request.py
CHANGED
|
@@ -22,7 +22,11 @@ def add_message_text_to_sample_object(message_text):
|
|
| 22 |
message_data = '{' + f'"author_id": "+57787919091", "author_type": "OWNER", "contact_uuid": "j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09", "message_body": "{message_text}", "message_direction": "inbound", "message_id": "4kl209sd0-a7b8-2hj3-8563-3hu4a89b32", "message_inserted_at": "2023-01-10T02:37:28.477940Z", "message_updated_at": "2023-01-10T02:37:28.487319Z"' + '}'
|
| 23 |
# context_data = '{' + '"user":"", "state":"addition-question-sequence", "bot_message":"", "user_message":"{message_text}"' + '}'
|
| 24 |
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
# context_data = '{' + '"user":"", "state":"addition-question-sequence", "bot_message":"", "user_message":"{message_text}","text": "What is 2+3?","question_numbers": [4,3],"right_answer": 7,"number_correct": 2, "number_incorrect": 0, "hints_used": 0, "level": "easy"' + '}'
|
| 28 |
|
|
@@ -76,6 +80,7 @@ def run_simulated_request(endpoint, sample_answer, context=None):
|
|
| 76 |
# run_simulated_request('nlu', 'Today is a wonderful day')
|
| 77 |
# run_simulated_request('nlu', 'IDK 5?')
|
| 78 |
run_simulated_request('v2/manager', '')
|
|
|
|
| 79 |
# run_simulated_request('manager', '')
|
| 80 |
# run_simulated_request('manager', 'add')
|
| 81 |
# run_simulated_request('manager', 'subtract')
|
|
|
|
| 22 |
message_data = '{' + f'"author_id": "+57787919091", "author_type": "OWNER", "contact_uuid": "j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09", "message_body": "{message_text}", "message_direction": "inbound", "message_id": "4kl209sd0-a7b8-2hj3-8563-3hu4a89b32", "message_inserted_at": "2023-01-10T02:37:28.477940Z", "message_updated_at": "2023-01-10T02:37:28.487319Z"' + '}'
|
| 23 |
# context_data = '{' + '"user":"", "state":"addition-question-sequence", "bot_message":"", "user_message":"{message_text}"' + '}'
|
| 24 |
|
| 25 |
+
# V1
|
| 26 |
+
# context_data = '{' + '"user":"", "state":"start-conversation", "bot_message":"", "user_message":"{message_text}"' + '}'
|
| 27 |
+
|
| 28 |
+
#V2
|
| 29 |
+
context_data = '{' + '"contact_uuid": "j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09", "current_state":"", "local_state": "", "user_message":""' + '}'
|
| 30 |
|
| 31 |
# context_data = '{' + '"user":"", "state":"addition-question-sequence", "bot_message":"", "user_message":"{message_text}","text": "What is 2+3?","question_numbers": [4,3],"right_answer": 7,"number_correct": 2, "number_incorrect": 0, "hints_used": 0, "level": "easy"' + '}'
|
| 32 |
|
|
|
|
| 80 |
# run_simulated_request('nlu', 'Today is a wonderful day')
|
| 81 |
# run_simulated_request('nlu', 'IDK 5?')
|
| 82 |
run_simulated_request('v2/manager', '')
|
| 83 |
+
run_simulated_request('v2/manager', '5')
|
| 84 |
# run_simulated_request('manager', '')
|
| 85 |
# run_simulated_request('manager', 'add')
|
| 86 |
# run_simulated_request('manager', 'subtract')
|