Google 使用时忽略 ICS UID 的日历 "Add to Calendar" link
Google Calendar ignoring ICS UID when using "Add to Calendar" link
开发一个应用程序,申请人可以通过第三方服务安排与我们团队成员的面试。我们会定期 API 致电第三方了解最近的任何更改,生成一个 ICS 文件,然后将该文件通过电子邮件发送给我们的团队成员,以便他们可以将其存储在他们的 Google 日历中。
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Google Inc//Google Calendar 70.9054//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20171001T180000Z
DTEND:20171001T190000Z
SUMMARY:Sample Event
UID:5179167a74d55b6fbaf6193026af14de@example.io
DTSTAMP:20171001T023000Z
ORGANIZER:noreply@example.io
SEQUENCE:0
END:VEVENT
END:VCALENDAR
我遇到的问题是,当团队成员单击 "Add to Calendar" link 时,Google 邮件生成。它忽略了我生成的 UID,5179167a74d55b6fbaf6193026af14de@example.io,并创建它自己的:20d19q1acurfub15pe94hb1b7s@google.com.
因此,当对事件进行更新时,UID 与 Google 存储的 UID 不同,因此它会创建一个全新的事件而不是更新现有事件。在下面的示例中,事件提前 1 小时:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Google Inc//Google Calendar 70.9054//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20171001T190000Z
DTEND:20171001T200000Z
SUMMARY:Sample Event
UID:5179167a74d55b6fbaf6193026af14de@example.io
DTSTAMP:20171001T023224Z
ORGANIZER:noreply@example.io
SEQUENCE:1
END:VEVENT
END:VCALENDAR
所以现在同一个采访有两个事件,两个不同的 xxx@google.com UID。
我发现如果我直接导入 ICS 文件,而不是使用 "Add to Calendar" link,那么 UID 将保留为最初创建的并且 updating/cancelling 可以按预期工作。由于在 Google 日历中导入事件的过程不是最简单的工作流程,而且我们期望的事件量很大,因此我希望保留 "Add to Calendar" 方法。
对我在这里做错了什么有什么建议吗?
您正在发送没有任何与会者的会议请求属性。根据 https://www.rfc-editor.org/rfc/rfc5546#section-3.2.2,参加者是强制性的
这是日历服务器被混淆的最可能原因。
开发一个应用程序,申请人可以通过第三方服务安排与我们团队成员的面试。我们会定期 API 致电第三方了解最近的任何更改,生成一个 ICS 文件,然后将该文件通过电子邮件发送给我们的团队成员,以便他们可以将其存储在他们的 Google 日历中。
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Google Inc//Google Calendar 70.9054//EN CALSCALE:GREGORIAN METHOD:REQUEST BEGIN:VEVENT DTSTART:20171001T180000Z DTEND:20171001T190000Z SUMMARY:Sample Event UID:5179167a74d55b6fbaf6193026af14de@example.io DTSTAMP:20171001T023000Z ORGANIZER:noreply@example.io SEQUENCE:0 END:VEVENT END:VCALENDAR
我遇到的问题是,当团队成员单击 "Add to Calendar" link 时,Google 邮件生成。它忽略了我生成的 UID,5179167a74d55b6fbaf6193026af14de@example.io,并创建它自己的:20d19q1acurfub15pe94hb1b7s@google.com.
因此,当对事件进行更新时,UID 与 Google 存储的 UID 不同,因此它会创建一个全新的事件而不是更新现有事件。在下面的示例中,事件提前 1 小时:
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Google Inc//Google Calendar 70.9054//EN CALSCALE:GREGORIAN METHOD:REQUEST BEGIN:VEVENT DTSTART:20171001T190000Z DTEND:20171001T200000Z SUMMARY:Sample Event UID:5179167a74d55b6fbaf6193026af14de@example.io DTSTAMP:20171001T023224Z ORGANIZER:noreply@example.io SEQUENCE:1 END:VEVENT END:VCALENDAR
所以现在同一个采访有两个事件,两个不同的 xxx@google.com UID。
我发现如果我直接导入 ICS 文件,而不是使用 "Add to Calendar" link,那么 UID 将保留为最初创建的并且 updating/cancelling 可以按预期工作。由于在 Google 日历中导入事件的过程不是最简单的工作流程,而且我们期望的事件量很大,因此我希望保留 "Add to Calendar" 方法。
对我在这里做错了什么有什么建议吗?
您正在发送没有任何与会者的会议请求属性。根据 https://www.rfc-editor.org/rfc/rfc5546#section-3.2.2,参加者是强制性的 这是日历服务器被混淆的最可能原因。