2727# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2828
2929from klatchat_utils .database_utils .mongo_utils .queries import mongo_queries
30- from klatchat_utils .database_utils .mongo_utils .queries .dao .prompts import PromptStates
3130from klatchat_utils .database_utils .mongo_utils .queries .wrapper import (
3231 MongoDocumentsAPI ,
3332)
3837from chat_server .server_config import server_config
3938from chat_server .utils .enums import UserRoles
4039from chat_server .utils .services .popularity_counter import PopularityCounter
41- from pydantic import ValidationError
4240from neon_data_models .models .api .klat .socketio import UserMessage
4341
4442
4543@sio .event
4644async def user_message (sid , data ):
4745 """
4846 SIO event fired on new user message in chat
49- :param sid: client session id
47+ :param sid: client session id (NOT shout_id which is in data['sid'])
5048 :param data: user message data
5149 """
5250 LOG .debug (f"Received user message data: { data } " )
53- # TODO: Identify purpose of sid and data['sid'] (they do not appear to ever match)
5451 try :
55- try :
56- data .setdefault ("sid" , "" ) # TODO: This is patching something...
57- message = UserMessage (** data )
58- except ValidationError as e :
59- LOG .error (
60- e
61- ) # TODO: This should be an error after the primary sources of errors are fixed
62- data .pop ("user_id" , None ) # remove user_id if present
63- data .pop ("userID" , None ) # remove userID if present
64- message = UserMessage (** data ) # try again
52+ data .setdefault ("sid" , "" ) # TODO: This is patching clients that exclude `sid`
53+ message = UserMessage (** data )
6554 is_bot = message .is_bot == "1"
6655 is_proctor = message .username .startswith ("proctor" )
6756 LOG .info (f"{ message .username } is_proctor={ is_proctor } |is_bot={ is_bot } " )
@@ -95,7 +84,7 @@ async def user_message(sid, data):
9584 await emit_error (sids = [sid ], message = msg )
9685 return
9786
98- audio_path = f"{ message .message_id } _audio.wav"
87+ audio_path = f"{ message .sid } _audio.wav"
9988 try :
10089 if message .is_audio == "1" :
10190 message_text = message .message_body .split ("," )[- 1 ]
@@ -127,10 +116,13 @@ async def user_message(sid, data):
127116
128117 mongo_queries .add_shout (data = new_shout_data )
129118 if not message .is_announcement and message .prompt_id is not None :
119+ LOG .info (
120+ f"Adding shout to prompt { message .prompt_id } from user { message .user_uid } "
121+ )
130122 is_ok = MongoDocumentsAPI .PROMPTS .add_shout_to_prompt (
131123 prompt_id = message .prompt_id ,
132- user_id = message .user_id ,
133- message_id = message .message_id ,
124+ user_id = message .user_uid ,
125+ message_id = message .sid ,
134126 prompt_state = message .prompt_state ,
135127 )
136128 if is_ok :
@@ -149,7 +141,7 @@ async def user_message(sid, data):
149141 for language , gender_mapping in message .message_tts .items ():
150142 for gender , audio_data in gender_mapping .items ():
151143 MongoDocumentsAPI .SHOUTS .save_tts_response (
152- shout_id = message .message_id ,
144+ shout_id = message .sid ,
153145 audio_data = audio_data ,
154146 lang = language ,
155147 gender = gender ,
0 commit comments