|
@@ -434,7 +434,47 @@ class ToTextBotAgent:
|
|
|
if user_asr_text != 'ASR408error':
|
|
|
self.call_agent.inter_action_total += 1
|
|
|
# 发送请求并处理响应
|
|
|
- self.to_quest(self.request_data)
|
|
|
+ self.to_request(self.request_data)
|
|
|
+ # self.to_quest(self.request_data)
|
|
|
+
|
|
|
+ def to_request(self, request: BotChatRequest, try_count = 3):
|
|
|
+ start_time = time.time()
|
|
|
+ request_data = request.to_json_string()
|
|
|
+ response = None
|
|
|
+ try:
|
|
|
+ message = None
|
|
|
+ url = f"http://{SERVE_HOST}:40072/botservice"
|
|
|
+ headers = {"Content-Type": "application/json"}
|
|
|
+ while try_count > 0:
|
|
|
+ once_start = time.time()
|
|
|
+ try:
|
|
|
+ response = requests.post(url, data=json.dumps(request_data), headers=headers, timeout=3)
|
|
|
+ if response and response.ok:
|
|
|
+ response_data = response.json()
|
|
|
+ if "data" in response_data and response_data["code"] == 0:
|
|
|
+ data = response_data["data"]
|
|
|
+ message = ChatMessage.from_json(data)
|
|
|
+ self.call_agent.message_queue.put(message)
|
|
|
+ break
|
|
|
+ else:
|
|
|
+ self.call_agent.logger.info("响应中没有 'data' 字段")
|
|
|
+ else:
|
|
|
+ self.call_agent.logger.info(f"请求失败,状态码: {response.status_code}, 响应内容: {response.text}")
|
|
|
+ except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
+ self.call_agent.logger.error(f"TaskId={request.taskId}, 请求发生异常 {e}, URL: {url}")
|
|
|
+ finally:
|
|
|
+ latency = (time.time() - once_start)
|
|
|
+ registry.BOT_REQUEST_ONCE_LATENCY.labels(request.taskId).observe(latency)
|
|
|
+
|
|
|
+ if not message:
|
|
|
+ massage = self.get_default_response()
|
|
|
+ self.call_agent.message_queue.put(massage)
|
|
|
+ finally:
|
|
|
+ latency = (time.time() - start_time)
|
|
|
+ registry.BOT_REQUEST_COUNT.inc()
|
|
|
+ registry.BOT_REQUEST_LATENCY.labels(request.taskId).observe(latency)
|
|
|
+ self.call_agent.logger.info(f"sessionId={ self.call_agent.session_id}, timeCost={latency}, chat::request:{request_data}, response:{response.text if response else None}")
|
|
|
|
|
|
|
|
|
def to_quest(self, request: BotChatRequest, try_count = 3):
|
|
@@ -445,7 +485,7 @@ class ToTextBotAgent:
|
|
|
url = f"http://{SERVE_HOST}:40072/botservice"
|
|
|
# self.call_agent.logger.info(f"请求数据:{request_data},url:{url}")
|
|
|
with requests.Session() as session:
|
|
|
- massage = None
|
|
|
+ message = None
|
|
|
# try:
|
|
|
session.headers.update({'Content-Type': 'application/json'})
|
|
|
while try_count > 0:
|
|
@@ -459,22 +499,22 @@ class ToTextBotAgent:
|
|
|
response_data = response.json()
|
|
|
if "data" in response_data and response_data["code"]==0:
|
|
|
data = response_data["data"]
|
|
|
- massage = ChatMessage.from_json(data)
|
|
|
- self.call_agent.message_queue.put(massage)
|
|
|
+ message = ChatMessage.from_json(data)
|
|
|
+ self.call_agent.message_queue.put(message)
|
|
|
+ break
|
|
|
else:
|
|
|
self.call_agent.logger.info("响应中没有 'data' 字段")
|
|
|
else:
|
|
|
self.call_agent.logger.info(f"请求失败,状态码: {response.status_code}, 响应内容: {response.text}")
|
|
|
- break
|
|
|
- except requests.RequestException as e:
|
|
|
+ except Exception as e:
|
|
|
traceback.print_exc()
|
|
|
self.call_agent.logger.error(f"TaskId={request.taskId}, 请求发生异常: {e}, URL: {url}")
|
|
|
finally:
|
|
|
latency = (time.time() - once_start)
|
|
|
registry.BOT_REQUEST_ONCE_LATENCY.labels(request.taskId).observe(latency)
|
|
|
- if not response or response.status_code != 200:
|
|
|
- massage = self.get_default_response()
|
|
|
- self.call_agent.message_queue.put(massage)
|
|
|
+ if not message:
|
|
|
+ message = self.get_default_response()
|
|
|
+ self.call_agent.message_queue.put(message)
|
|
|
# finally:
|
|
|
# session.close()
|
|
|
finally:
|