feat:提交预订会议室
This commit is contained in:
@@ -3,13 +3,14 @@ from decouple import config
|
||||
from datetime import datetime
|
||||
from langchain_openai import ChatOpenAI
|
||||
from typing import TypedDict, Annotated, List, Optional, Union
|
||||
import logging,json
|
||||
import logging, json
|
||||
from yj_room_agent.db import snow_id, db_main
|
||||
from yj_room_agent.template import template
|
||||
from yj_room_agent.tools import json_tools, getinfo, params_filter
|
||||
from langgraph.graph import StateGraph, END, START
|
||||
from langgraph.checkpoint.memory import MemorySaver
|
||||
from yj_room_agent.temp_history import msg_history
|
||||
|
||||
DEFAULT_QUERY_SIZE = config('DEFAULT_QUERY_SIZE', cast=int, default=30)
|
||||
room_llm = ChatOpenAI(
|
||||
model=config('MODEL_NAME', default=''),
|
||||
@@ -22,6 +23,15 @@ room_llm = ChatOpenAI(
|
||||
logger = logging.getLogger('django')
|
||||
|
||||
|
||||
def parse_time(time_str: str) -> int:
|
||||
try:
|
||||
timestamp = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S").timestamp()
|
||||
return int(timestamp * 1000)
|
||||
except Exception as ee:
|
||||
print("解析时间错误:" + str(ee.with_traceback()))
|
||||
return int(datetime.now().timestamp() * 1000)
|
||||
|
||||
|
||||
class RoomChatAgentState(TypedDict):
|
||||
user_query: str
|
||||
conversation_id: str
|
||||
@@ -150,15 +160,47 @@ def query_avliable_meeting_room_node(state: RoomChatAgentState) -> dict:
|
||||
|
||||
|
||||
def book_meeting_node(state: RoomChatAgentState) -> dict:
|
||||
logger.info(f"user:{state.get('user_id', '1')} ---------------进入 pre_book_meeting_node(预约会议) 节点-")
|
||||
data = {
|
||||
'code': 200,
|
||||
'message': '预约会议成功',
|
||||
'data': {
|
||||
'meeting_id': '17592186050585',
|
||||
logger.info(f"user:{state.get('user_id', '1')} ---------------进入 book_meeting_node(预订会议) 节点-")
|
||||
data = state.get('pre_book_meeting_data', {})
|
||||
params = state.get('params', {})
|
||||
result=None
|
||||
try:
|
||||
new_data = {
|
||||
"subject": data.get('subject', '系统默认主题'),
|
||||
"meetingRoomId": data["room_id"],
|
||||
"meetingRoomName": "会议室名称",
|
||||
"meetingDateTimeStamp": parse_time(data["start_time"]),
|
||||
"startDateTimeStamp": parse_time(data["start_time"]),
|
||||
"endDateTimeStamp": parse_time(data["end_time"]),
|
||||
"meetingPersonYhtUserIds": [
|
||||
|
||||
],
|
||||
"meetingPersonAmount": data.get('capacity', 0),
|
||||
"remindArray": [
|
||||
15
|
||||
],
|
||||
"content": "会议内容",
|
||||
"isSendMail": True,
|
||||
"isSendMsg": True
|
||||
}
|
||||
}
|
||||
return {'last_node': 'book_meeting', 'book_meeting_data': data}
|
||||
result=getinfo.book_meeting(params, new_data)
|
||||
data = result.get('data', {})
|
||||
start_time = data.get('startTime', None)
|
||||
end_time = data.get('endTime', None)
|
||||
del data['startDateTime']
|
||||
del data['endDateTime']
|
||||
del data['meetingDateTime']
|
||||
if start_time:
|
||||
st = params_filter.parse_timestamp_to_str(start_time)
|
||||
data['startTime'] = st
|
||||
if end_time:
|
||||
end = params_filter.parse_timestamp_to_str(end_time)
|
||||
data['endTime'] = end
|
||||
result['data'] = data
|
||||
except Exception as e:
|
||||
logger.error(f"user:{state.get('user_id', '1')} 预订会议失败:{e}")
|
||||
result={"code":"500","message":f"预订会议失败,原因:{e}"}
|
||||
return {'last_node': 'book_meeting', 'book_meeting_data': result}
|
||||
|
||||
|
||||
# 取消会议室,需要判断历史消息或者用户输入,判断是否有会议室号,如果有,则取消会议,如果没有,触发查询已预订会议
|
||||
@@ -172,7 +214,7 @@ def query_meeting_node(state: RoomChatAgentState) -> dict:
|
||||
logger.info(f"user:{state.get('user_id', '1')} ---------------进入 query_meeting_node(查询已预订会议) 节点-")
|
||||
param = state.get('params', {})
|
||||
# 示例数据,后面替换用友查询接口数据
|
||||
meeting_room=getinfo.query_meetingbooking_info(param)
|
||||
meeting_room = getinfo.query_meetingbooking_info(param)
|
||||
result = params_filter.filter_state(meeting_room)
|
||||
return {'query_meeting_data': result, 'last_node': 'query_meeting'}
|
||||
|
||||
|
||||
@@ -302,6 +302,8 @@ def book_meeting(params: dict, data: dict):
|
||||
request_url = gateway_url + BOOKMEETING
|
||||
logger.debug("request url => {0}".format(request_url))
|
||||
logger.debug("book_meeting params => {0}".format(params))
|
||||
acc=get_access_token(tenant_id)
|
||||
params['access_token'] = acc
|
||||
respones = requests.post(url=request_url, params=params,
|
||||
headers=header, data=json.dumps(data),verify=False)
|
||||
logger.info("book meeting respones => {0}".format(respones.text))
|
||||
|
||||
Reference in New Issue
Block a user