Răsfoiți Sursa

转人工fix

774056846 4 luni în urmă
părinte
comite
3c350fbedb

+ 2 - 2
src/core/callcenter/acd.py

@@ -5,7 +5,7 @@ from datetime import datetime
 from queue import Queue
 from queue import Queue
 from typing import Dict, Any, Optional
 from typing import Dict, Any, Optional
 import src.core.callcenter.cache as Cache
 import src.core.callcenter.cache as Cache
-from src.core.callcenter.agent import AgentService
+from src.core.callcenter.agent import AgentOperService
 from src.core.callcenter.call import CallService
 from src.core.callcenter.call import CallService
 from src.core.callcenter.api import CallInfo, AgentActionRequest
 from src.core.callcenter.api import CallInfo, AgentActionRequest
 from apscheduler.schedulers.background import BackgroundScheduler
 from apscheduler.schedulers.background import BackgroundScheduler
@@ -19,7 +19,7 @@ class AcdService:
         self.client = client
         self.client = client
         self.logger = logger
         self.logger = logger
         self.call_service = CallService(client, logger)
         self.call_service = CallService(client, logger)
-        self.agent_service = AgentService(client, logger)
+        self.agent_service = AgentOperService(client, logger)
         self.holdsQueue: Dict[str, Queue] = {}
         self.holdsQueue: Dict[str, Queue] = {}
         self.pool = ThreadPoolExecutor(max_workers=4)
         self.pool = ThreadPoolExecutor(max_workers=4)
         # checkIdleScheduler = BackgroundScheduler()
         # checkIdleScheduler = BackgroundScheduler()

+ 1 - 1
src/core/callcenter/api.py

@@ -102,7 +102,7 @@ class AgentActionRequest(BaseApi):
     """
     """
     坐席操作
     坐席操作
     """
     """
-    def __init__(self, saas_id, agent_id, agent_number=None, out_id=None, identity_type=None, scene='manual', service_id=None, **kwargs):
+    def __init__(self, saas_id, agent_id=None, agent_number=None, out_id=None, identity_type=None, scene='manual', service_id=None, **kwargs):
         self.saas_id =saas_id
         self.saas_id =saas_id
         # 坐席工号
         # 坐席工号
         self.agent_id = agent_id
         self.agent_id = agent_id

+ 2 - 2
src/core/callcenter/esl/utils/esl_event_util.py

@@ -76,8 +76,8 @@ VARIABLE_SIP_LIBRA_CALLID = "variable_sip_h_P-LIBRA-CallId"
 VARIABLE_SIP_LIBRA_IS_LAST_CALL = "variable_sip_h_P-LIBRA-IsLastCall"
 VARIABLE_SIP_LIBRA_IS_LAST_CALL = "variable_sip_h_P-LIBRA-IsLastCall"
 VARIABLE_ORIGINATION_UUID = "variable_origination_uuid"
 VARIABLE_ORIGINATION_UUID = "variable_origination_uuid"
 VARIABLE_SIP_LIBRA_DEVICE_ID = "variable_sip_h_P-LIBRA-DeviceId"
 VARIABLE_SIP_LIBRA_DEVICE_ID = "variable_sip_h_P-LIBRA-DeviceId"
-VARIABLE_SIP_WHD_HANGUP_REASON = "variable_sip_bye_h_X-CIN-HangUpReason"
-VARIABLE_SIP_WHD_SERVICE_ID = "variable_sip_bye_h_X-CIN-ServiceId"
+VARIABLE_SIP_WHD_HANGUP_REASON = "variable_sip_bye_h_P-LIBRA-HangUpReason"
+VARIABLE_SIP_WHD_SERVICE_ID = "variable_sip_bye_h_P-LIBRA-ServiceId"
 VARIABLE_SIP_H_P_LIBRA_IS_EAVESDROP = "variable_sip_h_P-LIBRA-is-eavesdrop"
 VARIABLE_SIP_H_P_LIBRA_IS_EAVESDROP = "variable_sip_h_P-LIBRA-is-eavesdrop"
 
 
 BRIDGE_A_UNIQUE_ID = "Bridge-A-Unique-ID"
 BRIDGE_A_UNIQUE_ID = "Bridge-A-Unique-ID"

+ 11 - 4
src/core/voip/bot.py

@@ -361,8 +361,8 @@ class MyCall(pj.Call):
             self.agent.hangup(self.user_part)
             self.agent.hangup(self.user_part)
         elif action_code == 'transfer':  # 转人工
         elif action_code == 'transfer':  # 转人工
             print('todo 转人工')
             print('todo 转人工')
-            sip_headers = {'bye_h_X-CIN-HangUpReason':'transferToAgent'}
-            self.agent.hangup(self.user_part, sip_headers=sip_headers)
+            sip_headers = {'P-LIBRA-HangUpReason':'transferToAgent', 'P-LIBRA-ServiceId':'00000000000000000'}
+            self.agent.hangup(self.user_part, **sip_headers)
 
 
 class ToTextBotAgent:
 class ToTextBotAgent:
     def __init__(self, user_asr_text, call_agent):
     def __init__(self, user_asr_text, call_agent):
@@ -551,8 +551,15 @@ class BotAgent:
         call_op_param = pj.CallOpParam(True)
         call_op_param = pj.CallOpParam(True)
         call_op_param.statusCode = pj.PJSIP_SC_OK
         call_op_param.statusCode = pj.PJSIP_SC_OK
         call_op_param.reason = reason
         call_op_param.reason = reason
-        for k, v in sip_headers:
-            call_op_param.headers.append(pj.SipHeader(f"sip_h_{k}", v))
+        call_op_param.txOption = pj.SipTxOption()
+        sip_header_vector = pj.SipHeaderVector()
+        for k, v in sip_headers.items():
+            _sip_header = pj.SipHeader()
+            _sip_header.hName = str(k)
+            _sip_header.hValue = str(v)
+            print('hangup, header_name=%s, header_value=%s' % (k, v))
+            sip_header_vector.push_back(_sip_header)
+        call_op_param.txOption.headers = sip_header_vector
         acc = self.accounts.get(user_part)
         acc = self.accounts.get(user_part)
         if acc:
         if acc:
             for k, v in acc.calls.items():
             for k, v in acc.calls.items():