feat:提交预订会议室
This commit is contained in:
@@ -10,6 +10,7 @@ from yj_room_agent.tools import json_tools, getinfo, params_filter
|
|||||||
from langgraph.graph import StateGraph, END, START
|
from langgraph.graph import StateGraph, END, START
|
||||||
from langgraph.checkpoint.memory import MemorySaver
|
from langgraph.checkpoint.memory import MemorySaver
|
||||||
from yj_room_agent.temp_history import msg_history
|
from yj_room_agent.temp_history import msg_history
|
||||||
|
|
||||||
DEFAULT_QUERY_SIZE = config('DEFAULT_QUERY_SIZE', cast=int, default=30)
|
DEFAULT_QUERY_SIZE = config('DEFAULT_QUERY_SIZE', cast=int, default=30)
|
||||||
room_llm = ChatOpenAI(
|
room_llm = ChatOpenAI(
|
||||||
model=config('MODEL_NAME', default=''),
|
model=config('MODEL_NAME', default=''),
|
||||||
@@ -22,6 +23,15 @@ room_llm = ChatOpenAI(
|
|||||||
logger = logging.getLogger('django')
|
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):
|
class RoomChatAgentState(TypedDict):
|
||||||
user_query: str
|
user_query: str
|
||||||
conversation_id: str
|
conversation_id: str
|
||||||
@@ -150,15 +160,47 @@ def query_avliable_meeting_room_node(state: RoomChatAgentState) -> dict:
|
|||||||
|
|
||||||
|
|
||||||
def book_meeting_node(state: RoomChatAgentState) -> dict:
|
def book_meeting_node(state: RoomChatAgentState) -> dict:
|
||||||
logger.info(f"user:{state.get('user_id', '1')} ---------------进入 pre_book_meeting_node(预约会议) 节点-")
|
logger.info(f"user:{state.get('user_id', '1')} ---------------进入 book_meeting_node(预订会议) 节点-")
|
||||||
data = {
|
data = state.get('pre_book_meeting_data', {})
|
||||||
'code': 200,
|
params = state.get('params', {})
|
||||||
'message': '预约会议成功',
|
result=None
|
||||||
'data': {
|
try:
|
||||||
'meeting_id': '17592186050585',
|
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
|
||||||
}
|
}
|
||||||
}
|
result=getinfo.book_meeting(params, new_data)
|
||||||
return {'last_node': 'book_meeting', 'book_meeting_data': 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}
|
||||||
|
|
||||||
|
|
||||||
# 取消会议室,需要判断历史消息或者用户输入,判断是否有会议室号,如果有,则取消会议,如果没有,触发查询已预订会议
|
# 取消会议室,需要判断历史消息或者用户输入,判断是否有会议室号,如果有,则取消会议,如果没有,触发查询已预订会议
|
||||||
|
|||||||
@@ -302,6 +302,8 @@ def book_meeting(params: dict, data: dict):
|
|||||||
request_url = gateway_url + BOOKMEETING
|
request_url = gateway_url + BOOKMEETING
|
||||||
logger.debug("request url => {0}".format(request_url))
|
logger.debug("request url => {0}".format(request_url))
|
||||||
logger.debug("book_meeting params => {0}".format(params))
|
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,
|
respones = requests.post(url=request_url, params=params,
|
||||||
headers=header, data=json.dumps(data),verify=False)
|
headers=header, data=json.dumps(data),verify=False)
|
||||||
logger.info("book meeting respones => {0}".format(respones.text))
|
logger.info("book meeting respones => {0}".format(respones.text))
|
||||||
|
|||||||
Reference in New Issue
Block a user