通过 API 编辑 Google 日历事件与外部 Link 的 URI
Editing Google Calendar Event Meets URI With External Link via API
我有代码在过去一年左右的时间里一直在工作,它通过 Google日历API.
例如,如果我点击下面的“加入 Google 会议”,它不会像往常一样进入 meets.google.com
link,因为我将其替换为我自己的自定义 link。
不幸的是,由于某些原因,在过去的几周内它停止工作了。现在,当我的代码尝试编辑会议的 URI 时,它 returns 这个错误:Google::Apis::ClientError (invalid: Invalid Value)
。我已经几个月没有更改代码了,而且最近才开始发生这种情况。
代码如下所示:
def update_event_meet_url(service, event, send_updates = "all")
entry_points = [
Google::Apis::CalendarV3::EntryPoint.new(
entry_point_type: "video",
label: meeting_url,
uri: meeting_url,
),
]
if original_phone_info.present?
entry_points << Google::Apis::CalendarV3::EntryPoint.new(
entry_point_type: original_phone_info["entry_point_type"],
label: original_phone_info["label"],
uri: original_phone_info["uri"],
pin: original_phone_info["pin"],
region_code: original_phone_info["region_code"],
)
end
event_changes = {
conference_data: Google::Apis::CalendarV3::ConferenceData.new(entry_points: entry_points),
}
updated_event = Google::Apis::CalendarV3::Event.new(event_changes)
service.patch_event(
gcalendar_id,
event.id,
updated_event,
conference_data_version: 1,
send_updates: send_updates,
)
end
我知道问题出在视频入口点,因为我用可用的 https://meets.google.com
link 替换了 meeting_url
并且它起作用了。但是如果我尝试其他任何不是 meets.google.com
的东西,它就会出错。
我正在使用这个 Ruby gem https://github.com/googleapis/google-api-ruby-client.
如有任何帮助,我们将不胜感激!谢谢!
联系了 google 支持,看起来有一个最近的版本改变了 conferenceData.conferenceSolution.key.type
的行为。更多信息在这里:https://developers.google.com/calendar/releases#january_11_2021)我们
基本上我需要将我的会议解决方案密钥类型更改为 addOn
而不是 hangoutsMeet
。我遇到的后续问题是我仍然需要一个 hangoutsMeet link,因为我使用的第三方 url 最终会重定向到 meets.google.com link。获得 hangoutsMeet
link 的唯一方法是使用 conferenceData.conferenceSolution.key.type = hangoutsMeet
.
创建初始事件
所以我所做的是使用 conferenceData.conferenceSolution.key.type = 'hangoutsMeet'
创建 google 事件,然后我进行了后续 patch_event
调用,将初始 hangoutsMeet 会议解决方案设置为 null
和创建了一个 addOn
类型的新 conferenceSolution
。这样我就可以存储原始 meets.google.com link 然后使用 link 从我的第三方重定向 link.
def update_event_meet_url(service, event, send_updates = "all")
entry_points = [
Google::Apis::CalendarV3::EntryPoint.new(
entry_point_type: "video",
label: meeting_url,
uri: meeting_url,
),
]
conference_solution_key = Google::Apis::CalendarV3::ConferenceSolutionKey.new(type: "addOn")
conference_solution =
Google::Apis::CalendarV3::ConferenceSolution.new(key: conference_solution_key)
event_changes = {
conference_data: Google::Apis::CalendarV3::ConferenceData.new(
conference_solution: conference_solution,
entry_points: entry_points,
create_request: nil,
),
}
updated_event = Google::Apis::CalendarV3::Event.new(event_changes)
service.patch_event(
gcalendar_id,
event.id,
updated_event,
conference_data_version: 1,
send_updates: send_updates,
)
end
我有代码在过去一年左右的时间里一直在工作,它通过 Google日历API.
例如,如果我点击下面的“加入 Google 会议”,它不会像往常一样进入 meets.google.com
link,因为我将其替换为我自己的自定义 link。
不幸的是,由于某些原因,在过去的几周内它停止工作了。现在,当我的代码尝试编辑会议的 URI 时,它 returns 这个错误:Google::Apis::ClientError (invalid: Invalid Value)
。我已经几个月没有更改代码了,而且最近才开始发生这种情况。
代码如下所示:
def update_event_meet_url(service, event, send_updates = "all")
entry_points = [
Google::Apis::CalendarV3::EntryPoint.new(
entry_point_type: "video",
label: meeting_url,
uri: meeting_url,
),
]
if original_phone_info.present?
entry_points << Google::Apis::CalendarV3::EntryPoint.new(
entry_point_type: original_phone_info["entry_point_type"],
label: original_phone_info["label"],
uri: original_phone_info["uri"],
pin: original_phone_info["pin"],
region_code: original_phone_info["region_code"],
)
end
event_changes = {
conference_data: Google::Apis::CalendarV3::ConferenceData.new(entry_points: entry_points),
}
updated_event = Google::Apis::CalendarV3::Event.new(event_changes)
service.patch_event(
gcalendar_id,
event.id,
updated_event,
conference_data_version: 1,
send_updates: send_updates,
)
end
我知道问题出在视频入口点,因为我用可用的 https://meets.google.com
link 替换了 meeting_url
并且它起作用了。但是如果我尝试其他任何不是 meets.google.com
的东西,它就会出错。
我正在使用这个 Ruby gem https://github.com/googleapis/google-api-ruby-client.
如有任何帮助,我们将不胜感激!谢谢!
联系了 google 支持,看起来有一个最近的版本改变了 conferenceData.conferenceSolution.key.type
的行为。更多信息在这里:https://developers.google.com/calendar/releases#january_11_2021)我们
基本上我需要将我的会议解决方案密钥类型更改为 addOn
而不是 hangoutsMeet
。我遇到的后续问题是我仍然需要一个 hangoutsMeet link,因为我使用的第三方 url 最终会重定向到 meets.google.com link。获得 hangoutsMeet
link 的唯一方法是使用 conferenceData.conferenceSolution.key.type = hangoutsMeet
.
所以我所做的是使用 conferenceData.conferenceSolution.key.type = 'hangoutsMeet'
创建 google 事件,然后我进行了后续 patch_event
调用,将初始 hangoutsMeet 会议解决方案设置为 null
和创建了一个 addOn
类型的新 conferenceSolution
。这样我就可以存储原始 meets.google.com link 然后使用 link 从我的第三方重定向 link.
def update_event_meet_url(service, event, send_updates = "all")
entry_points = [
Google::Apis::CalendarV3::EntryPoint.new(
entry_point_type: "video",
label: meeting_url,
uri: meeting_url,
),
]
conference_solution_key = Google::Apis::CalendarV3::ConferenceSolutionKey.new(type: "addOn")
conference_solution =
Google::Apis::CalendarV3::ConferenceSolution.new(key: conference_solution_key)
event_changes = {
conference_data: Google::Apis::CalendarV3::ConferenceData.new(
conference_solution: conference_solution,
entry_points: entry_points,
create_request: nil,
),
}
updated_event = Google::Apis::CalendarV3::Event.new(event_changes)
service.patch_event(
gcalendar_id,
event.id,
updated_event,
conference_data_version: 1,
send_updates: send_updates,
)
end