使用PATCH方法替换日历事件中Zoom为Google Meet时遇无效会议数据错误
问题描述
现有一个关联Zoom会议的Google日历事件,完整JSON数据如下:
{"created": "2024-01-31T11:06:52.000Z","updated": "2024-02-01T07:51:44.349Z","summary": "Sample Event","start": { "dateTime": "2024-02-01T18:00:00+02:00", "timeZone": "Europe/Tallinn"},"end": { "dateTime": "2024-02-01T19:00:00+02:00", "timeZone": "Europe/Tallinn"},"extendedProperties": { "private": { "meetingId": "xxxxxxxx", "zmMeetingNum": "xxxxxxxx", "meetingParams": "{\"topic\":\"Sample Event\",\"type\":2,\"start_time\":\"2024-02-01T18:00:00+02:00\",\"duration\":60,\"timezone\":\"Europe/Tallinn\",\"invitees_hash\":\"xxxxxxxx==\"}" }},"conferenceData": { "entryPoints": [ { "entryPointType": "video", "uri": "https://company.zoom.us/xxxxxxxx", "label": "company.zoom.us/xxxxxxxx", "meetingCode": "xxxxxxxx", "passcode": "yyyyy" }, { "regionCode": "US", "entryPointType": "phone", "uri": "tel:+zzzzzz,,cccccc#", "label": "+1 zzz-yyy-xxx", "passcode": "yyyyy" }, { "entryPointType": "more", "uri": "some_uri" } ], "conferenceSolution": { "key": { "type": "addOn" }, "name": "Zoom Meeting", "iconUri": "https://lh3.googleusercontent.com/pw/AM-JKLUkiyTEgH-6DiQP85RGtd_BORvAuFnS9katNMgwYQBJUTiDh12qtQxMJFWYH2Dj30hNsNUrr-kzKMl7jX-Qd0FR7JmVSx-Fhruf8xTPPI-wdsMYez6WJE7tz7KmqsORKBEnBTiILtMJXuMvphqKdB9X=s128-no" }, "conferenceId": "xxxxxxxx", "parameters": { "addOnParameters": { "parameters": { "scriptId": "qwerasdfzxc", "realMeetingId": "xxxxxxxxx", "creatorUserId": "yyyyyyyyy", "meetingUuid": "zzzzzzzz==", "meetingType": "2", "originalEventId": "aaaaaaaaa" } } }},"reminders": { "useDefault": true },"eventType": "default"}
尝试通过PATCH方法将该事件的会议数据替换为已有的Google Meet数据时,返回Invalid conference data错误,使用的请求体如下:
{"conferenceData": { "entryPoints": [ { "entryPointType": "video", "uri": "https://meet.google.com/xxx-yyyy-zzz", "label": "meet.google.com/xxx-yyyy-zzz" } ], "conferenceSolution": { "key": { "type": "hangoutsMeet" } }, "conferenceId": "xxx-yyyy-zzz" }}
关键说明
- 使用UPDATE方法提交相同会议数据时请求成功,但系统设计要求必须使用PATCH方法(无需提前获取完整事件数据)
- 若事件当前关联的是Google Meet,使用PATCH方法替换为Zoom会议数据时请求可成功
解决方案
当用PATCH从Zoom切换到Google Meet时,需要额外清除原Zoom会议关联的私有扩展属性和conferenceData中的addOn参数,调整后的PATCH请求体如下:
{ "conferenceData": { "entryPoints": [ { "entryPointType": "video", "uri": "https://meet.google.com/xxx-yyyy-zzz", "label": "meet.google.com/xxx-yyyy-zzz" } ], "conferenceSolution": { "key": { "type": "hangoutsMeet" } }, "conferenceId": "xxx-yyyy-zzz", "parameters": null }, "extendedProperties": { "private": { "meetingId": null, "zmMeetingNum": null, "meetingParams": null } } }
原理说明
- 原事件的
extendedProperties.private中存储了Zoom的会议私有数据,直接替换conferenceData时这些残留数据会导致验证失败 - 需要将
conferenceData.parameters设为null,清除原Zoom的addOn参数 - Google日历对原生Hangouts Meet的会议数据验证更严格,残留第三方会议的关联数据会触发
Invalid conference data错误
内容的提问来源于stack exchange,提问作者Orkhan Rustamli
相关产品推荐
相关产品推荐

