Davidliu 3 months ago
parent
commit
779eb32e2f
1 changed files with 49 additions and 9 deletions
  1. 49 9
      src/core/voip/bot.py

+ 49 - 9
src/core/voip/bot.py

@@ -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: