|
@@ -12,7 +12,9 @@ from pqai_agent import configs
|
|
|
from pqai_agent import logging_service, chat_service, prompt_templates
|
|
from pqai_agent import logging_service, chat_service, prompt_templates
|
|
|
from pqai_agent.history_dialogue_service import HistoryDialogueService
|
|
from pqai_agent.history_dialogue_service import HistoryDialogueService
|
|
|
from pqai_agent.user_manager import MySQLUserManager, MySQLUserRelationManager
|
|
from pqai_agent.user_manager import MySQLUserManager, MySQLUserRelationManager
|
|
|
-from pqai_agent_server.utils import wrap_response
|
|
|
|
|
|
|
+from pqai_agent_server.const import AgentApiConst
|
|
|
|
|
+from pqai_agent_server.models import MySQLSessionManager
|
|
|
|
|
+from pqai_agent_server.utils import wrap_response, quit_human_intervention_status
|
|
|
from pqai_agent_server.utils import (
|
|
from pqai_agent_server.utils import (
|
|
|
run_extractor_prompt,
|
|
run_extractor_prompt,
|
|
|
run_chat_prompt,
|
|
run_chat_prompt,
|
|
@@ -21,7 +23,7 @@ from pqai_agent_server.utils import (
|
|
|
|
|
|
|
|
app = Flask('agent_api_server')
|
|
app = Flask('agent_api_server')
|
|
|
logger = logging_service.logger
|
|
logger = logging_service.logger
|
|
|
-
|
|
|
|
|
|
|
+const = AgentApiConst()
|
|
|
|
|
|
|
|
@app.route('/api/listStaffs', methods=['GET'])
|
|
@app.route('/api/listStaffs', methods=['GET'])
|
|
|
def list_staffs():
|
|
def list_staffs():
|
|
@@ -178,9 +180,9 @@ def health_check():
|
|
|
@app.route("/api/getStaffSessionSummary", methods=["GET"])
|
|
@app.route("/api/getStaffSessionSummary", methods=["GET"])
|
|
|
def get_staff_session_summary():
|
|
def get_staff_session_summary():
|
|
|
staff_id = request.args.get("staff_id")
|
|
staff_id = request.args.get("staff_id")
|
|
|
- status = request.args.get("status", 1)
|
|
|
|
|
- page_id = request.args.get("page_id", 1)
|
|
|
|
|
- page_size = request.args.get("page_size", 10)
|
|
|
|
|
|
|
+ status = request.args.get("status", const.DEFAULT_STAFF_STATUS)
|
|
|
|
|
+ page_id = request.args.get("page_id", const.DEFAULT_PAGE_ID)
|
|
|
|
|
+ page_size = request.args.get("page_size", const.DEFAULT_PAGE_SIZE)
|
|
|
|
|
|
|
|
# check params
|
|
# check params
|
|
|
try:
|
|
try:
|
|
@@ -190,7 +192,7 @@ def get_staff_session_summary():
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
return wrap_response(404, msg="Invalid parameter: {}".format(e))
|
|
return wrap_response(404, msg="Invalid parameter: {}".format(e))
|
|
|
|
|
|
|
|
- staff_session_summary = app.user_manager.get_staff_sessions_summary_v1(
|
|
|
|
|
|
|
+ staff_session_summary = app.session_manager.get_staff_sessions_summary(
|
|
|
staff_id, page_id, page_size, status
|
|
staff_id, page_id, page_size, status
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -206,9 +208,9 @@ def get_staff_session_list():
|
|
|
if not staff_id:
|
|
if not staff_id:
|
|
|
return wrap_response(404, msg="staff_id is required")
|
|
return wrap_response(404, msg="staff_id is required")
|
|
|
|
|
|
|
|
- page_size = request.args.get("page_size", 10)
|
|
|
|
|
- page_id = request.args.get("page_id", 1)
|
|
|
|
|
- staff_session_list = app.user_manager.get_staff_session_list_v1(staff_id, page_id, page_size)
|
|
|
|
|
|
|
+ page_size = request.args.get("page_size", const.DEFAULT_PAGE_SIZE)
|
|
|
|
|
+ page_id = request.args.get("page_id", const.DEFAULT_PAGE_ID)
|
|
|
|
|
+ staff_session_list = app.session_manager.get_staff_session_list(staff_id, page_id, page_size)
|
|
|
if not staff_session_list:
|
|
if not staff_session_list:
|
|
|
return wrap_response(404, msg="staff not found")
|
|
return wrap_response(404, msg="staff not found")
|
|
|
|
|
|
|
@@ -217,8 +219,8 @@ def get_staff_session_list():
|
|
|
|
|
|
|
|
@app.route("/api/getStaffList", methods=["GET"])
|
|
@app.route("/api/getStaffList", methods=["GET"])
|
|
|
def get_staff_list():
|
|
def get_staff_list():
|
|
|
- page_size = request.args.get("page_size", 10)
|
|
|
|
|
- page_id = request.args.get("page_id", 1)
|
|
|
|
|
|
|
+ page_size = request.args.get("page_size", const.DEFAULT_PAGE_SIZE)
|
|
|
|
|
+ page_id = request.args.get("page_id", const.DEFAULT_PAGE_ID)
|
|
|
staff_list = app.user_manager.get_staff_list(page_id, page_size)
|
|
staff_list = app.user_manager.get_staff_list(page_id, page_size)
|
|
|
if not staff_list:
|
|
if not staff_list:
|
|
|
return wrap_response(404, msg="staff not found")
|
|
return wrap_response(404, msg="staff not found")
|
|
@@ -237,7 +239,7 @@ def get_conversation_list():
|
|
|
return wrap_response(404, msg="staff_id and customer_id are required")
|
|
return wrap_response(404, msg="staff_id and customer_id are required")
|
|
|
|
|
|
|
|
page = request.args.get("page")
|
|
page = request.args.get("page")
|
|
|
- response = app.user_manager.get_conversation_list_v1(staff_id, customer_id, page)
|
|
|
|
|
|
|
+ response = app.session_manager.get_conversation_list(staff_id, customer_id, page, const.DEFAULT_CONVERSATION_SIZE)
|
|
|
return wrap_response(200, data=response)
|
|
return wrap_response(200, data=response)
|
|
|
|
|
|
|
|
|
|
|
|
@@ -246,6 +248,23 @@ def send_message():
|
|
|
return wrap_response(200, msg="暂不实现功能")
|
|
return wrap_response(200, msg="暂不实现功能")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+@app.route("/api/quitHumanInterventionStatus", methods=["GET"])
|
|
|
|
|
+def quit_human_interventions_status():
|
|
|
|
|
+ """
|
|
|
|
|
+ 退出人工介入状态
|
|
|
|
|
+ :return:
|
|
|
|
|
+ """
|
|
|
|
|
+ staff_id = request.args.get("staff_id")
|
|
|
|
|
+ customer_id = request.args.get("customer_id")
|
|
|
|
|
+ # 测试环境: staff_id 强制等于1688854492669990
|
|
|
|
|
+ staff_id = 1688854492669990
|
|
|
|
|
+ if not customer_id or not staff_id:
|
|
|
|
|
+ return wrap_response(404, msg="user_id and staff_id are required")
|
|
|
|
|
+ response = quit_human_intervention_status(customer_id, staff_id)
|
|
|
|
|
+
|
|
|
|
|
+ return wrap_response(200, data=response)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
@app.errorhandler(werkzeug.exceptions.BadRequest)
|
|
@app.errorhandler(werkzeug.exceptions.BadRequest)
|
|
|
def handle_bad_request(e):
|
|
def handle_bad_request(e):
|
|
|
logger.error(e)
|
|
logger.error(e)
|
|
@@ -264,11 +283,26 @@ if __name__ == '__main__':
|
|
|
logging_level = logging.getLevelName(args.log_level)
|
|
logging_level = logging.getLevelName(args.log_level)
|
|
|
logging_service.setup_root_logger(level=logging_level, logfile_name='agent_api_server.log')
|
|
logging_service.setup_root_logger(level=logging_level, logfile_name='agent_api_server.log')
|
|
|
|
|
|
|
|
|
|
+ # set config
|
|
|
user_db_config = config['storage']['user']
|
|
user_db_config = config['storage']['user']
|
|
|
staff_db_config = config['storage']['staff']
|
|
staff_db_config = config['storage']['staff']
|
|
|
|
|
+ agent_state_db_config = config['storage']['agent_state']
|
|
|
|
|
+ chat_history_db_config = config['storage']['chat_history']
|
|
|
|
|
+
|
|
|
|
|
+ # init user manager
|
|
|
user_manager = MySQLUserManager(user_db_config['mysql'], user_db_config['table'], staff_db_config['table'])
|
|
user_manager = MySQLUserManager(user_db_config['mysql'], user_db_config['table'], staff_db_config['table'])
|
|
|
app.user_manager = user_manager
|
|
app.user_manager = user_manager
|
|
|
|
|
|
|
|
|
|
+ # init session manager
|
|
|
|
|
+ session_manager = MySQLSessionManager(
|
|
|
|
|
+ db_config=user_db_config['mysql'],
|
|
|
|
|
+ staff_table=staff_db_config['table'],
|
|
|
|
|
+ user_table=user_db_config['table'],
|
|
|
|
|
+ agent_state_table=agent_state_db_config['table'],
|
|
|
|
|
+ chat_history_table=chat_history_db_config['table']
|
|
|
|
|
+ )
|
|
|
|
|
+ app.session_manager = session_manager
|
|
|
|
|
+
|
|
|
wecom_db_config = config['storage']['user_relation']
|
|
wecom_db_config = config['storage']['user_relation']
|
|
|
user_relation_manager = MySQLUserRelationManager(
|
|
user_relation_manager = MySQLUserRelationManager(
|
|
|
user_db_config['mysql'], wecom_db_config['mysql'],
|
|
user_db_config['mysql'], wecom_db_config['mysql'],
|