培训、宣讲、金融路演及线上付费活动等场景用到的功能主要包括会前设置会议参数、参会者报名申请/导入白名单、确认参会人资格、反馈审核结果,会后分析汇总参会数据等。客户在创建会议时除腾讯会议参数外往往还有其他活动相关信息要设置,活动报名需要收集个性化信息,审核报名和会后分析数据时要对接客户自有信息库,这些需求很难通过标准会议功能来实现,需要使用到API接口将腾讯会议嵌入到客户业务系统来完成在线活动的组织。
本文将介绍基于网络研讨会如果通过腾讯会议API来完成一场报名活动的组织,主要业务流程如下图。
创建一场活动需要使用到创建网络研讨会、修改网络研讨会嘉宾列表、设置网络研讨会暖场配置等接口,还需要订阅素材上传结果Webhook会议事件消息。
{
// 创建者的userid
"userid": "carl",
"instanceid": 1,
"subject": "报名活动",
// 主办方名称(1~40位字符长度)。
"sponsor": "举办方1",
"start_time": "string required",
"end_time": "string required",
// 观众观看限制类型,这里选1(报名)
"admission_type": 1,
"hosts": [
{
"userid": "carl"
}
],
// 封面图片URL,格式限制参考接口文档
"cover_url": "www.test.com/1.png",
// 网络研讨会描述详情
"description": "string",
// 是否开启通过邀请链接自动成为嘉宾
"enable_guest_invite_link": "boolean",
// 聊天敏感词设置
"sensitive_words": [
"string"
],
// 是否开启准备模式
"preparation_mode": true
}
{
// 会议创建者userid
"userid": "string required",
"instanceid": "integer required",
"guests": [
{
// 嘉宾类型,1为内部嘉宾,2为外部嘉宾
"guest_type": "integer required",
// 内部嘉宾填userid
"userid": "string",
// 外部嘉宾填手机号和国家/地区代码
"area": "string",
"phone_number": "string",
// 嘉宾名称,外部嘉宾需要填写,且仅对外部嘉宾生效
"guest_name": "string"
}
]
}
请求发送后需要记录请求响应头中的X-Tc-Trace参数,用于和素材上传结果Webhook事件消息匹配上,获取接口调用结果。
{
"operator_id": "carl",
"operator_id_type": 1,
"instanceid": 1,
// 暖场图片和视频二选一,地址要公网可访问
"warm_up_picture": "string",
"warm_up_video": "string",
// 是否允许参会者在暖场中邀请成员,根据实际需求设置
"allow_participants_invite_others": "boolean"
}
上一步记录的X-Tc-Trace参数和消息中的trace_id参数做对比,相同时表示是对应接口调用的异步结果返回。
{
"event":"meeting.medium-uploaded", //事件名
"trace_id":"e7aa65dd-f7e6-4b62-912c-2035173b34a9",//事件的唯一序列值,可对应到具体请求
"payload":[
{
"operate_time":1609313201465,//毫秒级别事件操作时间戳,成功/失败时间点
"event_upload_status":true,//上传事件是否成功,true:全部素材上传成功;false:存在素材上传失败,需重新上传全部素材
"upload_info":[ //根据本次请求中的上传素材类型数量决定对象个数
{
"upload_status":true, //true:上传成功;false:上传失败
"error_msg":"",//如果上传失败,则该字段返回失败原因
"medium_type":1, //1:video,2:pic,3:file
"medium_url":"",
"medium_id":""//仅在“上传文档”场景返回该字段,文档上传成功后会返回medium_id(等效于文档ID)
}
{
"upload_status":true, //true:上传成功;false:上传失败
"error_msg":"",//如果上传失败,则该字段返回失败原因
"medium_type":2, //1:video,2:pic,3:file
"medium_url":"",
"medium_id":""//仅在“上传文档”场景返回该字段,文档上传成功后会返回medium_id(等效于文档ID)
}
]
"meeting_info":{//会议信息
"meeting_id":"13339451618278424869",// 会议id
"meeting_code":"445999969", // 会议code
"subject":"tester的快速会议", // 会议主题
"meeting_type":0,// 会议类型(0-一次性会议,1-周期性会议,2-微信专属会议,3-rooms投屏会议,5-个人会议号会议,6-网络研讨会)
"start_time":1608522626,// 秒级别的会议开始时间戳
"end_time":1609415039// 秒级别的会议结束时间戳
}
}
]
}
报名包括用户手动报名和白名单导入两种方式,不管使用什么报名方式一般都需要将审批类型设置为手动审批,支持用户在腾讯会议页面手动报名时还要设置收集问题列表,直接导入或者在客户自己的系统报名审批时调用导入网络研讨会报名信息的接口即可。
{
"operator_id": "carl",
"operator_id_type": 1,
// 审批类型设置为手动审批
"approve_type": 2,
"instanceid": "integer required",
// 如果需要在会议入口报名,就开启问题收集;否则关闭
"is_collect_question": "integer",
"question_list": [
{
"question_type": "integer",
"special_type": "integer",
"is_required": "integer required",
"option_list": [
{
"content": "string"
}
],
"question_title": "string"
}
],
// 本企业用户是否需要报名,根据实际需要设置
"no_registration_needed_for_staff": "boolean",
// 报名人数上限
"enroll_number": "integer",
// 报名截止时间
"enroll_deadline": "string",
// 报名审批结果通知方式
"enroll_push_type": [
"integer"
]
}
{
"operator_id": "carl",
"operator_id_type": 1,
"instanceid": 1,
"enroll_list": [
{
// 企业内用户导入时传userid,企业外用户导入时传手机号
"userid": "string",
"area": "string",
"phone_number": "string",
"nick_name": "string"
}
]
}
会议需要用户手动报名时可以开启报名审核,如果所有参会人员都是白名单导入,可以跳过此步骤。报名审核可以选择定期审核或者实时审核,定期审核时调用查询网络研讨会报名信息接口来获取待审核的报名信息,实时审核可以订阅用户报名Webhook事件消息,然后调用审批网络研讨会报名信息接口进行审核。
具体用法参考官网文档,查询到的待审批状态的报名对象作为下一步审批报名的输入参数。
记录消息里面的enroll_info信息,enroll_id和报名问题里面的信息后续可以用于确认报名者的身份。
{
"event":"enroll.enroll", // 事件名
"trace_id":"e7aa65dd-f7e6-4b62-912c-2035173b34a9", // 事件的唯一序列值
"payload":[
{
"operate_time":1609313201465, //毫秒级别事件操作时间戳
"operator":{ //事件操作者
"userid":"tester", //事件操作者id(同企业用户才返回企业用户唯一id,OAuth用户返回openId,rooms返回roomsId)
"user_name":"tester_name", //事件操作者名称
"ms_open_id":"tester_id" // 会议中的临时id
},
"enroll_info":{ // 报名信息
"meeting_id":"13339451618278424869", // 会议id
"enroll_id":13339451618, // 报名id
"answer_list":[{
"question_id":12, //问题id
"question_content":"tester_name", //问题内容
"answer_type":3, //回答类型:1 单选,2 多选,3 文本
"is_required":1, //是否必填:1 否,2 是
"answer_content": ["tester_name"] //回答内容:单选/文本只有一个元素,多选会有多个
}]
}
}
]
}
{
"operator_id": "carl",
"operator_id_type": 1,
// 是否通过
"action": "integer",
// 要审批的报名id列表
"enroll_id_list": [
"integer"
],
"instanceid": "integer"
}
{
"operator_id": "carl",
"operator_id_type": 1,
"phone_numbers": [
{
// 分机号没有时不要传该参数
"extension_number": "string",
"nick_name": "string",
"area": "integer required",
"phone": "string required"
}
]
}
会议结束后调用查询参会成员列表获取参会信息,然后通过查询会议成员报名ID和查询会议报名信息等接口来确认参会人员的身份,通过和客户自有数据库的人员信息匹配,得出参会情况分析报表。
具体用法参考官网文档,除了参会情况所需的字段信息外,还需要记录参会成员的ms_open_id字段用于后续确认身份,需要注意的是这里不要使用phone或者uuid字段来作为身份标识,这些字段在新接口中已经不支持。
具体用法参考官网文档,输入前面获取到的ms_open_id列表,查询用户对应的报名ID并保存下来,对于接口导入的参会者直接和之前导入时返回的结果进行匹配确认身份,对于用户手动报名的需要继续调用查询报名信息接口来确认身份。
具体用法参考官网文档,查询到的已批准状态报名对象的报名ID(enroll_id)和前面的匹配ms_open_id确认身份,需要注意的是本接口虽然也有返回ms_open_id,但是不能直接拿来用,原因是同一个手机号绑定了多个腾讯会议账号时,这个值和会中的不一定是相同的。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。