Davidliu hai 5 días
pai
achega
2f672e2d88

+ 12 - 13
src/core/callcenter/agent.py

@@ -301,22 +301,21 @@ class AgentOperService:
                 traceback.print_exc()
                 traceback.print_exc()
 
 
         def check_agent_live_daemon(_members):
         def check_agent_live_daemon(_members):
-            key = CENTER_AGENT_LIVE_CNT % SAAS_ID
-            pre_val = self.redis_handler.redis.get(key)
-            if not pre_val:
-                if not _members or len(_members) == 0:
-                    value = datetime.now().timestamp()
-                    self.redis_handler.redis.set(key, value, ex=60*60, nx=True)
+            _key = CENTER_AGENT_LIVE_CNT % SAAS_ID
+            pre_time = self.redis_handler.redis.get(_key)
+            if not pre_time or not _members or len(_members) == 0:
+                _value = datetime.now().timestamp()
+                self.redis_handler.redis.set(_key, _value, ex=60*60, nx=True)
             else:
             else:
-                diff = datetime.now().timestamp() - float(pre_val)
-                # self.logger.info('check_agent_live_daemon, members=%s, diff=%s, pre_val=%s', (len(_members) if _members else 0), diff, pre_val)
-                if diff > self.agent_serial_live_expire:
+                _diff = datetime.now().timestamp() - float(pre_time)
+                if _diff > self.agent_serial_live_expire:
+                    self.logger.info('check_agent_live_daemon, members=%s, diff=%s, pre_time=%s', (len(_members) if _members else 0), _diff, pre_time)
                     self.logger.warn('WARING::live agent count less than 1 serial ten minutes')
                     self.logger.warn('WARING::live agent count less than 1 serial ten minutes')
                     self.data_handle_server.create_warning_record(1, '10分钟空岗报警')
                     self.data_handle_server.create_warning_record(1, '10分钟空岗报警')
-                    self.redis_handler.redis.delete(key)
+                    self.redis_handler.redis.delete(_key)
 
 
                 if _members and len(_members) > 0:
                 if _members and len(_members) > 0:
-                    self.redis_handler.redis.delete(key)
+                    self.redis_handler.redis.delete(_key)
 
 
         name = CENTER_AGENT_HEARTBEAT % SAAS_ID
         name = CENTER_AGENT_HEARTBEAT % SAAS_ID
         members = self.redis_handler.redis.hgetall(name)
         members = self.redis_handler.redis.hgetall(name)
@@ -924,8 +923,8 @@ class AgentStateService:
 
 
     def handle_release_agent_lock(self, choose_phone_num, saas_id, service_id='00000000000000000'):
     def handle_release_agent_lock(self, choose_phone_num, saas_id, service_id='00000000000000000'):
         key = self._lock_key(saas_id, service_id, choose_phone_num)
         key = self._lock_key(saas_id, service_id, choose_phone_num)
-        self.redis_handler.redis.delete(key)
-        # self.redis_handler.redis.expire(key, 3)
+        # self.redis_handler.redis.delete(key)
+        self.redis_handler.redis.expire(key, 5)
         self.logger.info('releaseAgent %s %s %s'% (saas_id, service_id, choose_phone_num))
         self.logger.info('releaseAgent %s %s %s'% (saas_id, service_id, choose_phone_num))
 
 
     def handle_assign_time(self, saas_id, service_id, choose_phone_num):
     def handle_assign_time(self, saas_id, service_id, choose_phone_num):

+ 4 - 4
src/core/callcenter/esl/handler/channel_answer_handler.py

@@ -36,11 +36,11 @@ class ChannelAnswerHandler(EslEventHandler):
             self.logger.info("answer device_info is null, call_id:%s, call_info:%s", call_id, call_info)
             self.logger.info("answer device_info is null, call_id:%s, call_info:%s", call_id, call_info)
             return
             return
 
 
-        if CallType.AGENT_CALL.code == call_info.call_type and device_info.device_type == DeviceType.CUSTOMER.code:
-            self.record(event, device_id)
+        self.record(event, device_id)
+        # if CallType.AGENT_CALL.code == call_info.call_type and device_info.device_type == DeviceType.CUSTOMER.code:
 
 
         if (CallType.BOT_CALL.code == call_info.call_type or CallType.INCOMING_BOT_CALL.code == call_info.call_type) and device_info.device_type == DeviceType.ROBOT.code:
         if (CallType.BOT_CALL.code == call_info.call_type or CallType.INCOMING_BOT_CALL.code == call_info.call_type) and device_info.device_type == DeviceType.ROBOT.code:
-            self.record(event, device_id)
+            # self.record(event, device_id)
             call_info.answer_flag = AnswerFlag.ROBOT_ANSWER.code
             call_info.answer_flag = AnswerFlag.ROBOT_ANSWER.code
             registry.CALL_BOT_ANSWER_REQUESTS.labels(f"{call_info.bucket_type}").inc()
             registry.CALL_BOT_ANSWER_REQUESTS.labels(f"{call_info.bucket_type}").inc()
 
 
@@ -167,7 +167,7 @@ class ChannelAnswerHandler(EslEventHandler):
         else:
         else:
             _record_url = self.start_recording(device_id, get_record_file_name(call_id, CallStage.ALL), call)
             _record_url = self.start_recording(device_id, get_record_file_name(call_id, CallStage.ALL), call)
         device.record = _record_url
         device.record = _record_url
-        self.logger.info("luyincall:%s, device:%s" % (call, device))
+        self.logger.info("luyin::call_id:%s, device_id:%s, call:%s, device:%s" % (call_id, device_id, call, device))
         self.cache.add_call_info(call)
         self.cache.add_call_info(call)
         return _record_url
         return _record_url
 
 

+ 2 - 1
src/core/callcenter/esl/handler/channel_hangup_handler.py

@@ -206,7 +206,8 @@ class ChannelHangupHandler(EslEventHandler):
                 self.logger.warning("没有录音文件,直接更新记录: call_id=%s, sip_status=%s, hangup_cause=%s, agent_name=%s, hangup_dir=%s", call_id, sip_status, hangup_cause,agent_name, hangup_dir)
                 self.logger.warning("没有录音文件,直接更新记录: call_id=%s, sip_status=%s, hangup_cause=%s, agent_name=%s, hangup_dir=%s", call_id, sip_status, hangup_cause,agent_name, hangup_dir)
                 self.dataHandleServer.update_record(call_id, time_end=datetime.now(), sip_status=sip_status, sip_hangup_cause=hangup_cause, hangup_dir=hangup_dir, user_id=agent.user_id if agent else None, user_name=agent.agent_name if agent else None)
                 self.dataHandleServer.update_record(call_id, time_end=datetime.now(), sip_status=sip_status, sip_hangup_cause=hangup_cause, hangup_dir=hangup_dir, user_id=agent.user_id if agent else None, user_name=agent.agent_name if agent else None)
                 return
                 return
-            merge_record = self.merge_audio_files(records) if len(records) > 1 else records[0]
+            merge_record = records[0]
+            # merge_record = self.merge_audio_files(records) if len(records) > 1 else records[0]
             # 计算录音时长
             # 计算录音时长
             duration = self.get_audio_duration(merge_record) or 0
             duration = self.get_audio_duration(merge_record) or 0
             self.dataHandleServer.update_record(call_id, times=int(duration), time_end=datetime.now(), url=merge_record, sip_status=sip_status, sip_hangup_cause=hangup_cause, hangup_dir=hangup_dir, user_id=agent.user_id if agent else None, user_name=agent.agent_name if agent else None)
             self.dataHandleServer.update_record(call_id, times=int(duration), time_end=datetime.now(), url=merge_record, sip_status=sip_status, sip_hangup_cause=hangup_cause, hangup_dir=hangup_dir, user_id=agent.user_id if agent else None, user_name=agent.agent_name if agent else None)

+ 3 - 0
src/core/voip/bot.py

@@ -468,6 +468,7 @@ class ToTextBotAgent:
             while try_count > 0:
             while try_count > 0:
                 once_start = time.time()
                 once_start = time.time()
                 try:
                 try:
+                    # message.strip()
                     response = requests.post(url, data=request_data, headers=headers, timeout=3)
                     response = requests.post(url, data=request_data, headers=headers, timeout=3)
                     if response and response.ok:
                     if response and response.ok:
                         response_data = response.json()
                         response_data = response.json()
@@ -488,7 +489,9 @@ class ToTextBotAgent:
                     latency = (time.time() - once_start)
                     latency = (time.time() - once_start)
                     registry.BOT_REQUEST_ONCE_LATENCY.labels(request.taskId).observe(latency)
                     registry.BOT_REQUEST_ONCE_LATENCY.labels(request.taskId).observe(latency)
 
 
+            self.call_agent.logger.info(f"to_request::sessionId:{request.sessionId}, message:{message}")
             if not message:
             if not message:
+                self.call_agent.logger.info(f"to_request::sessionId:{request.sessionId}, come in default response")
                 massage = self.get_default_response()
                 massage = self.get_default_response()
                 self.call_agent.message_queue.put(massage)
                 self.call_agent.message_queue.put(massage)
         finally:
         finally: