首页 > 解决方案 > 创建用户可以订阅的动态 ICS 文件

问题描述

我们有一个用户登录的网站,然后可以预订课程。这些课程和预订会根据用户的 UserID 存储在我们的 SQL 数据库中。在课程页面上,用户可以通过一个简单的 ICS 文件将课程添加到他们的 Outlook 日历中,该文件是在用户单击按钮时生成的,通过将所需数据提交到调用它的 URL 中的 ICS 文件中来添加课程,然后在 ICS 文件本身中使用 <%=Request("CourseName")%> 。

我们现在正在寻求创建一个用户可以订阅的新 ICS 文件,该文件将使用他们注册的所有课程更新他们的 Outlook 日历,并且如果/当课程应用了更改或如果用户注册一门新课程,这也将自动添加到他们的日历中。我可以解决如何生成一个 ICS 文件,该文件将使用与我为上述各个课程所做的类似设置来保存所有这些数据,但我无法解决如何创建一个使用新信息自动更新的 ICS 文件。

我不知道我是否需要;
1. 为每个单独的用户在服务器上存储一个硬编码的 ICS 文件,然后在进行更改时进行更新(我希望避免这种情况,因为我们有很多用户)
2. 如果有办法我可以在 ICS 文件中包含一条 SQL 语句,然后该语句将即时为用户获取最新的课程数据(这是首选,但到目前为止测试此选项总是会导致错误)
3. 我还没有想到的其他事情

任何帮助将不胜感激!

标签: htmlsqlcalendaricalendarsubscription

解决方案


这是我们用来解决类似问题的方法:

每次管理员更改事件或用户更改订阅时,我们都会触发 API 调用来做两件事:(1) 使用自动生成的 iCalendar 事件 (.ics) 通知相关用户更改,以及 (2)使用更改更新数据库。

我们选择让用户和管理员有权触发事件更改,而不是设置一个检查和发送更新的计时器,因为我们希望避免延迟。

至于您关于自动生成的问题,这需要您创建一个 event_id,您可以在 .ics 文件中重复使用它,以及一个METHOD:REQUEST,它会通知用户的电子邮件您正在发送:(a)新事件,或(b) 更改为先前的事件。如果您构建动态 iCalendar 脚本,这是可能的。您必须捕获“更改”并将它们传递给新的 .ics 请求。


推荐阅读