Spaces:
Build error
Build error
Greg Thompson
commited on
Commit
•
b71b7ec
1
Parent(s):
284b919
Fix bugs and get pickled object to save to database
Browse files- mathtext_fastapi/conversation_manager.py +27 -10
- requirements.txt +1 -0
- scripts/make_request.py +14 -14
mathtext_fastapi/conversation_manager.py
CHANGED
@@ -1,6 +1,9 @@
|
|
1 |
-
import
|
|
|
2 |
import os
|
3 |
import json
|
|
|
|
|
4 |
import random
|
5 |
import requests
|
6 |
|
@@ -97,6 +100,12 @@ def create_interactive_message(message_text, button_options, whatsapp_id):
|
|
97 |
return data
|
98 |
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
def return_next_conversational_state(context_data, user_message, contact_uuid):
|
101 |
""" Evaluates the conversation's current state to determine the next state
|
102 |
|
@@ -117,23 +126,30 @@ def return_next_conversational_state(context_data, user_message, contact_uuid):
|
|
117 |
elif user_message == 'add':
|
118 |
|
119 |
fsm_check = SUPA.table('state_machines').select("*").eq(
|
120 |
-
"
|
121 |
contact_uuid
|
122 |
).execute()
|
123 |
|
124 |
if fsm_check.data == []:
|
125 |
math_quiz_state_machine = MathQuizFSM()
|
126 |
messages = [math_quiz_state_machine.response_text]
|
127 |
-
|
128 |
|
129 |
-
|
130 |
-
|
|
|
|
|
131 |
else:
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
137 |
"contact_uuid", contact_uuid
|
138 |
).execute()
|
139 |
|
@@ -202,6 +218,7 @@ def manage_conversation_response(data_json):
|
|
202 |
contact_uuid
|
203 |
)
|
204 |
|
|
|
205 |
headers = {
|
206 |
'Authorization': f"Bearer {os.environ.get('TURN_AUTHENTICATION_TOKEN')}",
|
207 |
'Content-Type': 'application/json'
|
|
|
1 |
+
import base64
|
2 |
+
import dill
|
3 |
import os
|
4 |
import json
|
5 |
+
import jsonpickle
|
6 |
+
import pickle
|
7 |
import random
|
8 |
import requests
|
9 |
|
|
|
100 |
return data
|
101 |
|
102 |
|
103 |
+
def pickle_and_encode_state_machine(state_machine):
|
104 |
+
dump = pickle.dumps(state_machine)
|
105 |
+
dump_encoded = base64.b64encode(dump).decode('utf-8')
|
106 |
+
return dump_encoded
|
107 |
+
|
108 |
+
|
109 |
def return_next_conversational_state(context_data, user_message, contact_uuid):
|
110 |
""" Evaluates the conversation's current state to determine the next state
|
111 |
|
|
|
126 |
elif user_message == 'add':
|
127 |
|
128 |
fsm_check = SUPA.table('state_machines').select("*").eq(
|
129 |
+
"contact_uuid",
|
130 |
contact_uuid
|
131 |
).execute()
|
132 |
|
133 |
if fsm_check.data == []:
|
134 |
math_quiz_state_machine = MathQuizFSM()
|
135 |
messages = [math_quiz_state_machine.response_text]
|
136 |
+
dump_encoded = pickle_and_encode_state_machine(math_quiz_state_machine)
|
137 |
|
138 |
+
SUPA.table('state_machines').insert({
|
139 |
+
'contact_uuid': contact_uuid,
|
140 |
+
'addition3': dump_encoded
|
141 |
+
}).execute()
|
142 |
else:
|
143 |
+
undump_encoded = base64.b64decode(
|
144 |
+
fsm_check.data[0]['addition3'].encode('utf-8')
|
145 |
+
)
|
146 |
+
math_quiz_state_machine = pickle.loads(undump_encoded)
|
147 |
+
math_quiz_state_machine.student_answer == user_message
|
148 |
+
messages = math_quiz_state_machine.validate_answer()
|
149 |
+
dump_encoded = pickle_and_encode_state_machine(math_quiz_state_machine)
|
150 |
+
SUPA.table('state_machines').update({
|
151 |
+
'addition3': dump_encoded
|
152 |
+
}).eq(
|
153 |
"contact_uuid", contact_uuid
|
154 |
).execute()
|
155 |
|
|
|
218 |
contact_uuid
|
219 |
)
|
220 |
|
221 |
+
|
222 |
headers = {
|
223 |
'Authorization': f"Bearer {os.environ.get('TURN_AUTHENTICATION_TOKEN')}",
|
224 |
'Content-Type': 'application/json'
|
requirements.txt
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
dill
|
|
|
2 |
mathtext @ git+https://gitlab.com/tangibleai/community/mathtext@main
|
3 |
fastapi==0.74.*
|
4 |
pydantic==1.10.*
|
|
|
1 |
dill
|
2 |
+
jsonpickle
|
3 |
mathtext @ git+https://gitlab.com/tangibleai/community/mathtext@main
|
4 |
fastapi==0.74.*
|
5 |
pydantic==1.10.*
|
scripts/make_request.py
CHANGED
@@ -46,20 +46,20 @@ def run_simulated_request(endpoint, sample_answer, context=None):
|
|
46 |
print(request)
|
47 |
|
48 |
|
49 |
-
run_simulated_request('sentiment-analysis', 'I reject it')
|
50 |
-
run_simulated_request('text2int', 'seven thousand nine hundred fifty seven')
|
51 |
-
run_simulated_request('nlu', 'test message')
|
52 |
-
run_simulated_request('nlu', 'eight')
|
53 |
-
run_simulated_request('nlu', 'eight, nine, ten')
|
54 |
-
run_simulated_request('nlu', '8, 9, 10')
|
55 |
-
run_simulated_request('nlu', '8')
|
56 |
-
run_simulated_request('nlu', "I don't know")
|
57 |
-
run_simulated_request('nlu', 'Today is a wonderful day')
|
58 |
-
run_simulated_request('nlu', 'IDK 5?')
|
59 |
-
run_simulated_request('manager', '')
|
60 |
run_simulated_request('manager', 'add')
|
61 |
-
run_simulated_request('manager', 'subtract')
|
62 |
-
run_simulated_request('manager', 'exit')
|
63 |
|
64 |
|
65 |
# Example of simplified object received from Turn.io stacks
|
@@ -72,7 +72,7 @@ simplified_json = {
|
|
72 |
"bot_message": "What is 2+2?",
|
73 |
"user_message": "eight",
|
74 |
"type": "ask"
|
75 |
-
},
|
76 |
"message_data": {
|
77 |
"author_id": "+57787919091",
|
78 |
"author_type": "OWNER",
|
|
|
46 |
print(request)
|
47 |
|
48 |
|
49 |
+
# run_simulated_request('sentiment-analysis', 'I reject it')
|
50 |
+
# run_simulated_request('text2int', 'seven thousand nine hundred fifty seven')
|
51 |
+
# run_simulated_request('nlu', 'test message')
|
52 |
+
# run_simulated_request('nlu', 'eight')
|
53 |
+
# run_simulated_request('nlu', 'eight, nine, ten')
|
54 |
+
# run_simulated_request('nlu', '8, 9, 10')
|
55 |
+
# run_simulated_request('nlu', '8')
|
56 |
+
# run_simulated_request('nlu', "I don't know")
|
57 |
+
# run_simulated_request('nlu', 'Today is a wonderful day')
|
58 |
+
# run_simulated_request('nlu', 'IDK 5?')
|
59 |
+
# run_simulated_request('manager', '')
|
60 |
run_simulated_request('manager', 'add')
|
61 |
+
# run_simulated_request('manager', 'subtract')
|
62 |
+
# run_simulated_request('manager', 'exit')
|
63 |
|
64 |
|
65 |
# Example of simplified object received from Turn.io stacks
|
|
|
72 |
"bot_message": "What is 2+2?",
|
73 |
"user_message": "eight",
|
74 |
"type": "ask"
|
75 |
+
},
|
76 |
"message_data": {
|
77 |
"author_id": "+57787919091",
|
78 |
"author_type": "OWNER",
|