|
@@ -1,183 +1,177 @@
|
|
|
#!/usr/bin/env python3
|
|
|
# encoding:utf-8
|
|
|
-import threading
|
|
|
-
|
|
|
-from logging.config import dictConfig
|
|
|
-from flask import Flask, render_template_string
|
|
|
-
|
|
|
-
|
|
|
-dictConfig({
|
|
|
- "version": 1,
|
|
|
- "disable_existing_loggers": False, # 不覆盖默认配置
|
|
|
- "formatters": { # 日志输出样式
|
|
|
- "default": {
|
|
|
- "format": "%(asctime)s - %(module)s.%(lineno)d - %(levelname)s - %(threadName)s: %(message)s"
|
|
|
- }
|
|
|
- },
|
|
|
- "handlers": {
|
|
|
- "console": {
|
|
|
- "class": "logging.StreamHandler", # 控制台输出
|
|
|
- "level": "DEBUG",
|
|
|
- "formatter": "default",
|
|
|
- },
|
|
|
- "log_file": {
|
|
|
- "class": "logging.handlers.RotatingFileHandler",
|
|
|
- "level": "INFO",
|
|
|
- "formatter": "default", # 日志输出样式对应formatters
|
|
|
- "filename": "./logs/flask.log", # 指定log文件目录
|
|
|
- "maxBytes": 20*1024*1024, # 文件最大20M
|
|
|
- "backupCount": 10, # 最多10个文件
|
|
|
- "encoding": "utf8", # 文件编码
|
|
|
- },
|
|
|
-
|
|
|
- },
|
|
|
- "root": {
|
|
|
- "level": "DEBUG", # # handler中的level会覆盖掉这里的level
|
|
|
- "handlers": ["console", "log_file"],
|
|
|
- },
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-
|
|
|
-app = Flask(__name__)
|
|
|
-app.config['SECRET_KEY'] = ''
|
|
|
-
|
|
|
-
|
|
|
-def new_client():
|
|
|
- from src.core.callcenter.esl.client import InboundClient
|
|
|
- client = InboundClient()
|
|
|
- return client
|
|
|
-
|
|
|
-
|
|
|
-inbound_client = new_client()
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/')
|
|
|
-def index():
|
|
|
- return render_template_string("""<!DOCTYPE html>
|
|
|
-<html lang="en">
|
|
|
-<head>
|
|
|
- <meta charset="UTF-8">
|
|
|
- <title>SocketIO Example</title>
|
|
|
- <script src="https://cdn.socket.io/4.0.0/socket.io.min.js"></script>
|
|
|
-</head>
|
|
|
-<body>
|
|
|
- <h1>SocketIO Test</h1>
|
|
|
- <script>
|
|
|
- var socket = io('/ws/cs-im');
|
|
|
- socket.on('response', function(msg) {
|
|
|
- alert(msg);
|
|
|
- });
|
|
|
-
|
|
|
- socket.on('login', function(msg) {
|
|
|
- alert('Received from server: ' + msg);
|
|
|
- });
|
|
|
- socket.emit('login', {'appCode':'1111','userId':'1111','token':'1111'});
|
|
|
- </script>
|
|
|
-</body>
|
|
|
-</html>""")
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/get-cdn-url', methods=['POST'])
|
|
|
-def get_cdn_url():
|
|
|
- """获取cdn地址"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/get-init-config', methods=['POST'])
|
|
|
-def get_init_config():
|
|
|
- """获取初始化配置"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/check-in', methods=['POST'])
|
|
|
-def check_in():
|
|
|
- """坐席签入"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/check-out', methods=['POST'])
|
|
|
-def check_out():
|
|
|
- """坐席签出"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/busy', methods=['POST'])
|
|
|
-def busy():
|
|
|
- """坐席置忙"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/idle', methods=['POST'])
|
|
|
-def idle():
|
|
|
- """坐席置闲"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/turn-on', methods=['POST'])
|
|
|
-def turn_on():
|
|
|
- """接通"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/hang-up', methods=['POST'])
|
|
|
-def hang_up():
|
|
|
- """挂断"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/agent-state', methods=['POST'])
|
|
|
-def agent_state():
|
|
|
- """获取坐席状态"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/manual-call', methods=['POST'])
|
|
|
-def manual_call():
|
|
|
- """外呼"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/manual-hang', methods=['POST'])
|
|
|
-def manual_hang():
|
|
|
- """挂断"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/listen', methods=['POST'])
|
|
|
-def listen():
|
|
|
- """发起监听"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/agent/reload-phone', methods=['POST'])
|
|
|
-def reload_phone():
|
|
|
- """重新获取分机信息"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/monitor/load-agent-group-data', methods=['POST'])
|
|
|
-def load_agent_group_data():
|
|
|
- """获取监控组成员信息"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/human-service/member-active', methods=['POST'])
|
|
|
-def member_active():
|
|
|
- """机器人外呼-签入人工组"""
|
|
|
- return 'Hello World!'
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/open/num/generate', methods=['POST'])
|
|
|
-def num_generate():
|
|
|
- """获取 cti 流程 ID"""
|
|
|
- return 'Hello World!'
|
|
|
|
|
|
+import threading
|
|
|
+# from logging.config import dictConfig
|
|
|
+# from flask import Flask, render_template_string
|
|
|
+#
|
|
|
+#
|
|
|
+# dictConfig({
|
|
|
+# "version": 1,
|
|
|
+# "disable_existing_loggers": False, # 不覆盖默认配置
|
|
|
+# "formatters": { # 日志输出样式
|
|
|
+# "default": {
|
|
|
+# "format": "%(asctime)s - %(module)s.%(lineno)d - %(levelname)s - %(threadName)s: %(message)s"
|
|
|
+# }
|
|
|
+# },
|
|
|
+# "handlers": {
|
|
|
+# "console": {
|
|
|
+# "class": "logging.StreamHandler", # 控制台输出
|
|
|
+# "level": "DEBUG",
|
|
|
+# "formatter": "default",
|
|
|
+# },
|
|
|
+# "log_file": {
|
|
|
+# "class": "logging.handlers.RotatingFileHandler",
|
|
|
+# "level": "INFO",
|
|
|
+# "formatter": "default", # 日志输出样式对应formatters
|
|
|
+# "filename": "./logs/flask.log", # 指定log文件目录
|
|
|
+# "maxBytes": 20*1024*1024, # 文件最大20M
|
|
|
+# "backupCount": 10, # 最多10个文件
|
|
|
+# "encoding": "utf8", # 文件编码
|
|
|
+# },
|
|
|
+#
|
|
|
+# },
|
|
|
+# "root": {
|
|
|
+# "level": "DEBUG", # # handler中的level会覆盖掉这里的level
|
|
|
+# "handlers": ["console", "log_file"],
|
|
|
+# },
|
|
|
+# }
|
|
|
+# )
|
|
|
+#
|
|
|
+#
|
|
|
+# app = Flask(__name__)
|
|
|
+# app.config['SECRET_KEY'] = ''
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/')
|
|
|
+# def index():
|
|
|
+# return render_template_string("""<!DOCTYPE html>
|
|
|
+# <html lang="en">
|
|
|
+# <head>
|
|
|
+# <meta charset="UTF-8">
|
|
|
+# <title>SocketIO Example</title>
|
|
|
+# <script src="https://cdn.socket.io/4.0.0/socket.io.min.js"></script>
|
|
|
+# </head>
|
|
|
+# <body>
|
|
|
+# <h1>SocketIO Test</h1>
|
|
|
+# <script>
|
|
|
+# var socket = io('/ws/cs-im');
|
|
|
+# socket.on('response', function(msg) {
|
|
|
+# alert(msg);
|
|
|
+# });
|
|
|
+#
|
|
|
+# socket.on('login', function(msg) {
|
|
|
+# alert('Received from server: ' + msg);
|
|
|
+# });
|
|
|
+# socket.emit('login', {'appCode':'1111','userId':'1111','token':'1111'});
|
|
|
+# </script>
|
|
|
+# </body>
|
|
|
+# </html>""")
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/get-cdn-url', methods=['POST'])
|
|
|
+# def get_cdn_url():
|
|
|
+# """获取cdn地址"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/get-init-config', methods=['POST'])
|
|
|
+# def get_init_config():
|
|
|
+# """获取初始化配置"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/check-in', methods=['POST'])
|
|
|
+# def check_in():
|
|
|
+# """坐席签入"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/check-out', methods=['POST'])
|
|
|
+# def check_out():
|
|
|
+# """坐席签出"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/busy', methods=['POST'])
|
|
|
+# def busy():
|
|
|
+# """坐席置忙"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/idle', methods=['POST'])
|
|
|
+# def idle():
|
|
|
+# """坐席置闲"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/turn-on', methods=['POST'])
|
|
|
+# def turn_on():
|
|
|
+# """接通"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/hang-up', methods=['POST'])
|
|
|
+# def hang_up():
|
|
|
+# """挂断"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/agent-state', methods=['POST'])
|
|
|
+# def agent_state():
|
|
|
+# """获取坐席状态"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/manual-call', methods=['POST'])
|
|
|
+# def manual_call():
|
|
|
+# """外呼"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/manual-hang', methods=['POST'])
|
|
|
+# def manual_hang():
|
|
|
+# """挂断"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/listen', methods=['POST'])
|
|
|
+# def listen():
|
|
|
+# """发起监听"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/agent/reload-phone', methods=['POST'])
|
|
|
+# def reload_phone():
|
|
|
+# """重新获取分机信息"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/monitor/load-agent-group-data', methods=['POST'])
|
|
|
+# def load_agent_group_data():
|
|
|
+# """获取监控组成员信息"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/human-service/member-active', methods=['POST'])
|
|
|
+# def member_active():
|
|
|
+# """机器人外呼-签入人工组"""
|
|
|
+# return 'Hello World!'
|
|
|
+#
|
|
|
+#
|
|
|
+# @app.route('/open/num/generate', methods=['POST'])
|
|
|
+# def num_generate():
|
|
|
+# """获取 cti 流程 ID"""
|
|
|
+# return 'Hello World!'
|
|
|
+
|
|
|
+from src.core.callcenter.web import app
|
|
|
+from src.core.callcenter.ws import socketio
|
|
|
+# from src.core.voip.hello import pjsua2_test
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
+ # threading.Thread(target=pjsua2_test, args=()).start()
|
|
|
# out = OutboundClient()
|
|
|
# threading.Thread(target=out.start, args=()).start()
|
|
|
# threading.Thread(target=on.start, args=()).start()
|
|
|
- from src.core.callcenter.ws import socketio
|
|
|
socketio.run(app, host='127.0.0.1', port=5000, allow_unsafe_werkzeug=True, debug=True)
|
|
|
# app.run(host='127.0.0.1', port=5000, debug=True)
|