开发应用程序,申请人通过第三方服务安排与我们的团队成员面谈。我们会定期向第三方发出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
我遇到的问题是,当团队成员点击Google Mail生成的“添加到日历”链接时。它忽略了我生成的UID, 5179167a74d55b6fbaf6193026af14de@example.io ,并创建了它自己的: 20d19q1acurfub15pe94hb1b7s@google.com 。
因此,当对事件进行更新时,UID与Google正在存储的不同,因此它会创建一个全新的事件而不是更新现有事件。在下面的示例中,事件提前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文件,而不是使用“添加到日历”链接,则UID将保留为最初创建的,并且更新/取消按预期工作。由于在Google日历中导入事件的过程并不是最简单的工作流程和我们期待的大量事件,因此我希望保留“添加到日历”方法。
有关我在这里做错了什么的建议吗?
答案 0 :(得分:0)
您发送的会议请求没有任何ATTENDEE属性。根据{{3}}强制要求ATTENDEE 这是日历服务器混淆的最可能原因。