华为云会议管理典型场景_Python
引导式阅读
Python
华为云会议管理典型场景_Python
作者
C***
上架时间
2023-11-16 06:28:25

华为云会议管理典型场景_Python

0. 版本说明

本示例基于华为云SDK V3.0版本开发。

1. 介绍

华为云会议管理介绍

华为云会议的Pyton SDK(huaweicloudsdkmeeting)开放了会议管理接口,用于与第三方的业务系统集成。可以实现会议的创建、预约、编辑、取消、查询等操作。开放的接口支持如下功能:

功能 方法名 备注
创建会议 create_meeting 创建立即开始的会议或预约会议
取消预约会议 cancel_meeting
编辑预约会议 update_meeting
查询会议列表 search_meetings 查询尚未召开或者正在召开的会议列表
查询会议详情 show_meeting_detail
查询在线会议列表 search_online_meetings 查询正在召开的会议列表
查询在线会议详情 show_online_meeting_detail
查询历史会议列表 search_his_meetings 查询已经结束的会议列表
查询历史会议详情 show_his_meeting_detail
查询录制列表 search_recordings
查询录制会议详情 show_recording_detail
查询录制文件下载链接 show_recording_file_download_urls
批量删除录制 delete_recordings

会议可以创建在并发会议资源上,也可以创建在云会议室上。会议室会议的管理请参考《华为云会议云会议室管理典型场景-Python》。

2.开发前准备

  • 申请华为云账号
  • 申请华为云会议测试资源
  • 获取华为云会议的管理员帐号和密码

具体操作步骤,请参考:开发前准备

3.问题求助通道:

4.安装SDK:

在使用华为云会议服务端SDK前,您需要安装“huaweicloudsdkcore”和“huaweicloudsdkmeeting”。

pip install huaweicloudsdkcore pip install huaweicloudsdkmeeting

5. 开始使用

接口调用概览

图1 华为云会议管理典型场景的接口调用时序图

步骤1:创建SDK client

描述

根据华为云会议管理员帐号和密码创建SDK client。 说明:

  • 华为云会议不是使用IMA的AK、SK方式鉴权,需要单独申请华为云会议的管理员帐号。
  • 中国站的endpoint是api.meeting.huaweicloud.com;国际站的endpoint是api-intl.meeting.huaweicloud.com
示例代码
# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from huaweicloudsdkmeeting.v1.meeting_credentials import MeetingCredentials import os def create_client(): try: # 认证用的账号和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以账号和密码保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量YOUR_MANAGER_ACCOUNT和YOUR_PASSWORD。 username = os.environ["YOUR_MANAGER_ACCOUNT"] password = os.environ["YOUR_PASSWORD"] credentials = MeetingCredentials(username, password) client = MeetingClient.new_builder() \ .with_credentials(credentials) \ .with_endpoint("api.meeting.huaweicloud.com") \ .build() return client except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)

步骤2:创建立即开始的会议

描述

使用步骤1生成的client中的create_meeting方法,start_time和length不传参时可以创建立即开始的会议。

示例代码
# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client def create_meeting(client=None, conf_subject=None): try: body = RestScheduleConfDTO(subject=conf_subject, media_types="HDVideo") request = CreateMeetingRequest(body=body) response = client.create_meeting(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() create_meeting(client, "测试会议")

步骤3:预约会议

描述

使用步骤1生成的client中的create_meeting方法,start_time和length传参时可以预约将来的会议。

示例代码
# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client from datetime import datetime, timedelta from dept_user.search_corp_dir import search_corp_dir from dept_user.show_my_info import show_my_info def schedule_meeting(client=None, conf_subject=None, start_time=None, conf_len=None, attendee_account_list=None, vmr_flag=None, vmr_id=None): try: attendees = [] if attendee_account_list is not None and len(attendee_account_list) > 0: for attendee_account in attendee_account_list: attendees.append(RestAttendeeDTO(account_id=attendee_account)) body = RestScheduleConfDTO(subject=conf_subject, media_types="HDVideo", start_time=start_time, length=conf_len, attendees=attendees, vmr_flag=vmr_flag, vmr_id=vmr_id) request = CreateMeetingRequest(body=body) response = client.create_meeting(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() start_time = datetime.utcnow() + timedelta(days=1) start_time = start_time.strftime("%Y-%m-%d %H:%M") result = search_corp_dir(client) account_list = [] for member in result.data: account_list.append(member.account) # 只添加10个与会人 if len(account_list) > 10: account_list = account_list[0:9] # 创建并发资源的会议 schedule_meeting(client, "测试会议", start_time, 60, account_list) # 创建VMR资源的会议 my_info = show_my_info(client) for vmr in my_info.vmr_list: if vmr.vmr_mode == 1: schedule_meeting(client, "VMR测试会议", start_time, 60, account_list, vmr_flag=1, vmr_id=vmr.id)

步骤4:编辑会议

描述

会议尚未开始时,可以使用client的update_meeting编辑会议。编辑会议时需要传原来会议的所有参数,否则这个参数将被恢复默认值。

示例代码
# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client from search_meeting import search_meeting from show_meeting_detail import show_meeting_detail from datetime import datetime, timedelta def update_meeting(client=None, conf_id=None, conf_new_subject=None): try: conf_detail = show_meeting_detail(client, conf_id) start_time = datetime.strptime(conf_detail.conference_data.start_time, "%Y-%m-%d %H:%M") end_time = datetime.strptime(conf_detail.conference_data.end_time, "%Y-%m-%d %H:%M") length = int((end_time - start_time).total_seconds() / 60) body = RestScheduleConfDTO(subject=conf_new_subject, start_time=conf_detail.conference_data.start_time, length=length, media_types=conf_detail.conference_data.media_types, attendees=conf_detail.conference_data.part_attendee_info, conf_config_info=conf_detail.conference_data.conf_config_info ) request = UpdateMeetingRequest(conference_id=conf_id, body=body) response = client.update_meeting(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() conf_id_list = search_meeting(client) if len(conf_id_list) > 0: # 只能修改未开始的会议 update_meeting(client, conf_id_list[0], "测试会议修改后的主题")

步骤5:查询会议列表

描述

使用client的search_meetings可以查询正在进行或者尚未开始的会议。

示例代码
# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client def search_meeting(client=None, search_key=None): try: request = SearchMeetingsRequest(search_key=search_key) response = client.search_meetings(request) conf_id_list = [] for conf in response.data: conf_id_list.append(conf.conference_id) return conf_id_list except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() conf_id_list = search_meeting(client) print(conf_id_list)

步骤6:查询会议详情

描述

使用client的show_meeting_detail可以查询正在进行或者尚未开始的会议详情。

示例代码
# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client from search_meeting import search_meeting def show_meeting_detail(client=None, conf_id=None): try: request = ShowMeetingDetailRequest(conference_id=conf_id) response = client.show_meeting_detail(request) print(response) return response except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() conf_id_list = search_meeting(client) print(conf_id_list) if len(conf_id_list) > 0: show_meeting_detail(client, conf_id_list[0])

步骤7:取消会议

描述

使用client的cancel_meeting可以查询正在进行或者尚未开始的会议。如果需要取消正在召开的会议,需要传参数type=1。

示例代码
# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client from search_meeting import search_meeting def cancel_meeting(client=None, conf_id=None): try: request = CancelMeetingRequest(conference_id=conf_id, type=1) client.cancel_meeting(request) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() conf_id_list = search_meeting(client) for conf_id in conf_id_list: cancel_meeting(client,conf_id) print(conf_id + " is canceled.")

步骤8:查询历史会议列表

描述

使用client的search_his_meetings可以查询已经结束会议列表。

# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client from time import time def search_history_meeting(client=None, search_key=None, start_time=None, end_time=None): try: request = SearchHisMeetingsRequest(search_key=search_key,start_date=start_time, end_date=end_time) response = client.search_his_meetings(request) conf_uuid_list = [] for conf in response.data: conf_uuid_list.append(conf.conf_uuid) return conf_uuid_list except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() start_time = int(time() * 1000) - 30*24*3600*1000 end_time = int(time() * 1000) conf_uuid_list = search_history_meeting(client=client, start_time=start_time, end_time=end_time) print(conf_uuid_list)

步骤9:查询历史会议详情

描述

使用client的show_his_meeting_detail可以查询已经结束会议详情。需要用会议的uuid来查询历史会议详情。

# coding: utf-8 from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmeeting.v1 import * from create_client import create_client from search_history_meeting import search_history_meeting from time import time def show_history_meeting_detail(client=None, conf_uuid=None): try: request = ShowHisMeetingDetailRequest(conf_uuid=conf_uuid, offset=0, limit=30) response = client.show_his_meeting_detail(request) print(response) return response except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) if __name__ == "__main__": client = create_client() start_time = int(time() * 1000) - 30 * 24 * 3600 * 1000 end_time = int(time() * 1000) conf_uuid_list = search_history_meeting(client=client, start_time=start_time, end_time=end_time) if len(conf_uuid_list) > 0: show_history_meeting_detail(client, conf_uuid_list[0])

6.参考文件

7.修订记录

发布日期 文档版本 修订说明
2021-07-31 1.0 文档首次发布