前言
临时将会议室抢占10分钟,抢占后,对应的飞书会议状态会显示已被占用,官方暂未给出创建会议的接口,目前的解决方案是,先创建日历,拿到日历id,通过日历id创建日程,通过日历id和日程id添加与会人员,并且挂住会议室room_id到resource,这样就把对应的会议室占住了
<1>创建日历
/**
* 创建日历
*/
public static void newCalendar() {
CalendarService calendarService = new CalendarService(Configs.getConfig());
Calendar calendar = new Calendar();
calendar.setSummary("take up take up take up");
calendar.setDescription("抢占会议室日历");
calendar.setPermissions("public");
Response<CalendarCreateResult> response = null;
try {
response = calendarService.getCalendars().create(calendar).execute();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(response.getRequestID());
System.out.println(response.getHTTPStatusCode());
System.out.println("=================响应结果=================");
System.out.println(Jsons.DEFAULT_GSON.toJson(response));
}
响应结果:
{
"code":0,
"msg":"success",
"data":{
"calendar":{
"calendar_id":"feishu.cn_xxxxxxxxxxxxxxxa@group.calendar.feishu.cn",
"summary":"take up take up take up",
"description":"抢占会议室日历",
"permissions":"public",
"color":-46464,
"type":"shared",
"summary_alias":"",
"role":"owner"
}
}
}
<2>创建日程
/**
* 创建日程
*/
public static void newCalendarEvent(String calendar_id) {
CalendarService calendarService = new CalendarService(Configs.getConfig());
CalendarEvent calendarEvent = new CalendarEvent();
calendarEvent.setSummary("event event event");
calendarEvent.setDescription("抢占会议室日程");
TimeInfo startTime = new TimeInfo();
TimeInfo endTime = new TimeInfo();
startTime.setTimestamp("1625481900");
startTime.setTimezone("Asia/Shanghai");
endTime.setTimestamp("1625485500");
endTime.setTimezone("Asia/Shanghai");
calendarEvent.setStartTime(startTime);
calendarEvent.setEndTime(endTime);
Response<CalendarEventCreateResult> response = null;
try {
response = calendarService.getCalendarEvents().create(calendarEvent).setCalendarId(calendar_id).execute();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(response.getRequestID());
System.out.println(response.getHTTPStatusCode());
System.out.println("=================响应结果=================");
System.out.println(Jsons.DEFAULT_GSON.toJson(response));
}
响应结果:
{
"code":0,
"msg":"success",
"data":{
"event":{
"event_id":"xxxxxxxxxx-xxxxxxxxx-xxxxxx-xxxxxx-xxxxxx_0",
"summary":"event event event",
"description":"抢占会议室日程",
"start_time":{
"timestamp":"1625481900",
"timezone":"Asia/Shanghai"
},
"end_time":{
"timestamp":"1625485500",
"timezone":"Asia/Shanghai"
},
"visibility":"",
"attendee_ability":"none",
"free_busy_status":"busy",
"color":-1,
"recurrence":"",
"status":"confirmed",
"is_exception":false
}
}
}
<3>添加日程参与人
/**
* 占住会议室
*/
public static void newMeet(String calendar_id,String event_id) {
CalendarService calendarService = new CalendarService(Configs.getConfig());
CalendarEventAttendeeCreateReqBody calendarEventAttendeeCreateReqBody = new CalendarEventAttendeeCreateReqBody();
CalendarEventAttendee calendarEventAttendee = new CalendarEventAttendee();
calendarEventAttendee.setType("resource");
calendarEventAttendee.setIsOptional(true);
calendarEventAttendee.setUserId("ou_xxxxxxxxxxxxxxxxxxxxxxx");
calendarEventAttendee.setRoomId("omm_xxxxxxxxxxxxxxxxxxxxxxx");
CalendarEventAttendee[] calendarEventAttendees = new CalendarEventAttendee[1];
calendarEventAttendees[0] = calendarEventAttendee;
calendarEventAttendeeCreateReqBody.setAttendees(calendarEventAttendees);
calendarEventAttendeeCreateReqBody.setNeedNotification(true);
Response<CalendarEventAttendeeCreateResult> response = null;
try {
response = calendarService.getCalendarEventAttendees().create(calendarEventAttendeeCreateReqBody).setCalendarId(calendar_id).setEventId(event_id).setUserIdType("open_id").execute();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(response.getRequestID());
System.out.println(response.getHTTPStatusCode());
System.out.println("=================响应结果=================");
System.out.println(Jsons.DEFAULT_GSON.toJson(response));
}
响应结果:
{
"code":0,
"msg":"success",
"data":{
"attendees":[
{
"type":"resource",
"attendee_id":"resource_xxxxxxxxxxxxxxxxx",
"rsvp_status":"needs_action",
"is_organizer":false,
"display_name":"煮酒-会议室",
"room_id":"omm_xxxxxxxxxxxxxxxxxxxxxxxx"
}
]
}
}
占住会议室后,可以在日历里面看见被占住了
总结
1、占住会议室操作比较复杂
2、占住后的信息什么都没看见,不知道是不是我参数设置有问题
3、没有创建会议室绑定日程的接口