5. 开始使用
接口调用概览
图1 华为云会议管理典型场景的接口调用时序图
![]()
步骤1:创建SDK client
描述
根据华为云会议管理员帐号和密码创建SDK client。
说明:
- 华为云会议不是使用IMA的AK、SK方式鉴权,需要单独申请华为云会议的管理员帐号。
- 中国站的endpoint是api.meeting.huaweicloud.com;国际站的endpoint是api-intl.meeting.huaweicloud.com
示例代码
Copied!
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkmeeting.v1 import *
from huaweicloudsdkmeeting.v1.meeting_credentials import MeetingCredentials
import os
def create_client():
try:
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不传参时可以创建立即开始的会议。
示例代码
Copied!
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传参时可以预约将来的会议。
示例代码
Copied!
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)
if len(account_list) > 10:
account_list = account_list[0:9]
schedule_meeting(client, "测试会议", start_time, 60, account_list)
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编辑会议。编辑会议时需要传原来会议的所有参数,否则这个参数将被恢复默认值。
示例代码
Copied!
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可以查询正在进行或者尚未开始的会议。
示例代码
Copied!
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可以查询正在进行或者尚未开始的会议详情。
示例代码
Copied!
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。
示例代码
Copied!
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可以查询已经结束会议列表。
Copied!
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来查询历史会议详情。
Copied!
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])
华为云会议管理典型场景_Python
0. 版本说明
本示例基于华为云SDK V3.0版本开发。
1. 介绍
华为云会议管理介绍
华为云会议的Pyton SDK(huaweicloudsdkmeeting)开放了会议管理接口,用于与第三方的业务系统集成。可以实现会议的创建、预约、编辑、取消、查询等操作。开放的接口支持如下功能:
会议可以创建在并发会议资源上,也可以创建在云会议室上。会议室会议的管理请参考《华为云会议云会议室管理典型场景-Python》。
2.开发前准备
具体操作步骤,请参考:开发前准备
3.问题求助通道:
4.安装SDK:
在使用华为云会议服务端SDK前,您需要安装“huaweicloudsdkcore”和“huaweicloudsdkmeeting”。
5. 开始使用
接口调用概览
图1 华为云会议管理典型场景的接口调用时序图
步骤1:创建SDK client
描述
根据华为云会议管理员帐号和密码创建SDK client。 说明:
示例代码
# 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.修订记录