import json from matplotlib.font_manager import json_dump from sqlalchemy import select, update import model.records from app.gpt.service.ali_filetrans import file_trans from app.gpt.service.openai import openai_check_intent from common.log import log from database.db_mysql import async_db_session async def get_intent(body: dict): notify = body['notify'] record = model.records.Records( body=body, staff_no=str(notify['staffNo']), caller=str(notify['caller']), callee=str(notify['callee']), record_file=str(notify['recordFile']), session=str(notify['session']), ) mp3url = "https://toolsapi.gkscrm.com/api/v1/gpt/recordfile?filepath=" + notify['recordFile'] taskId = file_trans(mp3url) if not taskId: log.error("ali_trans error") return False record.ali_task_id = taskId async with async_db_session() as db: db.add(record) await db.commit() return True async def ali_trans_success(body: dict): if 'StatusText' not in body or body['StatusText'] != "SUCCESS": log.info("ali_trans response not Success") return False if "Result" not in body: log.error("ali_trans response not Result") return False async with async_db_session() as db: query = select(model.records.Records).where(model.records.Records.ali_task_id == body["TaskId"]).limit(1) result = await db.execute(query) record = result.scalars().first() if not record: log.error("ali_trans response not found record") return False record.ali_trans = body record.ali_task_id = body["TaskId"] sentences = body["Result"]["Sentences"] chats = "" for sentence in sentences: chats += "speaker-" + sentence["SpeakerId"] + ": " + sentence["Text"] + "\n" log.info("聊天记录如下:\n" + chats) record.chats = chats user_intent = openai_check_intent(chats) log.info("用户意图为:" + user_intent.model_dump_json(indent=4)) record.user_intent = user_intent.user_intent record.basis = user_intent.basis if user_intent.accept: record.accept = 1 else: record.accept = 2 async with async_db_session() as db: query = update(model.records.Records).where(model.records.Records.id == record.id).values({ "ali_trans": record.ali_trans, "chats": record.chats, "user_intent": record.user_intent, "basis": record.basis, "accept": record.accept }) await db.execute(query) await db.commit() return True