刘威 5 kuukautta sitten
vanhempi
commit
0fdc4a6b04
1 muutettua tiedostoa jossa 49 lisäystä ja 52 poistoa
  1. 49 52
      src/core/callcenter/esl/client.py

+ 49 - 52
src/core/callcenter/esl/client.py

@@ -373,66 +373,63 @@ class InboundClient:
         self.is_stopping = True
 
 
-class ESLRequestHandler(socketserver.BaseRequestHandler):
-    def setup(self):
-        try:
-            self.server.logger.info('%s connected!', self.client_address)
-            fd = self.request.fileno()
-            con = ESL.ESLconnection(fd)
-            self.server.logger.info('Connected: %s', con.connected())
-            if con.connected():
-                info = con.getInfo()
-
-                # print(json.loads(info.serialize('json')))
-                event_name = info.getHeader("Event-Name")
-                device_id = info.getHeader("unique-id")
-                kwargs = json.loads(info.serialize('json'))
-                destination = self.server.agent.register(**kwargs)
-                self.server.logger.info("device_id=%s, destination=%s", device_id, destination)
-
-                Cache.add_device_user_part(device_id, destination)
-                con.execute("bridge", f"user/{destination}", device_id)
-
-                # destination = "user/1001"
-                # msg = ESL.ESLevent("sendmsg", uuid)
-                # msg.addHeader("call-command", "execute")
-                # msg.addHeader("execute-app-name", "bridge")
-                # msg.addHeader("execute-app-arg", destination)
-                # # 发送消息以执行 bridge 操作
-                # con.sendEvent(msg)
-                # print(f"Call {uuid} is bridged to {destination}")
-
-                # con.execute("answer", "", uuid)
-
-                # con.execute("transfer", "1001 XML default", uuid)
-                # try:
-                #     con.disconnect()
-                # except:
-                #     print('come in ')
-                #     traceback.print_exc()
-            else:
-                self.server.logger.info("Failed to connect to FreeSWITCH")
-        except:
-            traceback.print_exc()
-
-
-class CustomTCPServer(socketserver.TCPServer):
-    def __init__(self, server_address, RequestHandlerClass, agent, logger):
-        self.agent = agent
-        self.logger = logger
-        super().__init__(server_address, RequestHandlerClass)
-
-
 class OutboundClient:
 
     def __init__(self, agent, logger):
-        self.bot_agent = agent
         self.logger = logger
         threading.Thread(target=self.start, args=('0.0.0.0', 8084, agent, logger)).start()
 
+    class ESLRequestHandler(socketserver.BaseRequestHandler):
+        def setup(self):
+            try:
+                self.server.logger.info('%s connected!', self.client_address)
+                fd = self.request.fileno()
+                con = ESL.ESLconnection(fd)
+                self.server.logger.info('Connected: %s', con.connected())
+                if con.connected():
+                    info = con.getInfo()
+
+                    # print(json.loads(info.serialize('json')))
+                    event_name = info.getHeader("Event-Name")
+                    device_id = info.getHeader("unique-id")
+                    kwargs = json.loads(info.serialize('json'))
+                    destination = self.server.agent.register(**kwargs)
+                    self.server.logger.info("device_id=%s, destination=%s", device_id, destination)
+
+                    Cache.add_device_user_part(device_id, destination)
+                    con.execute("bridge", f"user/{destination}", device_id)
+
+                    # destination = "user/1001"
+                    # msg = ESL.ESLevent("sendmsg", uuid)
+                    # msg.addHeader("call-command", "execute")
+                    # msg.addHeader("execute-app-name", "bridge")
+                    # msg.addHeader("execute-app-arg", destination)
+                    # # 发送消息以执行 bridge 操作
+                    # con.sendEvent(msg)
+                    # print(f"Call {uuid} is bridged to {destination}")
+
+                    # con.execute("answer", "", uuid)
+
+                    # con.execute("transfer", "1001 XML default", uuid)
+                    # try:
+                    #     con.disconnect()
+                    # except:
+                    #     print('come in ')
+                    #     traceback.print_exc()
+                else:
+                    self.server.logger.info("Failed to connect to FreeSWITCH")
+            except:
+                traceback.print_exc()
+
+    class CustomTCPServer(socketserver.TCPServer):
+        def __init__(self, server_address, RequestHandlerClass, agent, logger):
+            self.agent = agent
+            self.logger = logger
+            super().__init__(server_address, RequestHandlerClass)
+
     def start(self, HOST='0.0.0.0', PORT=8084, agent=None, logger=None):
         # HOST, PORT = "0.0.0.0", 8084
         # 创建一个 TCP 服务器
-        with CustomTCPServer((HOST, PORT), ESLRequestHandler, agent, logger) as server:
+        with self.CustomTCPServer((HOST, PORT), self.ESLRequestHandler, agent, logger) as server:
             self.logger.info(f"ESL server listening on {HOST}:{PORT}")
             server.serve_forever()