774056846 4 months ago
parent
commit
739f4e20b4

+ 6 - 3
src/core/callcenter/api.py

@@ -445,7 +445,7 @@ class CallInfo(BaseApi):
                  call_time=None, call_type=None, direction=None, answer_flag=None, wait_time=None, answer_count=0,
                  hangup_dir=None, sdk_hangup=0, hangup_code=None, answer_time=None, end_time=None, talk_time=None,
                  first_queue_time=None, queue_start_time=None, queue_end_time=None, overflow_count=0,
-                 uuid1=None, uuid2=None, cdr_notify_url=None, queue_level=None, device_list=[],
+                 uuid1=None, uuid2=None, cdr_notify_url=None, queue_level=None, transfer_agent=None, device_list=[],
                  device_info_map: Dict[str, Any] = {}, follow_data: Dict[str, Any] = {},
                  process_data: Dict[str, Any] = {}, next_commands=[], call_details=[]):
         self.core_uuid = core_uuid  # 通话唯一标识
@@ -491,6 +491,7 @@ class CallInfo(BaseApi):
         self.uuid2 = uuid2  # uuid2
         self.cdr_notify_url = cdr_notify_url  # 话单通知地址
         self.queue_level = queue_level  # 排队等级,默认是进队列时间
+        self.transfer_agent = transfer_agent #是否转人工
         self.device_list = device_list  # 当前通话的设备
         self.device_info_map = device_info_map
         self.follow_data = follow_data  # 呼叫随路数据(作为落单数据)
@@ -524,8 +525,9 @@ class CallInfo(BaseApi):
                    first_queue_time=data.get('first_queue_time'), queue_start_time=data.get('queue_start_time'),
                    queue_end_time=data.get('queue_end_time'), overflow_count=data.get('overflow_count'),
                    uuid1=data.get('uuid1'), uuid2=data.get('uuid2'), cdr_notify_url=data.get('cdr_notify_url'),
-                   queue_level=data.get('queue_level'), device_list=data.get('device_list', []),
-                   device_info_map=device_info_map, follow_data=follow_data, process_data=process_data,
+                   queue_level=data.get('queue_level'), transfer_agent=data.get('transfer_agent'),
+                   device_list=data.get('device_list', []),device_info_map=device_info_map,
+                   follow_data=follow_data, process_data=process_data,
                    next_commands=next_commands, call_details=call_details)
 
     def __str__(self):
@@ -576,6 +578,7 @@ class CallInfo(BaseApi):
             "uuid2": self.uuid2,
             "cdr_notify_url": self.cdr_notify_url,
             "queue_level": self.queue_level,
+            "transfer_agent": self.transfer_agent,
             "device_list": [x for x in self.device_list],
             "device_info_map": {key: vars(value) for key, value in self.device_info_map.items()},
             "follow_data": {key: vars(value) for key, value in self.follow_data.items()},

+ 2 - 1
src/core/callcenter/esl/client.py

@@ -302,6 +302,7 @@ class InboundClient:
         msg.addHeader("call-command", EXECUTE)
         msg.addHeader("execute-app-name", HANGUP)
         msg.addHeader("execute-app-arg", NORMAL_CLEARING)
+        msg.addHeader("async", "true")
         print("hangup_call挂机1 hangup call: %s, device: %s, ctiCauseEnum: %s"% (call_id, device_id, case_enum), flush=True)
         arg = ''.join([EslEventUtil.SIP_H_P_LIBRA_HANGUP_CAUSE,"=", case_enum.description])
         print("hangup_call挂机2 hangup call: %s, device: %s, arg: %s"% (call_id, device_id, arg), flush=True)
@@ -594,7 +595,7 @@ class OutboundClient:
                                  uuid1=call_id, uuid2=device_id, saas_id=saasId)
             device_custom = DeviceInfo(device_id=device_id, call_time=now,
                                      call_id=call_id, device_type=DeviceType.CUSTOMER.code,
-                                     agent_key=destination, cdr_type=CdrType.INBOUND.code)
+                                     agent_key=destination, cdr_type=CdrType.TRANSFER.code)
             device_bot = DeviceInfo(device_id=new_device_id, call_time=now,
                                      call_id=call_id, device_type=DeviceType.ROBOT.code,
                                      agent_key=destination, cdr_type=CdrType.INBOUND.code)

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

@@ -83,6 +83,7 @@ class ChannelHangupHandler(EslEventHandler):
             if 'transferToAgent' == hangup_reason and DeviceType.ROBOT.code == device.device_type:
                 call.answer_flag = AnswerFlag.TRANSFER_TO_AGENT.code
                 service_id = EslEventUtil.getLIBRAServiceId(event)
+                call.transfer_agent = True
                 Cache.add_call_info(call)
                 print('debugger::ChannelHangupHandler, transferToAgent, service_id=%s' % (service_id), flush=True)
                 self.acd_service.transfer_to_agent(call, device_id, service_id)