CN111615712A - 多日历协调 - Google Patents
多日历协调 Download PDFInfo
- Publication number
- CN111615712A CN111615712A CN201880085742.5A CN201880085742A CN111615712A CN 111615712 A CN111615712 A CN 111615712A CN 201880085742 A CN201880085742 A CN 201880085742A CN 111615712 A CN111615712 A CN 111615712A
- Authority
- CN
- China
- Prior art keywords
- calendar
- event
- user
- data
- synchronization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000000694 effects Effects 0.000 claims abstract description 36
- 238000012544 monitoring process Methods 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 64
- 230000004044 response Effects 0.000 claims description 22
- 230000001360 synchronised effect Effects 0.000 abstract description 65
- 230000006870 function Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 14
- 238000013480 data collection Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000002123 temporal effect Effects 0.000 description 13
- 230000006399 behavior Effects 0.000 description 11
- 238000010801 machine learning Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013145 classification model Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000003490 calendering Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/109—Time management, e.g. calendars, reminders, meetings or time accounting
- G06Q10/1093—Calendar-based scheduling for persons or groups
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
提供了用于对多个日历进行同步的计算机化系统。通过与用户相关联的传感器和用户设备来监测用户活动。监测用户活动包括:检测与包括第一日历的日历集合相关联的日历活动。检测与第一日历相关联的第一日历事件。确定包括在该日历集合中并且与第一事件相关联的第二日历。基于用户活动、第一日历或第一事件来确定第二日历。可以基于与第一日历相关联的同步简档来确定第二日历。对第二日历进行更新以包括第一事件的至少一部分。第一事件与第二日历同步和/或共享。可以仅将第一事件的事件数据的选择性部分提供给第二日历。
Description
背景技术
多种计算机实现的会议、日程安排和列入日历解决方案可用于辅助用户计划和组织他们的日程。在某些情况下,用户或某些其他应用可以将日历项(例如日历事件)放置在日历上或包括在日历中。当放置在日历上或包括在日历中时,可以为一个或多个用户显示日历事件。这些日历事件的显示可以指示用户通常亲自参加的会议,或通过电话或某些在线会议应用参加的会议,或者可以是仅可选或仅提供信息的日历事件。日历事件通常具有上下文。例如,日历事件可以是与工作有关的事件、与家庭有关的事件、与社会有关的事件或某种其他类型的事件。
日历事件通常包括信息,例如事件数据。这样的事件数据可以包括时间、持续时间、日期、位置(物理的或虚拟的)和/或会议的参加者。事件数据可以包括其他信息,例如事件上下文、会议主题或议题、会议上要讨论的文件或其他材料的副本或链接、用户在会议中的角色或职责、行动项目、清单等等。当日历事件显示在日历内时,可以为用户显示事件数据的至少一部分。
用户经常使用一个以上的日历来处理不同上下文的事件。因此,日历可以具有用户的上下文。例如,用户可以将与工作相关的日历用于工作相关事件,将与家庭相关的日历用于家庭相关事件,而将与社会相关的日历用于社会相关事件。日历可以是单独的日历,使得只有单个用户可以查看和/或编辑日历,而其他日历是一个以上的用户可以查看和/或编辑的共享日历。例如,用户的工作相关日历可以是仅对用户可见的个人日历,而用户的家庭相关日历与用户家庭的其他成员共享,从而每个家庭成员可以查看和/或编辑该日历。
发明内容
提供本发明内容以便以简化的形式对下面在具体实施方式中进一步描述的设计构思的选择进行介绍。本发明内容并不旨在识别要求保护的发明主题的关键特征或重要特征,也不旨在用于协助确定要求保护的发明主题的范围。
本公开内容的各方面涉及计算机化的系统,该系统用于通过提供用于对多个计算机实现的日历进行同步的方法和系统来为本文所描述技术的用户提供个性化计算体验。在一个非限制性实施例中,一种用于对日历进行同步的方法包括:监测来自与用户相关联的传感器和用户设备的用户活动。监测用户活动可以包括:检测与包括至少第一日历的一组计算机实现的日历相关联的日历活动。该方法检测第一事件,该第一事件是与第一日历相关联的日历事件。确定包括在日历集合中并且与第一事件相关联的第二日历。基于用户活动、第一日历或第一事件来确定第二日历。可以基于与第一日历相关联的同步简档来确定第二日历。对第二日历进行更新以包括第一事件的至少一部分。在一些实施例中,第一日历是事件的主要日历,第二日历是事件的辅助日历。第一事件可以包括在第一日历中,并且可以与第二日历同步和/或共享,或者例如,可以通过经由第二日历指示在第一事件的时间期间用户不可参加,来影响第二日历上的事件的调度。在各个实施例中,任何日历都可以影响任何其他日历。例如,第二事件可以包括在第二日历中。第一日历可以与第二日历同步,使得第二事件被第二日历包括和/或与第二日历共享。在一些实施例中,主要日历和辅助日历的概念可能不适用。也就是说,每个日历可能会影响每个另一个日历。
在各个实施例中,仅将第一事件的事件数据的一些部分提供给第二日历。例如,在第一日历中显示包括在第一事件中的事件数据的一部分,并且从第二日历限制对事件数据的部分的访问。因为限制了从第二日历对事件数据的一部分的访问,所以该部分可以被称为事件数据的受限部分。受限部分的确定可以基于第一事件的上下文、第一日历的上下文、第二日历的上下文或所监测的用户活动。在一个实施例中,基于与第一日历或第二日历相关联的同步简档来确定受限部分。可以将事件活动的另一部分提供给第一日历和第二日历。事件数据的这样的部分可以被称为共享部分。可以基于第一事件的上下文、第一日历的上下文、第二日历的上下文或者所监测的用户活动来确定事件数据的共享部分。在一个实施例中,基于与第一日历或第二日历相关联的同步简档来确定共享部分。
响应于更新第二日历或在更新第二日历之后,可以向能够查看第二日历的第二用户提供第二日历已被更新的通知或提醒。该方法可以确定第一事件的位置,并且基于该位置至少更新第一事件的开始时间或停止时间。也就是说,实施例可以基于事件的位置来“填充”事件的时间,以便基于相邻日历事件、用户在一天中该时间的常规位置等等使得用户有时间到达或离开第一事件。
在各个实施例中,该方法可以检测并解决时间和/或空间多事件和/或多用户冲突。例如,该方法可以检测第二日历中包括的第二事件。响应于检测到第二事件,可以检测第一事件和第二事件之间的时间和/或空间冲突。可以通过向用户提供针对第一事件或第二事件的替代日期、时间或位置中的至少一个的建议来解决冲突。
除了解决冲突之外,各个实施例还可以具有事件调度器。例如,该方法可以基于第一日历来确定第一时间表。第一时间表可以是该用户的时间表。该方法可以基于第二日历来确定第二时间表。第二时间表可以是第二用户的时间表。各个实施例可以基于第一和第二时间表来确定第二事件的日期、时间或位置中的至少一项。
解决冲突和调度事件可以基于与用户相关联的权重和/或与事件相关联的权重。例如,当解决多事件或多用户冲突时,可以确定与用户相关联的第一权重以及与第二用户相关联的第二权重。可以基于第一日历、第二日历、第一权重和第二权重来调度第二事件。在另一个实施例中,第一权重可以与第一事件相关联,第二权重可以与第二事件相关联。可以基于第一日历、第二日历、第一权重和第二权重来调度第三事件。
在一些实施例中,对第二日历进行完全自动的更新以包括第一事件。在其他实施例中,更新第二日历需要用户验证。例如,在一个实施例中,响应于确定第二日历,向用户提供了将第一事件包括在第二日历中的选项。在这样的实施例中,可以经由指示第一事件和第二日历的通知来提供选项。响应于接收到用户对选项的选择、确认用户的验证,可以更新第二日历。
对第一事件的更新可以自动提供给第一日历以及第二日历。例如,各个实施例可以检测对第一事件的更新。该更新可以包括对日期、开始时间、停止时间或第一事件的位置的更新。可以对第二日历进行自动更新以包括更新的日期、开始时间、停止时间或第一事件的位置。
附图说明
下文参考附图详细描述了本公开内容的方面,在附图中:
图1A是适合用于实现本公开内容的实施例的示例性计算环境的框图;
图1B是适合用于实现本公开内容的实施例的示例性结构化数据的框图;
图2是示出可以在其中使用本公开内容的一些实施例的示例性日历同步系统的框图;
图3A-图3B示出了两个同步日历的示例性但非限制性的实施例;
图4-图5D示出了本公开内容的实施例中用于对日历进行同步的方法的流程图;以及
图6是适合用于实现本公开内容的实施例的示例性计算环境的框图。
具体实施方式
本公开内容的方面的发明主题在本文中用具体细节来描述以满足法定要求。然而,该描述本身并非旨在限制本专利的范围。而是发明人考虑了也可以结合其它当前或未来的技术用其它方式来体现要求保护的发明主题,以包括不同步骤或与该文档中描述的步骤类似的步骤的组合。另外,虽然术语“步骤”和/或“框”可在本文中用于意指所使用的方法的不同的元素,但这些术语不应该被解释为暗示本文中公开的各个步骤之中或之间的任何特定的顺序,除非并且除了各个步骤的顺序被明确描述之外。本文描述的每种方法可以包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可由执行存储在存储器中的指令的处理器来执行。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件(仅举几例)提供。
在现代时代,电信和计算技术的融合使人类历史上第一次几乎无休止地进行通信,并通过无处不在的个人计算资源(包括与通信网络耦合的个人计算设备和云计算)来访问与个人、家庭、社会和工作有关的资源。现在,一个人多任务并且同时从事或至少考虑与个人、家庭、社会和/或工作相关的任务或事件是司空见惯的。结果,出现了新的计算机技术,用来基于环境或特定于这些用户的其他信息来定制计算服务以及向用户的信息传递。计算服务的这种个性化可以向一个或多个用户提供信息。此类提供的信息可以与用户、他的个人时间表和例程特别相关。
本公开内容的各方面通过提供用于对多个计算机实现的日历进行协调和/或同步(例如日历的计算机应用或服务、会议组织或处理,或者调度)的增强的系统和方法为本文所描述技术的用户提供了个性化的计算体验。这样,实施例的一方面包括对多个单独和/或共享日历进行协调或至少部分同步。如贯穿全文所讨论的,这种同步可以包括基于事件在另一日历中的添加/删除,自动向一个或多个日历添加事件和/或从一个或多个日历删除事件。此外,当在一个日历中更新或编辑事件的事件数据时,更新的事件数据将在其他日历之间同步。对于在与在其中最初创建事件的日历不同的日历中自动添加/删除/更新的事件,该事件可以被称为共享和/或同步事件。如通篇所使用的,事件,或更具体地关于事件的日历信息,可以指示一个日历作为该事件的主要日历,并且指示一个或多个其他日历作为该事件的辅助日历。
事件的主要日历可以指的是在其中最初创建和/或添加事件的日历。事件的辅助日历可以是在其中共享和/或同步事件的任何其他日历。因此,在各个实施例中,一个日历的内容可以通过共享和/或同步事件自动影响一个或多个其他日历的内容。在至少一些实施例中,为了保护与共享事件相关联的敏感信息,在至少一些日历中可能无法访问和/或查看共享事件的一些事件数据。
在各个实施例中,在事件的主要日历和/或该事件的任何辅助日历中,事件的持续时间可以被自动“填充”或扩展以考虑用户往返该事件的行程时间。即,各个实施例可以分析一个或多个日历中两个或更多个事件的位置的空间接近度,其中用户可能正在参加这两个事件。实施例可以移动两个事件中的至少一个时间的开始时间和/或结束时间以考虑用户在事件之间的行程时间。事件的这种“填充”时间可以选择性地出现在与事件共享和/或同步的任何日历中。
同步还可以包括检测和解决两个或更多个事件之间的冲突,其中至少一个事件包括在一个或多个日历中。解决这样的冲突可以包括:为冲突事件提供针对替代日期、时间、位置等的推荐。这样,本文讨论的多个日历的同步使得能够为与大量用户有关的事件调度服务,其中每个用户具有如由用户使用的一个或多个日历中指示的单独的时间表。“填充的”事件时间可用于各种分析中,以检测和解决冲突以及调度事件。
在一个示例性但非限制性实施例中,当生成第一日历事件并将其与第一日历相关联(即,添加到第一日历)时,第一日历事件(或第一日历事件的至少修改版本)自动添加到第二日历和/或与第二日历相关联。即,从第一日历(即,主要日历)到第二日历(即,辅助日历)共享或同步事件。这样的日历协调和/或同步可以基于第一和第二日历的一个或多个同步简档。
例如,当用户将工作事件添加到他的工作日历时,该工作事件可以被自动添加到他的家庭日历或与他的家庭日历相关联。这样,能够查看家庭日历的其他用户(例如用户的家庭成员)会自动收到由于工作事件而导致用户无法参加的通知。当在第一日历中更新第一事件的事件数据(例如日期和/或时间)时,第二日历可以自动访问更新后的事件数据。同样,当从第一日历中删除第一事件时,可以从第二日历中自动删除该事件。
在某些情况下,用户可能希望通过日历同步来向他的家人或其他用户通知与一个或多个日历事件相关联的部分信息(即事件数据),同时限制对与同步日历事件相关联的其他信息的访问和/或查看。例如,用户可能希望与其家人分享工作会议的时间、持续时间和日期。但是,用户可能希望限制其家庭成员查看日历事件中包括的保密或敏感信息。用户可能希望限制访问权限的日历事件数据包括但不限于:会议的位置(物理的或虚拟的)、会议的主题,或者在会议上要查看的文档和/或议题。在一些实施例中,事件的“填充的”开始和/或停止时间对于家庭日历可以是可获得的。在一个实施例中,家庭日历仅可访问“填充的”开始和停止时间,即,家庭日历的用户可仅查看事件的“填充的”时间,而不查看事件的实际时间。以这种方式,用户可以在不公开事件的实际时间的情况下通知其家人其一般可参加性。
因此,当日历在各个实施例中被同步时,仅事件数据的选择性部分可被其他日历访问或使其对于其他日历是可获得的。即,各个实施例选择性地将自动同步的日历事件的事件数据的一些部分限制为经由事件同步的日历中的至少一些。
在一些非限制性实施例中,事件可以包括主要日历的标识以及与其同步或共享事件的一个或多个其他辅助日历的标识。通常,尽管不是必需的,但是事件的每个事件数据项都可由主要日历访问,而事件数据中的某些项的可访问性可能对辅助日历中的至少某些有所限制。可以在主要日历和辅助日历的同步简档中指示辅助日历可访问的事件数据项以及限制辅助日历对其访问权限的项。
最初在其中添加和/或生成事件的日历可以默认为该事件的主要日历,而与该事件相关联的其他日历是该事件的辅助日历。但是,在一些实施例中,用户可以为事件更新主要日历的分配。例如,对于最初在工作日历中创建并与家庭日历共享的事件,用户可以编辑该事件,以使家庭日历是该事件的主要日历,而用户的工作日历是该事件的辅助日历。
以这种方式,基于一个或多个同步简档的定制,可以自动同步单个和/或共享日历的任何组合。此外,可以经由机器学习和/或人工智能代理自动地定制同步简档。即,通过监测和分析用户行为和偏好,可以更新同步简档以考虑关于用户的同步要求的模式。通过这样的监测,各个实施例可以推断出同步模式特征,其被用来自动生成和/或更新同步简档。因此,随着时间的推移,减少了管理和维护多个日历所需的用户手动工作。
如上所述,实施例使得用户能够自动向其他用户提供对其时间表的可见性,而无需暴露关于其时间表中包括的事件的特定信息。这样,用户可以在他的日程安排中保护关于事件的敏感信息,同时向其他用户提供关于事件的不太敏感的信息,例如事件的日期和(填充的或未填充的)时间。通过提供这种可见性,实施例可以检测并解决多个用户的多个事件之间的冲突。例如,用户可能在第一时间具有包括在第一日历中的第一事件。用户可能在第二时间具有包括在第二日历中的第二事件,该第二时间与第一事件的第一时间相同或相似。由于第一日历和第二日历的同步,使得各个实施例能够检测与第一事件和第二事件相关联的时间冲突。这样的冲突可以被称为多事件冲突。
除了自动检测用户的时间上的多事件冲突之外,实施例还可以通过为第一事件或第二事件中的至少一个事件提供替代日期和/或时间来调解和解决这种时间冲突。通过在多个日历之间对事件进行同步,各个实施例对由用户的多个日历所指示的用户的时间表具有可见性。这样,可以自动确定解决时间上的多事件冲突的替代日期和/或时间并将其建议给用户。
当第一事件发生在第一位置并且第二事件发生在第二位置时,这样的实施例还可以为用户检测并解决空间上的多事件冲突。第一事件的第一时间可以在第二事件的第二时间之前发生,使得在第一事件的结束时间和第二事件的开始时间之间存在时间间隙。但是,第一位置和第二位置可能相隔某个物理距离,该距离使用户可能无法在第一会议和第二会议之间的时间间隔内从第一位置行进到第二位置。通过为至少第一事件或第二事件推荐替代位置,实施例能够为用户检测和解决这种空间上的多事件冲突。因此,通过为用户感兴趣的冲突事件推荐替代时间、日期和位置,各个实施例能够为用户检测和解决时间和/或空间上的多事件冲突。即,实施例为对冲突的多个事件感兴趣的单个用户检测并解决时间/空间冲突。
通过提供对分布在一个或多个日历上的多个用户的时间表的这种可见性,各个实施例可以充当事件调度优化器。更具体地说,实施例检测和解决对单个事件感兴趣的多个用户的时间/空间冲突。也就是说,实施例可以确定多个用户感兴趣的事件的最佳日期、时间和位置,其中每个用户具有在一个或多个日历中指示的单独的时间表。除了每个感兴趣的用户的时间表之外,这种时间表优化可以基于分配给每个感兴趣的用户的权重或优先级。即,某些用户的时间表可能比其他用户的时间表具有更大的权重。例如,相比其参加会议是可选的用户,其参加会议是必不可少的用户可能与更高的权重相关联。此外,这样的实施例可以基于用户的时间表和相关联的权重来检测和解决涉及多个事件和/或多个用户的调度冲突。
也就是说,除了检测和解决多事件冲突之外,各个实施例还能够检测和解决多用户冲突。检测和解决多用户冲突可以被称为事件调度。注意,当检测和解决多个用户的冲突时,各个实施例也可以针对多个用户中的每个用户来检测和解决多事件冲突。而且,事件的填充持续时间可以用于各个实施例中采用的任何冲突检测和解决方案。
在各个实施例中,冲突检测和解决方案可以附加地和/或可替换地包括“事件合并”或简单地包括“合并”方面。在这样的实施例中,各种系统或方法可以确定所识别的冲突是两个或更多个相同或至少相似的事件之间的冲突。例如但不限于,第一个家长可以向其工作日历添加事件,例如家长-教师会议会面。第一个家长可以将事件命名为“孩子的学校会议”。第二个家长可能将与同一家长-教师会议有关的事件作为不同和/或单独的事件添加到家庭日历中。例如,第二个家长可能将事件添加到家庭日历中相似的时间和/或日期处,并且将该事件的标题命名为“与孩子的教师见面”。在这种情况下,系统的一些实施例可以分析第一个家长的工作日历和家庭日历。例如,可以在分析中比较两个日历事件的特征,并且可以确定事件之间确定的相似性。在该示例中,因为特征(例如事件时间、事件标题和标题中的关键词)是相似的(例如,儿童和孩子、见面和会议、教师和学校),所以系统可以确定工作日历中的“儿童学校会议”很可能与家庭日历中的“与孩子的教师见面”是同一事件。在确定两个事件可能是同一事件时,系统可以将这两个事件合并为单个事件。在一些实施例中,相似性阈值可以用于确定相似性,并且如果相似性的可能性不足以满足阈值,则可以将事件确定为不同的(或者,如果相似度接近阈值,则可能会以通知向用户(例如家长之一)提示该事件已显示在日历上)。在执行合并后,系统可以自动更新工作和家庭日历中的一个或两个,以指示事件合并。在一些实施例中,可以向用户提供已经识别和/或解决了合并的提示。合并分析可以基于日期、时间、参会者、位置、主题或与多个事件有关的任何其他特征或数据。
在一个非限制性的示例性实施例中,音乐家正在计划表演并且想要确定一组用户的最佳日期、时间和/或位置,其中该组中的每个用户都对参加表演感兴趣。与每个感兴趣的用户相关联的每个日历可以和与音乐会相关联的另一个日历同步。各个实施例使每个用户能够通过日历同步来提供其可用性,同时保护关于用户可能希望保持受限或私密的他们的时间表的特定信息。例如,每个用户可以与音乐会日历共享其日历中包括的每个事件的日期、时间和位置,同时限制对其他事件数据的访问,例如事件标题、参会者列表等。实施例可以基于每个感兴趣的用户的共享可用性(时间、数据和位置)来确定音乐会的最佳日期、时间和位置。
当确定音乐会的最佳日期、时间和位置时,可以采用每个用户的权重。权重可以反映用户将确实参加音乐会的概率或贝叶斯确定的信念。与不太可能参加音乐会的用户的时间表相比,很可能实际参加音乐会的用户的时间表的权重可能更大。权重可以取决于用户的物理接近度(如通过经由用户的共享时间表所指示的他们的家或位置确定的)。例如,具有家庭住址的用户的时间表或指示用户在物理上倾向于更靠近剧院的时间表的加权可以比可能更远离剧院的用户的时间表加权更大。
权重可以基于用户先前的音乐会参加记录、用户是否已加入与音乐家相关联的在线社区(例如,歌迷俱乐部)或者是否是高级用户组的成员。在一个实施例中,用户可以提供财务溢价或另外的资产,以换取其共享时间表比其他用户具有更大的加权。因此,实施例可以为高级用户提供高级调度服务。在一些实施例中,可以通过分析用户的行为和偏好以及用户简档的机器学习和/或人工智能代理或机器人来确定权重。
此外,各个实施例包括通知系统。当经由同步事件将日历事件自动添加到日历时,这样的通知系统向用户提供基于听觉的、基于视觉的和/或基于文本的通知或提醒。例如,当通过父母的工作日历与家庭日历的同步将父母的与工作相关的事件添加到家庭日历时,可以向每个家庭成员提供指示家庭日历的更新的通知。鉴于对最初包括在另一个同步日历中的事件的编辑和/或更新,当日历自动更新时,可以向用户提供另一个通知。继续上面的示例,当父母的工作事件的日期被更新为下一周时,家庭日历可以鉴于对父母的工作日历的更新而被自动更新。每个家庭成员可能会收到另一条提醒,通知其响应于父母的工作日历的更新,家庭日历已被更新。
常规日历应用可以使得用户能够同时查看多个日历。但是,这样的常规日历通常不能使一个日历自动影响包括在另一日历中和/或在另一日历中可查看的事件。一些常规日历可以启用日历事件的导入。但是,将事件导入日历的常规方法通常不会保护导入的事件数据的一些部分。即,在将事件导入日历时,通常会导入整个事件数据。因此,与本文的各个实施例相反,这样的常规方法不能实现对事件数据的一些部分的保护。
另外,如贯穿全文所讨论的,这样的实施例使得能够更有效地利用日历应用中使用的计算系统的计算和存储/存储器资源。在常规日历应用中,每个日历可以包括每个日历事件的副本。因此,在常规日历中,当将一个事件从一个日历导入另一个日历时,必须存储该事件的另一个副本。因此,在常规系统中,可能需要跨多个日历生成、存储、管理和更新事件的多个副本。事件的多个副本增加了管理多个日历所需的计算和存储资源。
与这种常规方式相反,在各个实施例中,当通过多个日历的同步将事件添加到日历时,仅需要事件的单个副本。基于所涉及的日历的同步简档,每个日历只能访问事件的选择性部分。因此,各个实施例对日历和事件采用有效的数据结构,这往往可以减少必须管理的事件和日历的副本的数量。因此,各个实施例使计算系统能够更有效地管理和同步多个日历和多个日历事件。即,对于各个实施例,与常规系统相比,需要较少的计算和存储资源。
此外,在这样的常规系统中,当事件的一个副本被更新时,事件的多个副本可能不是同步的。例如,与本文中讨论的增强实施例相反,如果第一日历中包括的事件的一个副本被更新,则另一个日历中包括的事件的另一个副本可以不被自动更新。通过使用本文中讨论的有效数据结构,对事件进行更新确保在所有相关日历中发生更新的自动同步,于此同时,基于自动和/或手动定制的同步简档,同时实施对某些日历中事件数据的各个项的保护。
现在转向图1A,提供了示出在其中可以使用本公开内容的一些实施例的示例操作环境100的框图。应该理解的是:本文中描述的这种布置和其它布置是仅作为示例阐述的。其它布置和单元(例如,机器、接口、功能、顺序和功能组)可在这些示出的布置和单元以外或替代它们来使用,并且为了清楚起见,可以完全省略一些单元。另外,本文中描述的单元中的许多单元是功能实体,其可以实现为分立或分布式组件,或者结合其它组件来实现,以及在任何合适的组合和位置中实现。本文中描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,一些功能可由执行存储在存储器中的指令的处理器来执行。
在未示出的其他组件中,示例操作环境100包括多个用户设备(例如用户设备102a以及102b至102n);多个数据源(例如数据源104a以及104b至104n);服务器106;传感器103a和107;以及网络110。应该理解的是:图1A中示出的环境100是一个合适的操作环境的示例。图1A中示出的每个组件可以经由任何类型的计算设备(例如,结合图6描述的计算设备600)来实现。这些组件可以经由网络110彼此通信,所述网络可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。在示例性实现中,网络110包括互联网和/或蜂窝网络,以及各种可能的公共和/或专用网络中的任何一种。
应该理解的是:在本公开内容的范围内,可以在操作环境100内使用任意数量的用户设备、服务器和数据源。每个可以包括单个设备或者在分布式环境中协作的多个设备。例如,服务器106可以经由布置在共同提供本文描述的功能的分布式环境中的多个设备来提供。另外,未示出的其它组件也可以包括在分布式环境之内。
用户设备102a以及102b至102n可以是操作环境100的客户端侧上的客户端设备,而服务器106可以在操作环境100的服务器侧上。服务器106可以包括服务器侧软件,该服务器侧软件被设计为与用户设备102a以及102b至102n上的客户端侧软件一起工作,以实现本公开内容中讨论的特征和功能的任何组合。提供操作环境100中的这种划分以示出合适环境的一个示例,并且针对每种实现,不要求服务器106与用户设备102a以及102b至102n的任意组合保持为单独的实体。
用户设备102a以及102b至102n可以包括能够由用户使用的任何类型的计算设备。例如,在一个实施例中,用户设备102a至102n可以是本文关于图6描述的计算设备的类型。通过举例而非限制的方式,用户设备可以体现为个人计算机(PC)、膝上型计算机、移动装置或移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、音乐播放器或MP3播放器、全球定位系统(GPS)或设备、视频播放器、手持通信设备、游戏设备或系统、娱乐系统、车载计算机系统、嵌入式系统控制器、照相机、遥控器、条形码扫描仪、计算机化测量设备、电器、消费电子设备、工作站,或者这些描述的设备的任何组合,或任何其他合适的计算机设备。
数据源104a以及104b至104n可以包括数据源和/或数据系统,其被配置为使数据可用于操作环境100的各个组成部分中的任何一个;结合图1B描述的数据结构120、140和160;或者结合图2描述的系统200。(例如,在一个实施例中,一个或多个数据源104a至104n向图2的用户数据收集组件210提供用户数据(或使用户数据可供访问)。)数据源104a以及104b至104n可以与用户设备102a以及102b至102n和服务器106分离,或者可以被结合和/或集成到那些组件中的至少一个中。在一个实施例中,数据源104a至104n中的一个或多个包括一个或多个传感器103a、107,它们可以被集成到用户设备102a、102b或102n或服务器106中的一个或多个中或与之关联。结合图2的用户数据收集组件210还描述了由数据源104a至104n可获得的感测到的用户数据的示例。
可以利用操作环境100来实现图2中描述的日历项丰富系统200的一个或多个组件,包括用于进行以下操作的组件:收集日历事件数据、生成日历事件行为模式模型、生成用户位置模式、生成用户简档详细信息,和/或生成和/或向消费者或用户呈现丰富的日历事件信息。操作环境100还可以用于实现结合图4-图5D描述的处理流程400、500、520、540和560的各方面。
图1B是适合用于实现本公开内容的实施例的示例性但非限制性的结构化数据的框图。例如,本文中讨论的日历的各个实施例可以被编码为数据,例如但不限于至少与日历120类似地构造的数据。系统200的任何组件可以生成、更新和访问日历120。例如,图2的日历管理器290的日历生成器292可以生成日历;事件生成器/更新器296或同步日历更新器266可通过向日历120添加/删除相关联事件来更新日历120;或者,事件冲突调解器250可以访问日历120以解决多事件和多用户冲突,如本文所讨论的。
日历120包括日历标识(ID)122。日历ID 122包括唯一名称、地址、指针、链接或唯一标识和/或定位日历120的另一个值。因此,日历ID 122可以将日历120与包括在图2的日历同步系统200中的其他日历区分开。系统200的任何组件都可以使用日历ID 122来定位日历120。例如,日历定位器284或系统200的日历事件监测器280的另一个组件可以通过日历ID 122来定位日历。示例性日历ID在图1B中显示为Calendar_A(日历_A)。
日历120包括用户列表和相关联的权限124。用户列表和权限124可以包括与日历120相关联的每个用户的指示或用户ID。例如,用户ID User_A和User_B可以与日历120相关联。与日历120相关联的任何用户可以被使能至少查看日历120。相关联的用户中的一个,例如User_A,可以是日历120的所有者。一个或多个权限可以和与日历120相关联的每个用户相关联。用户权限针对每个用户指示与查看、添加、删除和/或编辑日历120中包括的事件有关的用户权限。在各个实施例中,可以使与日历相关联的用户能够查看日历中包括的至少一部分事件的至少一部分事件数据。仅具有单个关联用户的日历可以被称为单独日历,而具有一个以上关联用户的日历(例如日历120)可以被称为共享日历。系统200的任何组件(例如但不限于日历权限执行器298或日历管理器290的另一个组件)可以执行用户权限。
日历120可以包括日历上下文126。在各个实施例中,日历上下文126可能是和/或包括日历语义。例如,日历120可以是工作日历、学校日历、个人日历或项目日历。其他日历上下文也是可能的。系统200的任何组件可以用于确定日历的上下文。例如,日历管理器290可以确定日历的上下文。一个或多个事件可以与日历120相关联和/或包括在日历120中。这样,日历120可以包括事件列表128。事件列表128可以包括针对与日历120相关联的每个事件的指示,例如事件ID。例如,Event_A和Event_B与日历120相关联。当事件与日历相关联时,日历可以向与日历120相关联的每个用户显示该事件的事件数据的至少一部分。日历事件140提供对包括在事件列表128中的事件进行结构化数据进行编码的一个非限制性示例实施例。如下文所讨论的,每个事件可以包括上下文。在一个实施例中,日历事件监测器,例如图2的日历事件监测器290,可以确定与日历相关联的事件的上下文。可以基于与日历相关联的事件的上下文来确定日历的上下文。
日历120包括同步列表130。同步列表130包括一个或多个指示,例如要响应于对日历120的更新和/或编辑而要进行同步的每个日历的日历ID,例如Calendar_B和Calendar_C。在至少图1B所示的实施例中,同步列表130还包括日历的日历ID,即Calendar_A。在图1B所示的实施例中,Calendar_A可以被称为主要日历,而响应于对主要日历的更新和/或添加而将被同步的其他日历可以被称为辅助日历。
日历120包括同步简档列表132。同步简档列表132包括同步简档ID,该同步简档ID唯一地标识日历120的同步简档(即主要Calendar_A)和同步列表130中列出的每个辅助日历。在图1B中,同步简档列表132包括同步简档ID Synchronization_A_B_Profile和Synchronization_A_C_Profile。响应于对主要日历的更新,同步简档提供了有关辅助日历同步的规则、启发方法或策略的列表。在一些实施例中,每个日历可以更新和/或影响任何其他日历。例如,同步简档可以指示在对日历进行同步时哪些事件数据项要提供给(或使其可访问)辅助日历,以及哪些事件数据项应针对辅助日历受到保护或以其他方式使其不可访问。更具体地说,对于将Calendar_A列为主要日历并将CalendarB列为辅助日历的事件,可以使用Synchronization_A_B_Profile将事件从CalendarA同步到CalendarB。同样,对于将Calendar_A列为主要日历并将Calendar_C列为辅助日历的事件,可以使用Synchronization_A_C_Profile将事件从Calendar_A同步到Calendar_C。
注意,Calendar_C可以包括Calendar_A的日历同步简档(Synchronization_C_A_Profile),其将用于将事件从Calendar_C同步到Calendar_A,即,将Calendar_C列为主要日历,而将Calendar_A列为辅助日历的事件。这种同步不必是对称的。也就是说,Calendar_A的针对Calendar_C的同步简档可以但不必须与Calendar_C的针对Calendar_A的同步简档不同。更具体地说,Synchronization_A_C_Profile和Synchronization_C_A_Profile不必是对称的同步简档。用于对同步简档进行编码的结构化数据的非限制性示例实施例被出为同步简档160。
系统200的各个组件可以生成和/或更新同步简档。例如,日历管理器290的组件,例如但不限于同步简档生成器294,可以被用来生成和/或更新同步简档。在一些实施例中,可以使用机器学习和/或人工智能代理来生成和/或确定同步简档。这样的机器学习和/或人工智能可以由同步简档学习器(例如图2的事件和同步简档学习器270)使用。
日历事件140是对日历事件进行编码的结构化数据的非限制性示例。图2的系统200的任何组件可以生成、更新和访问日历事件140的至少一部分。例如,日历管理器290的事件生成器/更新器296可以生成和/或更新事件。如贯穿全文所讨论的,日历事件监测器290或日历(例如日历120)中包括的事件生成/更新检测器可以访问日历事件140的至少一部分。
日历事件140包括事件ID 142,例如Event_A,其唯一地标识事件140并将其与其他事件区分开。事件ID 142可以包括名称、地址、指针、链接或唯一标识事件的另一个值。事件ID 142可由图2的系统200的任何组件使用以定位事件140。日历事件140包括多个事件数据项144。事件数据项144可以包括但不限于(经填充和未填充的)开始时间、(经填充和未填充的)停止时间、(经填充和未填充的)持续时间、位置(虚拟或真实的)、主题、要讨论的议题、受邀者列表、每个受邀者的角色、到材料或相关文档的链接等等。实际上,与事件有关和/或与事件相关联的任何信息或数据都可以作为事件数据项包括在事件数据144中。事件数据的特定部分可以被称为事件数据项或多个事件数据项。日历事件140可以包括事件上下文146,例如但不限于工作事件、学校事件、个人事件、面向项目的事件等等。
日历事件140包括相关联日历148的列表,该列表包括对每个相关联日历的指示,例如日历ID。当日历(例如Calendar_A、Calendar_B或Calendar_C)与日历事件140相关联时,事件数据144的至少一部分项可供每个相关联的日历访问。响应于事件140的生成和/或更新,对每个相关联的日历进行同步,使得如果事件数据项可被日历访问,则使事件数据的更新项的值可被每个相关联日历访问。在一些实施例中,最初在其中生成事件的日历被默认为该事件的主要日历,而其他关联的日历被称为该事件的辅助日历。可以基于主要日历的同步列表(例如同步列表130)来确定辅助日历。即,事件可以自动与每个日历相关联,以便与事件的主要日历同步。在各个实施例中,用户可以编辑哪个日历是该事件的主要日历,使得该主要日历不必是最初添加该事件的日历。
日历事件140包括用户-事件数据权限映射150。用户-事件数据权限映射150提供了映射表或二维(或更高维度)表格,其为与每个关联日历相关联的每个用户以及为事件数据144中包括的每个事件数据项提供读、写和/或编辑权限。例如,对于User_A(与Calendar_A相关联)和Event_Data_A项(包括在事件数据144中),用户-事件权限映射150包括相关联的读、写和/或编辑权限。用户-事件权限映射150可以由日历权限执行器来执行,例如但不限于日历管理器290的日历权限执行器298。
日历事件140包括日历-事件数据可访问性映射152。日历-事件数据可访问性映射152包括映射表或2D(或更高维度的)表格,它为事件数据144中包括的每个事件数据项以及在相关联日历148列表中包括的每个日历提供一个或多个可访问性或可见性设置。可访问性设置可以包括诸如“可访问”或“不可访问”之类的标签,该标签指示是否使事件数据项可被相应日历访问。可以基于日历的同步简档来确定特定日历和事件数据的每个相应项的每个可访问性设置条目。
系统200的组件可以在各个日历中生成、更新、访问和/或执行事件数据的可访问性和不可访问性。例如,日历同步器(例如日历同步器260)可以查阅日历-事件数据映射152以执行各个日历对于事件数据的各个项的可访问性。日历-事件数据映射152可以由日历事件监测器280、日历管理器290或系统200的某个其他组件,经由如本文所讨论的同步简档来生成和/或更新。
在一些实施例中,事件的主要日历可访问每个事件数据项144。对于每个相关联的辅助日历,可以查询事件的主要日历中包括的辅助日历的同步简档,以确定每个事件数据项的可访问性/不可访问性。例如,为了使日历事件140与Calendar_B同步,可以查阅日历120的Synchronization_A_B_Profile。同样,为了使日历事件140与Calendar_C同步,可以查询日历120的Synchronization_A_C_Profile。在一个实施例中,事件数据的每一项都不需要被事件的主要日历所访问。例如,日历可以包括自己的同步简档。即,Calendar_A的同步简档列表132可以包括Synchronization_A_A_Profile,其指示至少一部分事件数据不可从Calendar_A访问或对其有所限制。
同步简档160是对主要日历和辅助日历的同步简档(例如日历120的同步简档中包括的那些)编码的结构化数据的非限制性示例。例如,同步简档160可以是同步简档列表132的Synchronization_A_B_Profile。在各个实施例中,可以基于监测用户的行为、一个或多个日历事件的上下文和/或语义、一个或多个日历的上下文和/或语义、事件数据(例如参与者列表、当时用户的可用性,或者其他事件数据,例如敏感度、唯一时间等)来动态地“了解”同步简档。如至少结合事件和同步简档学习器270和同步模式模型确定器272所讨论的,同步简档可以是动态的,并且可以通过各种机器学习方法来生成和/或更新,这些机器学习方法包括但不限于深度学习方法。同步简档160包括同步简档ID 162,例如Synchronization_A_B_Profile,其唯一地标识同步简档160并将其与其他同步简档区分开。同步简档ID 162可以包括名称、地址、指针、链接或唯一标识事件的另一个值。同步简档ID 162可由图2的系统200的任何组件使用以定位同步简档160。
同步简档160包括主要日历ID 164,例如Calendar_A,它唯一地标识用于同步简档160的主要日历。同步简档160还包括辅助日历ID 166,例如Calendar_B,它唯一地标识用于同步简档160的辅助日历。当事件(例如日历事件140)被添加到由主要日历ID 164指示的日历时,或者当指示主要日历ID 164作为其主要日历的事件被更新时,各个实施例咨询同步简档160以确定如何将事件与辅助日历ID 166中指示的日历进行同步。
这样,对于事件中可能包括的每个事件数据项,同步简档160包括可访问性条目,例如但不限于可访问性条目168、170和172。每个可访问性条目与事件数据的特定项(或类型)相对应,并为在辅助日历ID 166中标识的日历提供针对该事件数据项的可访问性设置。可访问性设置指示:针对从主要日历ID 164中标识的日历同步到辅助日历ID 166中标识的日历的事件,事件数据项对于辅助日历ID 166中标识的日历来说是可访问还是不可访问的。当日历无法访问事件数据项时,可以将替代数据项(例如但不限于“工作会议”)提供给日历。
例如,可访问性条目168针对从Calendar_A同步到Calendar_B的事件的日期和时间事件数据项。可访问性条目168指示Calendar_B可以访问事件的时间和日期中的每一项,这些事件指示Calendar_A为主要日历,并且CalendarB为辅助日历。因此,当将事件添加到Calendar_B时,响应于与Calendar_A中生成的事件的同步,向Calendar_B(以及因此使之能够查看Calendar_B的用户)提供对该事件的日期和时间事件数据项的访问。
类似地,可访问性条目170针对从Calendar_A同步到Calendar_B的事件的位置事件数据项。可访问性条目170指示Calendar_B不可访问的事件的位置,所述事件指示Calendar_A为主要日历和Calendar B为辅助日历。因此,当将事件添加到Calendar_B时,响应于与Calendar_A中生成的事件的同步,不向Calendar_B(以及因此使之能够查看Calendar_B的用户)提供对该事件的位置事件数据项的访问。因此,尽管使能够查看Calendar_B的用户能够查看主要日历为Calendar_A的事件的时间和日期,但是在查看Calendar_B时,此类事件的位置对于此类用户却是模糊的。替代数据可以包括在可访问性条目中。例如,在Calendar_B中,当正常显示事件的位置时,将显示文本“未公开的位置”。用户可以提供替代数据的条目。
可访问性条目172针对从Calendar_A同步到Calendar_B的事件的主题事件数据项。可访问性条目172指示Calendar_B无法访问包括在主要Calendar_A中或与之关联的事件的会议主题。而是,Calendar_B将针对从Calendar_A同步的事件显示“工作会议”。应当注意,如本文所讨论的,日历、日历事件和同步简档可以被编码为与结合图1B所讨论的数据结构不同的其他数据结构。在一个实施例中,日历、日历事件或同步简档可以被编码在非结构化数据中。图2的系统200的任何组件可以采用结合图1B讨论的一个或多个日历、日历事件或同步简档。
现在参照图2,结合图1A-图1B,提供了示出适合用于实现本公开内容的实施例的并总体上标示为多日历同步系统200的示例计算系统架构的方面的框图。当在下文的讨论中提及日历、日历事件、同步简档时,日历、日历事件和同步简档可以与图1B的日历120、日历事件140和同步简档160类似。日历同步系统200仅表示合适的计算系统架构的一个示例。除了所示出的那些之外或代替所示出的那些,可以使用其他布置和单元,并且为了清楚起见,一些单元可以完全省略。另外,针对操作环境100,本文中描述的单元中的许多单元是功能实体,可以实现为分立或分布式组件,或者结合其它组件来实现,以及在任何合适的组合和位置中实现。
日历同步系统200包括结合图1A描述的网络110,该网络110通信地耦合日历同步系统200的组件,这些组件包括但不限于:用户数据收集组件210、呈现组件220、用户简档240(通过存储器225)、事件冲突调解器250、日历同步器260、日历事件监测器280以及日历管理器290。存储器225可以存储一个或多个日历、日历事件和/或同步简档,例如但不限于结合图1B讨论的实施例。
日历管理器290通常负责管理系统200的日历。例如,日历管理器290可以负责生成/更新日历、同步简档和日历事件。日历管理器290还可以执行日历权限,例如但不限于用户对日历和日历事件的读写权限。日历事件监测器280通常负责监测日历活动。在各个实施例中,日历事件监测器280可以检测通常由日历管理器290执行的日历事件的生成和/或更新。响应于检测到日历事件的生成和/或更新,日历事件监测器280可以通过由日历管理器290生成的同步简档基于检测到的事件来定位日历以进行同步。日历事件监测器280还可以检测与用户相关联的多个事件之间的时间和/或空间冲突。
日历同步器260通常负责对日历事件监测器280所定位的日历进行同步。即,日历同步器260通常负责将同步事件添加到日历中,并执行对各个事件数据项的可访问性。例如,日历同步器260可以定位相关的同步简档,并确定共享事件的哪些事件数据可以由哪些日历访问,以及哪些事件数据对于哪些日历有所限制。日历同步器260然后可以使事件数据的所确定部分可由所确定的日历访问,同时经由一个或多个同步事件来限制日历对其他事件数据的访问。日历同步器260可以向同步日历的用户提供一个或多个通知。
事件冲突调解器250通常负责调解日历事件监测器280检测到的时间和/或空间冲突,以及为多个用户调度事件。例如,事件冲突调解器250可以分析并解决用户有兴趣参加的两个或更多个事件之间的冲突。解决冲突可以包括为冲突中的至少一个事件提供所推荐的替代日期、时间或位置。除了解决冲突之外,事件冲突调解器250还可以充当本文讨论的事件调度器。事件冲突调解器250可以向用户提供与调度的事件和解决的冲突有关的通知。也就是说,事件冲突调解器250通常调解并解决多事件冲突和多用户冲突,如贯穿全文所讨论的。除了冲突识别和解决之外,事件冲突调解器250还可以启用和/或执行事件“合并”分析和解决方案,如贯穿全文所讨论的。
如本文所述,基于诸如位置历史、用户帐户等的不同用户信号来生成用户简档240中的用户特征。此外,来自事件冲突调解器250、日历同步器260、日历事件监测器280、日历管理器290的信号和其他用户信号可以组合在一起以生成组合的观点或特征。作为示例,可以结合同步事件来考虑用户历史用户行为或偏好模式,以便使一个或多个同步简档的定制至少部分地自动化。日历同步系统200的组件可以体现为一组编译的计算机指令或功能、程序模块、计算机软件服务或者在一个或多个计算机系统上执行的进程布置。
应该理解,图2中所示的日历同步系统200是在其中可以使用本公开内容的实施例的一个系统的示例。所示的每个组件可以包括与参考图6描述的计算设备600相似的一个或多个计算设备。日历同步系统200不应被解释为具有与其中示出的任何单个模块/组件或模块/组件的组合有关的任何依赖性或要求。每个可以包括单个设备或者在分布式环境中协作的多个设备。例如,日历同步系统200可以包括布置在共同提供本文描述的功能的分布式环境中的多个设备。另外,未示出的其它组件也可以包括在网络环境之内。应当理解,根据各个实施例,日历同步系统200和/或其各种组件可以位于任何地方。
日历同步系统200通常基于针对日历的一个或多个同步简档来操作以对多个日历进行同步。也就是说,响应于将事件添加到第一日历,系统200可以基于同步简档将事件自动添加到第二日历,其中该事件指示第一日历是该事件的主要日历,且第二日历是该事件的辅助日历。此外,当将事件添加到辅助日历时,该事件中包括的信息的至少一部分(即,事件数据项)不可被辅助日历访问。同步简档指示与事件相关联的哪些事件数据项可被第二日历访问,以及哪些事件数据项不可被第二日历访问。这样,将事件添加到第一日历的用户可以使第一日历中的事件信息的选择性部分对第二日历的用户可见,同时保护用户可能希望保持安全的事件的其他信息。如通篇所讨论的,系统200还可以检测和解决时间和空间上的多事件冲突,以及执行如通篇所讨论的事件调度服务,即多用户冲突。
用户数据收集组件210通常负责从一个或多个数据源(例如图1A的数据源104a和104b至104n)访问或接收(在某些情况下还标识)用户数据。在一些实施例中,可以使用用户数据收集组件210来促进对与日历同步系统200的所有日历和所有用户的日历、日历事件以及同步简档相关联的数据(包括众包数据)的积累。数据可以由用户数据收集组件210接收(或访问),并可选地进行累积、重新格式化和/或组合,并存储在一个或多个数据存储(例如存储器225)中,在其中,数据对日历同步系统200的其他组件是可用的。此外,用户数据收集组件210可以被配置为:将每个日历相关的数据单元与一个或多个用户简档相关联,并将相关联的日历事件数据单元存储在相应的用户简档240中。
示例系统200还包括存储器225。存储器225通常存储包括在本文描述的技术的实施例中使用的数据、计算机指令(例如,软件程序指令、例程或服务)和/或模型的信息。在实施例中,存储器225包括数据存储单元234(或计算机数据存储器)。数据存储单元234可以存储一个或多个日历、一个或多个日历事件以及一个或多个同步简档,例如但不限于结合图1B讨论的日历120、日历事件140和同步简档160。如本文所讨论的,存储器225还可以包括模式推断逻辑单元230以及冲突和调度逻辑单元232。简而言之,模式推断逻辑单元230可以包括机器学习、统计和/或人工智能逻辑单元,其能够检测、推断或以其他方式识别数据内的模式和/或特征。例如,模式推断逻辑单元230可以推断用户和/或日历数据内的显式、潜在或隐藏的同步特征或模式。基于多个日历之间的比较,冲突和调度逻辑单元232可以被启用以检测和解决空间和/或时间上的多事件和多用户冲突。即,使冲突和调度逻辑单元232能够充当事件调度器。此外,虽然被描绘为单个数据存储组件,但存储器225可以被实现为一个或多个数据存储单元,或者可以在云中。
日历数据和用户数据可以从各种来源接收,其中数据可以以各种格式获得。如本文所使用的,日历数据可以指代与日历、日历事件、同步简档等相关的任何数据和/或对与日历、日历事件、同步简档等相关的任何信息进行编码。日历数据可以指代至少结合图1B的日历120、日历事件140或同步简档160讨论的任何数据和/或信息。例如,在一些实施例中,经由用户数据收集组件210接收的日历数据和用户数据可以经由一个或多个传感器(诸如图1A的传感器103a和107)来确定,这些传感器可以在一个或多个用户设备(例如用户设备102a)、服务器(例如服务器106)和/或其他计算设备上或与之相关联。如本文所使用的,传感器可以包括用于感测、检测或以其他方式从数据源104a获得信息(例如日历数据和用户数据)的功能、例程、组件或其组合,并且可以被体现为硬件、软件或这二者。通过举例而非限制的方式,日历数据和用户数据可以包括:从一个或多个传感器感测或确定的数据(在本文中被称为传感器数据),例如移动设备的位置信息、智能手机数据(例如电话状态、计费数据、日期/时间或从智能手机得到的其他信息),用户活动信息(例如:应用使用情况;在线活动;搜索;语音数据,例如自动语音识别;活动日志;通信数据,包括电话、文本、即时消息和电子邮件;网站帖子;与事件相关联的其他用户数据等),包括发生在一个以上用户设备上的用户活动、用户历史记录、会话日志、应用数据、联系人数据、日历和时间表数据、通知数据、社交网络数据、新闻(包括搜索引擎或社交网络上的流行或热门项目),家用传感器数据,电器数据,全球定位系统(GPS)数据,车辆信号数据,交通数据,天气数据(包括预报),可穿戴设备数据,其他用户设备数据(可以包括设备设置、简档、网络连接(例如Wi-Fi网络数据)或配置数据,有关型号、固件或设备、设备配对(例如,用户将手机与例如蓝牙耳机配对的情况)的数据),回转仪数据,加速度计数据,传感器(或其他检测器)组件可以感测到或以其他方式检测到的其他传感器数据,包括从与用户相关联的传感器组件得到的数据(包括位置、运动、方向、方位、用户访问、用户活动、网络接入、用户设备计费,或者一个或多个传感器组件能够提供的其他数据),基于其他数据得出的数据(例如,可以从Wi-Fi、蜂窝网络或IP地址数据得出的位置数据),以及可以如本文所述感测或确定的几乎任何其他数据源。在一些方面,可以在用户信号中提供日历事件数据。用户信号可以是来自相应数据源的日历事件数据的馈送。例如,用户信号可以来自智能手机、家庭传感器设备、GPS设备(例如,用于位置坐标)、车辆传感器设备、可穿戴设备、用户设备、回转仪传感器、加速度计传感器、日历服务、电子邮件帐户、信用卡帐户,或者其他数据源。在一些实施例中,用户数据收集组件210连续地、周期性地或根据需要接收或访问数据。
日历事件监测器280通常负责从用户数据收集组件210收集的数据中提取日历数据。日历事件监测器280接收日历数据,包括日历事件的日历事件数据的历史项和未来项,例如但不限于日历事件140的事件数据144的项。所接收的日历事件数据可以用于确定日历事件信息,该信息可以包括与会议或日历事件相关联的各种特征(有时在本文中称为日历事件数据或日历事件信息的项)或者关于特定日历事件项的其他信息以及相关的上下文信息。日历事件监测器280的实施例可以从所监测的日历数据中确定与特定用户相关联的日历事件数据项。如本文所述,由日历事件监测器280确定的日历事件信息可以包括来自与用户相关联的多个用户设备和/或来自与用户相关联的基于云的服务(例如电子邮件、日历、社交媒体,或类似的信息源)的日历事件信息,并且其可以包括与所标识的日历事件相关联的上下文信息,例如但不限于日历事件140的事件上下文146。日历事件监测器280可以确定当前或未来的日历事件信息,并且在一些实施例中,还可以确定历史日历事件信息,该历史日历事件信息可以基于随着时间推移收集对日历事件的观察并访问过去活动的日历日志来确定。此外,在一些实施例中,如本文所述,日历事件监测器280可以从其他类似用户的日历确定(即,众包)日历事件(其可以包括历史活动)。该信息可以包括与用户所属的组织或群组相关联的特征,或者可以包括本质上为全局性的特征。
在一些实施例中,由日历事件监测器280确定的信息可以被提供给存储器225,并且作为用户日历数据242存储在用户简档240中。用户日历数据242可以包括与日历、日历事件和与用户相关联的同步简档有关的任何日历数据。如前所述,可以通过监测从用户数据收集组件210接收的用户数据来确定用户日历数据242。在实施例中,日历事件监测器280包括一个或多个应用或服务,其分析经由用户使用的一个或多个用户设备和/或与用户相关联的基于云的服务检测到的信息,以确定日历事件信息和相关的上下文信息。可以根据经由用户数据收集组件210可用的用户数据来确定关于与用户相关联的日历数据(即,用户日历数据242)的信息,并且可以将其提供给日历事件监测器280或系统200的其他组件。
更具体地,在日历事件监测器280的一些实现中,可以通过检测和分析用户设备的特性来识别用户设备(例如设备硬件、软件(例如操作系统(OS))、与网络相关的特性、通过设备访问的用户帐户以及类似特性)。例如,可以使用许多操作系统的功能来确定关于用户设备的信息,以提供关于硬件、OS版本、网络连接信息、所安装的应用等的信息。
日历事件监测器280或其子组件的一些实施例可以确定与用户相关联的每个设备的设备名称或标识(设备ID)。关于与用户相关联的所标识的用户设备的该信息可以被存储在与用户相关联的用户简档中,例如用户简档240。在实施例中,可以轮询、询问或以其他方式分析用户设备以确定关于设备的信息。该信息可以用于确定设备的标签或标识(例如,设备ID),使得日历事件监测器280可以从用户数据中识别与设备的用户交互。在一些实施例中,用户可以声明或注册设备,例如通过经由该设备登录帐户、在该设备上安装应用、连接到询问该设备的在线服务,或者以其他方式向应用或服务提供关于该设备的信息。在一些实施例中,识别并确定登录到与用户相关联的帐户(例如帐户或Net Passport、电子邮件帐户、社交网络等)的设备是与用户相关联的。
如示例系统200中所示,日历事件监测器280包括事件生成/更新检测器282、日历定位器284以及事件冲突检测器286。在一些实施例中,日历事件监测器280、其子组件中的一个或多个,或者系统200的其他组件(例如日历同步器260、事件冲突调解器250或日历管理器290)可以从所接收的用户数据中确定解释性数据。解释性数据与系统200的这些组件或日历事件监测器280的子组件使用的数据相对应以解释用户数据。例如,解释性数据可以用于提供针对用户数据的其他上下文,这可以支持组件或子组件所做出的确定或推断。此外,可以设想,日历事件监测器280、其子组件以及系统200的其他组件的实施例可以将用户数据和/或日历数据(包括日历事件信息、事件数据和同步数据)与解释性数据结合使用,以用于实现本文所述子组件的目标。另外,尽管本文描述了日历事件监测器280及其子组件如何识别日历事件信息的几个示例,但在本公开内容的各个实施例中许多变型是可能的。
通常,事件生成/更新检测器282负责检测(或至少识别)日历事件(例如但不限于图1B的日历事件140)的生成和/或更新。事件生成/更新检测器282的实施例可用于确定当前或未来的日历事件或一个或多个历史日历事件的生成或更新。事件生成/更新检测器282的一些实施例可以针对与日历事件相关的特征或对与事件相对应的事件数据项(例如,持续时间、时间、标题、位置信息、重复事件(或不重复)、参会者列表、参会者的电子邮件域,或者类似信息)的更新来监测用户数据。
检测日历事件的生成或更新可以包括从事件中提取上下文信息。这样,在一些实施例中,事件生成/更新检测器282可以确定并提取关于日历事件的信息,例如上下文信息。所提取的日历事件信息的示例可以包括关键字、受邀者、电子邮件或与事件相关的社交媒体帖子、与事件相关联的用户浏览活动或在线活动,或者与和用户直接或间接相关联的日历事件相关的几乎任何其他数据。事件生成/更新检测器282还可以将所确定的上下文信息与检测到的日历事件相关联。例如,事件生成/更新检测器282的一些实施例提供将要存储为事件内的结构化数据的所确定的上下文信息,例如但不限于事件140的事件上下文146。如下文进一步讨论的,事件生成/更新检测器282还可以确定日历事件的特征和/或相关的上下文信息。上下文信息也可以用于在有或没有附加信号的情况下进行模式识别。此外,上下文可能会超出任何特定的会议范围。例如,在特定会议之前或之后的会议可以提供上下文。继续该示例,之前的会议可以具有标题(例如“重要评议”),并且可以知道,用户往往在过去具有该标题的会议之前的至少两个小时是在工作。
事件生成/更新检测器282的一些实施例确定与用户是其一部分的群组或组织有关的上下文信息,例如在日历事件中标识的实体或与日历事件有关的实体(例如,组织通用的关键字、群组特性,用户发送的具有共同域名、附件、链接或其他已知与组织相关联的内容和/或特定会议室名称的群组电子邮件的收件人)。另外,事件生成/更新检测器282还可以识别本质上更全局的上下文特征(例如,诸如OOO或OOF之类的术语以指示不在办公室)。通过举例而非限制的方式,其他上下文信息可以包括诸如位置数据之类的上下文特征,其可以被表示为与活动相关联的位置标记;以及与位置有关的上下文信息,例如场所信息(例如,这是用户的办公室位置、家庭位置、学校、餐馆、电影院)。
在使用与用户设备有关的上下文信息的实施例中,可以通过检测和分析用户设备的特性来识别用户设备(例如设备硬件、软件(例如操作系统(OS))、与网络相关的特性、通过设备访问的用户帐户以及类似特性)。例如,如本文所述,可以使用许多操作系统的功能来确定关于用户设备的信息,以提供关于硬件、OS版本、网络连接信息、所安装的应用等的信息。在一些实施例中,可以为与用户相关联的每个设备确定设备名称或标识(设备ID)。关于与用户相关联的所标识的用户设备的该信息可以被存储在与用户相关联的用户简档中,例如在用户简档240中。在实施例中,可以轮询、询问或以其他方式分析用户设备以确定关于设备的上下文信息。该信息可以用于确定设备的标签或标识(例如,设备ID),使得可以识别一个用户设备上的用户活动并将其与另一用户设备上的用户活动区分开。此外,如本文所述,在一些实施例中,用户可以声明或注册用户设备,例如通过经由该设备登录帐户、在该设备上安装应用、连接到询问该设备的在线服务,或者以其他方式向应用或服务提供关于该设备的信息。在一些实施例中,识别并确定登录到与用户相关联的帐户(例如帐户或Net Passport、电子邮件帐户、社交网络等)的设备是与用户相关联的。
在一些实施方式中,事件生成/更新检测器282可以从用户数据收集组件210接收用户数据,在某些情况下对数据进行解析,并且识别和提取上下文特征或变量。上下文变量项可以被存储为与日历事件相关联的上下文信息的相关集合,并且可以被存储在用户简档中,诸如在用户日历数据242中。在一些实施例中,上下文变量和/或上下文信息被存储为图1B的事件上下文146。在一些情况下,上下文信息可以由一个或多个日历事件模式使用者使用,例如用于向用户提供额外细节以增强用户体验,例如日历同步、冲突调解以及事件调度服务。
在一些实施例中,事件生成/更新检测器282还从关于日历事件的信息和/或从相关的上下文信息中确定与日历事件相关的特征(或变量)。即,事件生成/更新检测器282可以确定和/或编码事件数据(例如但不限于图1B的事件数据144)的生成和/或更新的项。事件生成/更新检测器282输出并存储所确定的一组日历事件特征(事件数据的项)、任何组织或群组特征以及任何全局特征。这些事件数据项可以作为用户日历数据242存储在用户简档240中。
日历定位器284通常负责响应于检测到事件的生成和/或更新来定位每个日历以进行同步。例如,响应于事件生成/更新检测器282检测到事件的生成,日历定位器284可以查阅包括有事件的日历的列表(例如但不限于事件140的相关联日历148的列表),以定位与之同步或共享事件的每个日历。日历定位器284可以将每个定位的日历提供给日历同步器260,从而可以将检测到的事件与定位的日历共享和/或同步。
事件冲突检测器286通常负责时间和/或空间上的多事件和/或多用户冲突的检测。例如,响应于事件生成/更新检测器282检测到第一日历的事件的生成和/或更新,事件冲突检测器286可以检查与该事件相关联的每个日历与涉及一个或多个相同用户的其他事件的时间和/或空间冲突。即,事件冲突检测器286可以查询日历定位器284所定位的每个日历,以检查所生成和/或更新的事件可能与其他日历中的其他事件的时间或空间冲突。事件冲突检测器286可以采用冲突和调度逻辑单元232来检测空间和/或时间上的多用户和/或多事件冲突。事件冲突检测器286可以将检测到的冲突提供给事件冲突调解器250,事件冲突调解器250能够分析和解决这样的冲突。
继续图2的系统200,日历管理器290通常管理日历、日历事件以及同步简档的生成和更新。这样,日历管理器290可以包括日历生成器292、同步简档生成器294、事件生成器/更新器296以及日历权限执行器298。日历生成器292通常负责生成由日历管理器290管理的一个或多个日历。例如,日历生成器292可以使得用户能够生成日历,例如但不限于图1B的日历120。日历生成器292可以使得用户能够提供日历120中包括的任何数据,例如但不限于日历ID 122、用户列表和权限124、日历上下文126等。
事件生成器/更新器296通常负责日历事件的生成和更新,例如但不限于图1B的日历事件140。例如,事件生成器/更新器296可以使得用户能够生成和/或更新事件,以及将事件包括在由日历管理器290管理的一个或多个日历中或从这些日历中删除事件。用户可以提供和/或更新与事件相关联的任何数据,例如日历事件140中包括的任何数据。即,用户可以提供事件ID、一个或多个事件数据项、事件上下文,指示相关联的日历、用户对该事件的读/写权限等。日历权限执行器298通常负责执行日历和事件读/写权限,包括结合日历120的用户列表和权限124以及事件140的用户事件数据权限映射150讨论的那些。
同步简档生成器294通常负责生成和更新同步简档,例如但不限于图1B的同步简档160。可以使得用户能够经由同步简档生成器294来手动生成和/或编辑/更新同步简档。在一些实施例中,同步简档生成器294可以采用事件和同步简档学习器270以至少部分地自动化同步简档的生成和更新。事件和同步简档学习器270可以包括机器学习子组件和/或人工智能代理,用于监测用户的历史活动以生成用户对同步简档的偏好。事件和同步简档学习器270可以采用本文中讨论的任何日历数据和用户数据来“学习”用户的同步和调度偏好。
更具体地,事件和同步简档学习器270可以包括同步模式模型确定器272,其使用用户数据和日历数据来“学习”用户的同步和调度偏好。同步模式模型确定器272通常负责基于在用户信息、日历项事件信息以及与多个日历之间的事件同步有关的用户行为中识别的相似性来确定用户同步模式模型。具体而言,同步模式模型确定器272可以确定:某些特征可以预测用户在日历同步方面的行为,而其他特征则不能预测。预测性特征在所得到模型中的权重较高,并由同步简档生成器294用来生成和/或更新同步简档。
同步简档生成器294、事件和同步简档学习器270或同步模式模型确定器272中的任何一个都可以采用模式推断逻辑单元230来检测或推断各种模式或特征。在一些实施例中,可以使用模式推断逻辑单元230来确定预测性特征以及所得到的模式和模型。模式推断逻辑单元230可以包括规则、关联、条件、预测和/或分类模型,或者模式推断算法。模式推断逻辑单元230可以根据特定的活动模式或用于识别行为模式或者识别观察到的日历项事件之间的特征相似性以确定模式的机制而采取许多不同的形式。例如,模式推断逻辑单元230的一些实施例可以采用机器学习机制来确定特征相似性,或者采用其他统计措施来确定属于往往基于所确定的模式同步的一组事件和/或日历的日历事件,如下文进一步所述的。在一些实施例中,由同步模式模型确定器272确定的行为模式可以被存储为推断的同步模式特征243。
在一些实施例中,同步模式模型确定器272提供与多个日历之间的日历事件的同步有关的用户行为模式,以及与同步模式的强度有关的关联置信度得分,其可以反映用户希望遵循该模式进行未来同步的可能性。更具体地,在一些实施例中,可以关于所确定的用于日历事件的同步模式来确定相应的置信度权重或置信度得分。置信度得分可以基于模式的强度,其可以基于下列各项来确定:用于确定模式的(对类似事件或日历进行同步的)观察次数,用户的同步事件与同步观察的模式、年龄或新鲜度保持一致的频率,与组成模式或类似测量的同步事件相同的相似特征的数量、特征类型和/或特征的相似度。在一些实施例中,特征由同步模式模型确定器272加权或合并。此外,与用户相关的功能通常比群组或全局特征具有更大的权重。再次,在一些实施例中,由同步模式模型确定器272确定的行为模式可以被存储为推断的同步模式243。
日历同步器260通常负责在多个日历之间同步事件,同时保护或限制来自一些日历的事件数据的至少一部分。即,日历同步器260负责将事件提供给日历,以及基于与事件被提供给的日历相关联的同步简档为提供的事件执行每个事件数据项的可访问性或不可访问性。日历同步器260可以采用结合图1B讨论的任何数据来执行这种功能。
例如,响应于日历事件监测器280检测到新事件的生成或对已经存在的事件的更新,日历同步器260在一个或多个日历之间同步一个或多个事件,以使事件的至少一些部分在一个或多个日历之间共享或同步。日历同步器260可以包括同步简档器262、同步事件数据洗涤器264、同步日历更新器266以及同步通知器268。
响应于事件生成/更新检测器282检测到日历事件的生成和/或更新,同步简档器262可以定位和/或访问一个或多个同步简档以同步受影响的日历。例如,同步简档可以存储在数据存储单元234中。更具体地,在检测到事件的生成和/或更新时,日历事件监测器280的日历定位器284可以定位和/或访问存储在数据存储单元234中的一个或多个相关联日历。日历定位器284可以针对事件来查阅图1B的相关联日历148的列表以定位相关联日历。日历定位器284可以确定哪个日历是检测到的事件的主要日历,哪个日历是辅助日历。即,日历定位器284可以向日历同步器260提供与事件的主要日历相对应的第一日历ID以及与事件的一个或多个辅助日历相对应的一个或多个其他日历ID。在一些实施例中,日历定位器284直接将关联的日历ID提供给同步简档器262。
日历同步简档器262可以通过查阅与日历相关联的结构化和/或非结构化数据来确定、定位和/或访问相关联的同步简档。例如,日历同步简档器262可以经由图1B的日历120的同步列表132和所接收的日历ID来确定、定位和/或访问每个相关联的日历的同步简档。
同步事件数据洗涤器264通常负责解析每个所访问的日历同步简档。更具体地,同步事件数据洗涤器264确定并执行对于经由本文中讨论的同步提供给日历的事件的事件数据项的可访问性。基于对用于事件的主要日历和辅助日历的同步简档进行解析,同步事件数据洗涤器264确定哪些事件数据项来提供对一个或多个关联日历中的特定日历的可访问性。同步事件数据洗涤器264还确定哪些事件数据项来限制一个或多个关联日历中的特定日历的可访问性。即,同步事件数据洗涤器264可以针对与检测到的事件相关联的一个或多个日历的每个同步简档,针对事件数据的每个项来查阅每个事件数据可访问性条目。
同步日历更新器266通常负责将共享事件提供给一个或多个日历。在提供共享事件时,同步日历更新器266可以更新事件的一个或多个相关联日历中的每个日历。即,同步日历更新器266基于同步事件数据洗涤器264的确定,将每个检测到的事件的至少一部分提供给每个事件的相关联日历。因此,同步日历更新器266可以向日历提供部分“经洗涤的”事件。同步通知器268通常负责向用户提供一个或多个通知或提醒以向用户通知同步或共享的事件。这样的通知或提醒包括当经由同步事件将日历事件自动添加到日历时,针对用户的基于听觉的、基于视觉的和/或基于文本的通知或提醒。
事件冲突调解器250通常负责调解和解决两个或更多个事件之间的空间和/或时间冲突,其中至少一个事件包括在一个或多个日历中。解决这样的冲突可以包括:为冲突事件提供针对替代日期、时间、位置等的推荐。事件冲突调解器250可以另外调解并解决多个用户之间的空间和/或时间调度冲突。这样,事件冲突调解器250为与大量用户有关的事件提供调度服务,其中每个用户具有如由用户使用的一个或多个日历中指示的单独的时间表。为了执行这样的冲突解决和事件调度服务,事件冲突调解器250可以包括冲突分析器252、冲突解决方案生成器254、冲突/解决方案通知器256以及事件调度器258。事件冲突调解器250的任何组件可以采用冲突和调度逻辑单元232来调解和解决冲突,以及提供事件调度服务。
冲突分析器252通常负责分析多事件和/或多用户冲突,如贯穿全文所讨论的。在分析这样的冲突时,冲突分析器252可以比较多个用户的多个日历以及多个用户的时间表以分析冲突事件。冲突分析器252还可以基于事件中包括的位置信息来另外确定“填充”时间并将其添加到各种事件。冲突分析器252可以另外负责确定与可能具有冲突时间表的用户相关联的用户权重以及与冲突事件相关联的事件权重。可以以任何方式确定用户权重和事件权重,包括采用冲突和调度逻辑单元232以经由机器学习或人工智能来推断权重。
冲突/解决方案生成254通常负责解决冲突。例如,冲突/解决方案生成器254可以通过使用冲突和调度逻辑单元232来确定事件的替代日期、时间和位置。冲突/解决方案通知器256可以向用户提供针对冲突检测和解决方案的一个或多个听觉、视觉和/或文本通知或提醒。事件调度器258可以提供贯穿全文讨论的各种事件调度服务。
现在将讨论和总结存储在用户简档240中的数据(在这一点上)。如上所讨论的,用户日历数据包括日历、日历事件和同步简档。推断出的同步模式特征243包括用于先前日历同步的用户模式的特征,主要是从事件和同步简档学习器270确定的。用户特征244通常包括与用户有关的那些特征(与存储在组件242和243中的日历、事件和同步特征相反)。用户帐户数据246通常包括从用户数据收集组件210收集的用户数据(在某些情况下可能包括与特定用户相关的众包数据)或关于该用户的其他语义知识。具体而言,用户帐户数据246可以包括关于下列各项的数据:用户电子邮件、文本、即时消息、呼叫和其他通信;社交网络帐户和数据(例如新闻推送);在线活动;日历、预约或可能与确定未解决事件相关的其他用户数据;用户可用性;以及重要性、紧迫性或通知逻辑。用户帐户数据246的实施例可以跨越一个或多个数据库、知识图或数据结构来存储信息。用户偏好248通常包括与用户或用户日历事件相关联的用户设置或偏好。通过示例而非限制的方式,这样的设置可以包括关于用户期望被明确监测或不监测的特定会议(和相关信息)或者要监测或不监测的活动类别的用户偏好,众包偏好,例如是否使用众包信息,或者是否可以共享用户的用户日历数据242和/或推断的同步模式特征243作为众包数据。社交网络数据249可以包括与用户的各种社交网络连接有关的数据,并且可以用作事件同步简档学习器270要用来确定同步模式的众包数据的源。
如上所述,模式推断逻辑单元230包含规则、条件、关联、分类模型以及其他标准,以执行事件和同步简档学习器270的功能。呈现组件220用于以可以在用户设备上显示的格式呈现由日历同步系统200及其组件生成的各种界面和各种其他输出。举例来说,呈现组件220可以呈现日历同步界面,用于接收共享和/或同步的日历事件并呈现由系统200生成的附加信息。
图3A示出了第一日历300的示例性但非限制性实施例。图3B示出了第二日历350的示例性但非限制性实施例。图3A-图3B的第一日历和第二日历300/350可以经由本文讨论的各个实施例来进行同步。在图3A-图3B所示的非限制性实施例中,第一日历300是用户的与工作相关的日历,而第二日历350是用户的与家庭相关的日历。第一日历300是个人日历,因为该用户是唯一有权查看文件的用户。第二日历350是共享日历,因为用户家庭的任何成员(包括用户)都能够查看该日历。在该示例中,用户是家庭中的家长,并且可以被称为Parent_A。
第一日历300可以被称为Parent_A的工作日历300,第二日历350可以被称为Parent_A的家庭日历350。六个事件在工作日历300和家庭日历350之间共享。对于六个事件中的每个事件,工作日历300是事件的主要日历,家庭日历350是事件的辅助日历。如图3A-图3B所示,六个事件中的每个事件的各种事件数据项对于工作日历300和家庭日历350中的每个日历来说都是可访问的。如在图3A和图3B之间的比较中所示,六个共享事件的事件数据项的至少一部分的可访问性至少对于家庭日历350是受限的。
第一日历事件在工作日历300中被显示为项302,并且在家庭日历350中被显示为项352。第二日历事件在工作日历300中被显示为项304,并且在家庭日历350中被显示为项354。第三日历事件在工作日历300中被显示为项306,并且在家庭日历350中被显示为项356。第四日历事件在工作日历300中被显示为项308,并且在家庭日历350中被显示为项358。第五日历事件在工作日历300中被显示为项310,并且在家庭日历350中被显示为项360。第六日历事件在工作日历300中被显示为项312,并且在家庭日历350中被显示为项362。
如上所述,事件数据中的某些项可在工作日历和家庭日历300/350中的每个日历中可访问和显示,而事件数据的其他项不可由工作日历350访问和/或显示。例如,在每个日历300/350中显示六个事件中的每个事件的日期(2017年10月13日)和时间事件数据项。但是,事件数据的某些项未在家庭日历350中示出。这样,Parent_A可以向其家庭中的每个成员提供有关其可用性的信息,同时仍然可以保护他可能不希望共享的信息。日历同步器,例如但不限于图2的系统200的日历同步器260,可以将事件提供给日历300/350中的每个日历,同时对每个事件的各个事件数据项执行可访问性/不可访问性,如本文所讨论的。
事件的主要日历(即,工作日历300)可以访问第一事件的事件数据,例如事件标题(“眼科检查”)、事件位置(“Dr_A的办公室”)以及事件目的(“为联系人续订处方”),但事件的辅助日历(即,家庭日历350)无法访问上述各项。如至少结合图1B的同步简档160所讨论的,可以将替代数据提供给辅助日历。例如,在项352中显示的工作日历350的第一事件的替代数据包括“Parent_A保健预约”。工作日历300的项304和家庭日历350的项354的类似比较显示出第二事件的某些事件数据对家庭日历350有所限制。
在工作日历和家庭日历300/350中显示的第三、第四、第五和第六事件的比较显示出针对各种事件的事件数据的进一步限制以及用替代数据来进行替换。如家庭日历350的项362中所显示的,第六事件包括“填充的”时间。也就是说,项362显示了从第六事件的开始时间减去了额外的半小时,并向第六事件的停止时间添加了额外的半小时,以适应Parent_A从Gym_A到Restaurant_B的行程时间以及Parent_A从Restaurant_B到用户家的行程时间。可基于对各种事件的用户位置的分析来确定这种填充时间并将其包括在事件中。这种填充时间可以经由事件冲突调解器来确定,例如但不限于系统200的事件冲突调解器250。在一些实施例中,可以基于事件的位置分析,采用冲突和调度逻辑单元232来确定所需的填充时间量。通过在项362中包括填充时间,日历350在不暴露事件的位置的情况下基于行程时间向其家庭成员提供了Parent_A的可用性。
如图3B所示,通过来自另一个日历的合并和/或同步事件的表示来标记受影响的日历。在各个实施例中,可以利用链接、指针或对同步事件的一些其他引用来填充受影响的日历,而不是通过同步事件来填充。可以通过选择链接或参考来打开、访问和/或查看事件。在各个实施例中,当选择链接时,可以使用用户证书来确定用于查看事件和/或事件数据的授权。如果用户的证书使得用户能够查看同步事件的主要日历,则可以访问该事件以及该事件的每个事件数据。如果用户的证书不能使得用户查看事件的主要日历,而只能查看该事件的辅助日历,则仅与该辅助日历关联的可访问事件数据被提供给用户。在一些实施例中,当选择链接、指针或对同步事件的引用时,可以提示用户需要他的证书。
尽管在图3A-图3B中未示出,但是如果Parent_A尝试向日历300添加与日历350上已经存在的事件相冲突的事件,则事件冲突调解的各个实施例可以检测并解决该冲突。在这样的实施例中,可以向Parent_A提供关于检测到的冲突的警告或通知。另外,可以向Parent_A提供解决冲突的建议,即,他们尝试向日历300添加事件的替代日期、时间和/或地点。
现在转到图4,图4提供了流程图,该流程图示出了根据本公开内容的实施例的用于管理和同步多个日历的方法400。方法400的至少一些部分可由图1A的操作环境100和/或图2的日历同步系统200中包括的设备和/或组件实现、执行和/或进行。结合图1B讨论的一些结构化数据可以至少部分地启用方法400的部分。最初,如框402所示,该方法至少管理第一和第二日历。在方法400的至少一个示例性实施例中,第一日历可以是工作日历,例如但不限于图3A的工作日历300,并且第二日历可以是家庭日历,例如但不限于图3B的家庭日历350。结合图2的系统200的日历管理器290和图5A的方法500,讨论了用于管理日历的各个实施例。
然而,简要地,在框402处,第一和第二日历可以由日历管理器来管理,例如但不限于日历管理器290。因此,在框402处,可以执行日历管理器的任何任务或功能,例如但不限于:生成/更新第一日历和第二日历、生成/更新第一日历和第二日历的各种同步简档以及生成/更新第一和第二日历的日历事件。另外,在框402处,可以针对第一和第二日历二者执行日历权限,例如但不限于用户读取和写入权限。
在框404处,监测第一和第二日历。结合图2的系统200的日历事件监测器280和图5B的方法520,讨论了用于监测日历的各个实施例。然而,简要地,在框404处,第一日历和第二日历可以由日历监测器监测,例如但不限于日历事件监测器280。因此,在框404处,可以执行日历监测器的任何任务或功能。例如,可以检测与第一日历或第二日历相关联的日历事件的生成和/或更新。响应于检测到第一日历或第二日历的日历事件的生成和/或更新,可以在框404处定位和/或访问要与检测到的事件同步的其他日历。此外在框404处,可以检测所检测到的事件与其他日历事件之间的时间和/或空间冲突。
在框406处,对在框404处检测到的任何时间和/或空间冲突进行调解和/或解决。至少结合图2的系统200的事件冲突调解器250和图5C的方法540,讨论了用于调解冲突的各个实施例。然而,简而言之,在框406处,可以执行事件冲突调解器的任何任务或功能。例如,在框406处,可以通过确定和推荐第一事件或第二事件中至少一个事件的替代日期、时间或位置来解决第一日历中包括的第一事件和第二日历中包括的第二事件之间的任何时间和/或空间冲突。例如,在框406处,可以分析和解决在框404处检测到的冲突,其中,第一事件和第二事件是个人或特定用户有兴趣参加的事件。解决冲突可以包括为冲突中的至少一个事件提供所推荐的替代日期、时间或位置。除了解决冲突之外,可以在框406处调度事件,并且可以将与所调度的事件和解决的冲突有关的通知提供给用户。
在框408处,可以对第一日历和第二日历进行同步。至少结合图2的系统200的日历同步器260和图5D的方法560,讨论了用于对日历进行同步的各个实施例。然而,简而言之,在框408处,可以执行日历同步器的任何任务或功能。例如,可以定位和/或访问第一和第二日历的相关同步简档。在框408处,可以基于同步简档来确定要提供给第一日历和第二日历中的每个日历的事件的事件数据。同样地,可以基于同步简档来确定要从第一日历和第二日历中的每个日历限制的事件的事件数据。在框408处,可以将事件数据的可访问部分选择性地提供给第一日历和第二日历中的每一个。例如,图3A和图3B的比较示出了工作日历300和家庭日历350的同步。此外在框408处,可以向第一和第二日历的用户提供一个或多个通知。
图5A示出了根据本公开内容的实施例的用于管理多个日历的方法500的流程图。方法500的至少一些部分可由图1A的操作环境100和/或图2的日历同步系统200中包括的设备和/或组件实现、执行和/或进行。结合图1B讨论的一些结构化数据可以至少部分地实现方法500的一些部分。最初,如框502所示,生成第一和第二日历。例如,日历生成器(例如但不限于图2的日历生成器292)可以生成工作日历(例如但不限于图3A的工作日历300)和家庭日历(例如但不限于图3B的家庭日历350)。日历生成器的任何其他任务或功能可以在框502处执行。
在框504处,可以生成和/或更新用于第一日历和第二日历的第一同步简档。在框506处,可以生成和/或更新用于第一日历和第二日历的第二同步简档。所生成/更新的第一和第二同步简档可以至少类似于图1B的同步简档160。第一同步简档可以将第一日历指示为主要日历,并且将第二日历指示为辅助日历。相反,第二同步简档可以将第二日历指示为主要日历,并且将第一日历指示为辅助日历。同步简档生成器(例如但不限于图2的同步简档生成器294)可以用于至少部分地生成和/或更新同步简档。因此,在框504和506处,可以使用事件和同步简档学习器(例如但不限于图2的事件和同步简档学习器270)以至少部分地自动化同步简档的生成/更新。
在框508处,更新和/或生成第一日历的第一事件。在框510处,更新和/或生成第二日历的第二事件。例如,在框508和510处,可以生成和/或更新工作日历300的第一事件,并且可以生成和/或更新家庭日历350的第二事件。任何事件生成器(例如但不限于事件生成器/更新器296)都可以生成事件。所生成的事件可以被编码在结构化数据中,例如但不限于图1B的日历事件140。在框512处,可以执行第一日历和第二日历中的每一个的日历权限。日历权限可以由日历权限执行器来执行,例如但不限于图2的日历权限执行器298。可以在用户和权限列表中找到这样的权限,例如但不限于图1B的用户列表和权限124。
在框514处,监测第一和第二日历。日历可以由日历监测器监测,例如但不限于日历事件监测器280。至少结合图5B的日历事件监测器280和方法520来讨论用于监测日历的各个实施例。此外,在框514处,可以调解并解决事件冲突。此外,可以调度事件。冲突可以由事件冲突调解器来调解和解决,例如但不限于图2的事件冲突调解器250。事件可以由此类事件冲突调解器调度。至少结合事件冲突调解器250和图5C的方法540来讨论用于调度事件以及调解和解决冲突的各个实施例。
在框516处,对第一日历和第二日历进行同步。日历可以经由日历同步器来进行同步,例如但不限于图2的日历同步器260。结合图5D的日历事件同步器260和方法560来讨论用于对日历进行同步的各个实施例。然而,在此简言之,可以基于第一事件、第二事件、第一同步简档和第二同步简档来对日历进行同步。图3A和3B示出了同步的第一日历和第二日历。
图5B示出了根据本公开内容的实施例的用于监测多个日历的方法520的流程图。方法500的至少一些部分可由图1A的操作环境100和/或图2的日历同步系统200中包括的设备和/或组件实现、执行和/或进行。结合图1B讨论的一些结构化数据可以至少部分地实现方法520的一些部分。最初,如框522所示,可以接收第一日历的第一事件。例如,事件生成/更新检测器(例如但不限于图2的事件生成/更新检测器282)可以检测或以其他方式接收工作日历(例如但不限于图3A的工作日历300)的生成/更新的第一事件。
在框524处,基于第一日历的同步简档来定位和/或访问第二日历。例如,日历定位器(例如但不限于图2的日历定位器284)可以定位第二日历(例如但不限于图3B的家庭日历350)。在框526处,可以检测到与第一事件相关联的第一和第二日历之间的冲突。例如,事件冲突检测器(例如但不限于图2的事件冲突检测器286)可以检测第一日历的第一事件与第二日历的第二事件之间的时间和/或空间冲突。
在框528处,可以调解与事件相关联的第一日历和第二日历之间的检测到的冲突。例如,事件冲突调解器(例如但不限于图2的事件冲突调解器250)可以调解并解决冲突。至少结合图C的事件冲突调解器250和方法540来讨论调解和解决事件之间的冲突的各个实施例。
在框530处,可以基于第一事件和第一同步简档来更新第二日历。例如,日历同步器(例如日历同步器260)可以更新第二日历。至少结合日历同步器260和图5D的方法560来讨论基于同步或共享事件来更新日历的各个实施例。
在框532处,可以接收第二日历的第二事件。对于在框532处接收的事件,第二日历可以是主要日历,而第一日历是辅助日历。在框534处,可基于同步简档来定位第一日历,该同步简档将第二日历指示为主要日历并且将第一日历指示为辅助日历。在框536处,可以检测第一日历和第二日历之间的冲突。在框538处,与框528类似,可以解决这样的冲突并且可以调度其他事件。在框539处,可以更新第一日历。即,可以基于第二同步简档将第二事件与第一日历共享。
图5C示出了根据本公开内容的实施例的用于在日历之间调解和解决事件并调度事件的方法540的流程图。方法540的至少一些部分可由图1A的操作环境100和/或图2的日历同步系统200中包括的设备和/或组件实现、执行和/或进行。结合图1B讨论的一些结构化数据可以至少部分地实现方法540的一些部分。最初,如框542所示,对与已被检测为发生冲突的事件相关联的每个用户的每个日历进行分析。例如,冲突分析器(例如但不限于图2的冲突分析器252)可以对与事件冲突检测器已检测到发生冲突的两个或更多个事件相关联的每个用户的每个日历进行分析。
在框544处,确定与冲突事件相关联的每个用户的用户权重。在框546处,确定每个冲突事件的事件权重。冲突分析器可以确定用户权重和/或事件权重。在框548处,基于所分析的日历、用户权重和事件权重来确定针对冲突事件的推荐更新。针对冲突事件的推荐更新可以包括下列各项中的至少一项:替代日期、替代开始时间、替代停止时间、替代持续时间,或者对于冲突事件中的至少一个事件的替代。建议的更新可以解决冲突。冲突解决方案生成器(例如但不限于图2的冲突解决方案生成器254)可以确定和/或生成推荐的更新。
在框550处,向每个用户提供指示冲突和推荐更新的一个或多个通知。图2的冲突/解决方案通知器256可以提供通知。在框552处,可以从至少一部分用户接收关于推荐更新的反馈。在框554处,基于用户反馈来确定冲突事件的最佳更新。在框556处,基于最佳更新来更新日历。可以使用同步日历更新器266来更新日历。在框558处,可以调度一个或多个事件。事件调度器(例如但不限于图2的事件调度器258)可以调度一个或多个事件。可以基于用户权重和/或事件权重来调度事件。
图5D示出了根据本公开内容的实施例的用于对多个日历进行同步的方法560的流程图。方法560的至少一些部分可由图1A的操作环境100和/或图2的日历同步系统200中包括的设备和/或组件实现、执行和/或进行。结合图1B讨论的一些结构化数据可以至少部分地实现方法560的一些部分。最初,如框562所示,接收生成/更新的事件。在各个实施例中,可以在框562处检测生成/更新的事件。至少结合事件生成/更新检测器282和图5B的方法520来讨论接收和/或检测生成/更新的事件的各个实施例。日历事件监测器(例如但不限于图2的日历事件监测器280)可以接收和/或检测事件。
在框564处,确定与所接收的事件相关联的第一日历和第二日历。例如,日历定位器(例如但不限于图2的日历定位器284)可以查阅在事件所包括的数据中编码的相关日历的列表。在框566处,访问第一日历和第二日历的第一同步简档。在框568处,访问第一日历和第二日历的第二同步简档。例如,第一同步简档可以将第一日历指示为主要日历,并且将第二日历指示为辅助日历。第二同步简档可以将第二日历指示为主要日历,并且将第一日历指示为辅助日历。在一个实施例中,同步简档器(例如图2的同步简档器262)可以访问同步简档。
在框570处,基于第一同步简档来确定第一日历的事件数据可访问性。在框572处,基于第二同步简档来确定第二日历的事件数据可访问性。在一个实施例中,同步简档器262可以通过对同步简档进行解析来确定事件数据可访问性。在框574处,基于为各个日历确定的事件访问权来更新第一日历和第二日历。同步日历更新器(例如但不限于图2的同步日历更新器266)可以更新第一日历和第二日历。在框576处,可以将基于第一日历的更新的第一通知提供给第一日历的用户。在框578处,可以将基于第二日历的更新的第二通知提供给第二日历的用户。可以采用同步通知器(例如图2的同步通知器268)来将通知提供给用户。
因此,我们已经描述了技术的各个方面,这些技术提供了从日历事件项推断出的附加级别的信息以及基于此信息的个性化计算体验,改善了个人数字助理的性能,并提高了计算资源使用和网络带宽使用的效率。应该理解的是:本文中描述的实施例的各种特征、子组合和修改是有用的,并且可以在不参考其他特征或子组合的情况下在其他实施例中使用。此外,示例方法400、500、520、540和560中示出的步骤的次序和顺序并不意在以任何方式限制本公开内容的范围,事实上,在本发明的实施例中,步骤可以以各种不同顺序发生。设想这样的变化及其组合也在本公开内容的实施例的范围内。
已经描述了各种实现,现在对适用于实现本公开内容的实施例的示例性计算环境进行描述。参考图6,提供了示例性计算设备并通常将其称为计算设备600。计算设备600只是合适的计算环境的一个示例,并不意在暗示对本公开内容的实施例的使用范围或功能的任何限制。计算设备600也不应该被解释为具有与所示出的任一组件或其组合相关的任何依赖性或要求。
本公开内容的实施例可以在计算机代码或机器可使用指令的一般性上下文中进行描述,其包括计算机可使用或计算机可执行指令,如由计算机或诸如个人数据助理、智能电话、平板PC或其它手持设备的其它机器执行的程序模块。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本公开内容的实施例可以在各种各样的系统配置中实施,这些系统配置包括:手持设备、消费电子产品、通用计算机、更专业的计算设备等。本公开内容的实施例还可以在分布式计算环境中实施,在分布式计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质(包括存储器存储设备)二者中。
参考图6,计算设备600包括:直接或间接耦接以下设备的总线610:存储器612、一个或多个处理器614、一个或多个呈现组件616、一个或多个输入/输出(I/O)端口618、一个或多个I/O组件620以及示例性电源622。总线610表示什么可以是一个或多个总线(如地址总线、数据总线或者它们的组合)。虽然为了清楚起见,用线示出了图6的各个框,但实际上,这些框表示逻辑的不一定是实际的组件。例如,可以认为呈现组件(如显示设备)是I/O组件。另外,处理器具有存储器。本发明人认识到这是本领域的特性,并重申:图6的图示仅是可结合本公开内容的一个或多个实施例来使用的示例性计算设备的例示。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等的类别之间不做区分,因为这些类别都被设想为在图6的范围之内,并且被称为“计算设备”。
计算设备600通常包括各种各样的计算机可读介质。计算机可读介质可以是可由计算设备600访问的任何可用介质,并且包括易失性和非易失性介质,可移动和不可移动介质。通过举例而非限制的方式,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息、以任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需的信息且可由计算设备600访问的任何其它介质。计算机存储介质不包括信号本身。通信介质通常体现为计算机可读指令、数据结构、程序模块或调制数据信号(如载波波形)或其它传输机制中的其它数据并且包括任何信息传递介质。术语“调制数据信号”意指具有其特性集合中的一个或多个特性或以对信号中的信息进行编码的方式改变的信号。通过举例而非限制的方式,通信介质包括诸如有线网络或直接线连接的有线介质,以及诸如声音、RF、红外线和其它无线介质的无线介质。上述各项中任意项的组合也应该包括在计算机可读介质的范围之内。
存储器612包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的、不可移动的或它们的组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备600包括从诸如存储器612或I/O组件620的各个实体读取数据的一个或多个处理器614。呈现组件616向用户或其它设备呈现数据指示。在一些实现中,系统200的呈现组件220可以被体现为呈现组件616。呈现组件的其他示例可以包括显示设备、扬声器、打印组件、振动组件等。
I/O端口618允许计算设备600逻辑地耦接到其它设备(包括I/O组件620),其中一些可以是内置的。说明性组件包括麦克风、操纵杆、游戏垫、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件620可以提供对空中手势、语音或由用户生成的其他生理输入进行处理的自然用户界面(NUI)。在一些实例中,输入可以被发送到合适的网络单元用于进一步处理。NUI可以实现下列各项的任意组合:语音识别、触摸和手写笔识别、面部识别、生物计量识别、在屏幕上以及邻近屏幕的手势识别、空中手势、头眼跟踪以及与计算设备600上的显示相关联的触摸识别。计算设备600可以配备深度相机(诸如立体摄像系统、红外摄像系统、RGB摄像系统以及这些的组合)来用于手势检测和识别。另外,计算设备600可以配备能够进行运动检测的加速计或回转仪。加速计或回转仪的输出可以被提供给计算设备600的显示器,以呈现融入式增强的现实或虚拟现实。
计算设备600的一些实施例可以包括一个或多个无线电单元624(或类似的无线通信组件)。无线电单元624发送和接收无线电或无线通信。计算设备600可以是适于通过各种无线网络来接收通信和媒体的无线终端。计算设备600可以经由诸如码分多址(“CDMA”)、全球移动系统(“GSM”)或时分多址(“TDMA”)等的无线协议来进行通信,以便与其他设备通信。无线电通信可以是短程连接、远程连接,或者短程和远程无线电信连接二者的组合。当我们提及“短”和“长”连接类型时,我们并不是意指两个设备之间的空间关系。相反,我们通常将短距离和长距离称为连接的不同类别或类型(即主要连接和辅助连接)。通过示例而非限制的方式,短程连接可以包括到设备(例如,移动热点)的连接,该设备提供对无线通信网络的访问(例如使用802.11协议的WLAN连接);到另一个计算设备的蓝牙连接是短程连接的第二示例,或者近场通信连接。通过示例而非限制的方式,远程连接可以包括使用CDMA、GPRS、GSM、TDMA和802.16协议中的一个或多个的连接。
在不脱离所附权利要求书的范围的情况下,所描绘的各个组件以及未示出的组件的许多不同布置是可能的。已经用旨在是说明性而非限制性的方式对本公开内容的实施例进行了描述。替代实施例在阅读本公开内容之后以及由于阅读本公开内容将变得显而易见。在不脱离所附权利要求书的范围的情况下,可以完成实现前述内容的替代手段。某些特征和子组合是有用的,并且可以在不参考其它特征和子组合的情况下使用,并且被认为在权利要求书的范围内。
Claims (15)
1.一种计算机化系统,包括:
一个或多个传感器,其被配置为提供传感器数据;
一个或多个处理器;以及
具有存储在其上的计算机可执行指令的计算机存储内存,当由所述一个或多个处理器执行时,所述指令实现一种方法,所述方法包括:
监测来自所述一个或多个传感器以及与用户相关联的一个或多个用户设备的用户活动,以检测与日历集合相关联的日历活动;
检测作为日历事件的第一事件,其中,所述第一事件包括在所述日历集合中包括的第一日历中;
基于所述用户活动、所述第一日历或所述第一事件中的至少一项来确定第二日历,其中,所述第二日历包括在所述日历集合中;以及
更新所述第二日历以包括所述第一事件。
2.根据权利要求1所述的系统,其中,在所述第一日历中显示包括在所述第一事件中的事件数据的一部分,并且限制从所述第二日历对所述事件数据的所述部分的访问。
3.根据权利要求1或2所述的系统,其中,所述方法还包括:
响应于更新所述第二日历,向能够查看所述第二日历的第二用户提供以下通知:所述第二日历包括所述第一事件。
4.根据权利要求1、2或3中的一项权利要求所述的系统,其中,所述方法还包括:
确定所述第一事件的位置;以及
基于所述第一事件的位置,更新所述第一事件的开始时间或停止时间中的至少一个。
5.根据前述权利要求中的任意一项权利要求所述的系统,其中,所述方法还包括:
检测所述第二日历中包括的第二事件;
检测所述第一事件与所述第二事件之间的冲突;以及
向所述用户提供关于所述第一事件或所述第二事件中的至少一个的至少一个替代日期、时间或位置的建议,其中,所述替代日期、所述时间或所述位置中的至少一项解决所述第一事件与所述第二事件之间检测到的冲突。
6.根据前述权利要求中的任意一项权利要求所述的系统,其中,所述方法还包括:
基于所述第一日历来确定第一时间表;
基于所述第二日历来确定第二时间表;以及
基于所述第一时间表和所述第二时间表,确定第二事件的日期、时间或位置中的至少一项。
7.根据前述权利要求中的任意一项权利要求所述的系统,其中,所述方法还包括:
响应于确定所述第二日历,向所述用户提供将所述第一事件包括在所述第二日历中的选项;以及
响应于接收到针对所述选项的用户选择,更新所述第二日历以包括所述第一事件。
8.根据前述权利要求中的任意一项权利要求所述的系统,其中,所述方法还包括:
检测对所述第一事件的更新,所述更新包括对所述第一事件的日期、开始时间、停止时间或位置的更新中的至少一项;以及
更新所述第二日历以包括对所述第一事件的更新。
9.根据前述权利要求中的任意一项权利要求所述的系统,其中,所述方法还包括:
基于下列各项中的至少一项来确定包括在所述第一事件中的事件数据的共享部分:所述第一事件的上下文、所述第一日历的上下文,或者所监测的用户活动;
基于下列各项中的至少一项来确定包括在所述第一事件中的事件数据的受限部分:所述第一事件的上下文、所述第一日历的上下文,或者所监测的用户活动;
向所述第一日历和所述第二日历中的每一个提供所述事件数据的所述共享部分;
向所述第一日历提供所述事件数据的所述受限部分;以及
限制所述第二日历访问所述事件数据的所述受限部分。
10.根据前述权利要求中的任意一项权利要求所述的系统,其中,所述方法还包括:
确定与所述用户相关联的第一权重;
确定与所述第二日历的第二用户相关联的第二权重;以及
基于所述第一日历、所述第二日历、与所述第一用户相关联的所述第一权重,以及与所述第二用户相关联的所述第二权重来调度第二事件。
11.根据前述权利要求中的任意一项权利要求所述的系统,其中,所述方法还包括:
确定与所述第一事件相关联的第一权重;
确定与所述第二日历中包括的第二事件相关联的第二权重;以及
基于所述第一日历、所述第二日历、与所述第一事件相关联的所述第一权重,以及与所述第二事件相关联的所述第二权重来调度第三事件。
12.根据前述权利要求中的任意一项权利要求所述的系统,其中,确定所述第二日历是基于与所述第一日历相关联的同步简档的。
13.一种方法,包括:
监测来自与用户相关联的一个或多个用户设备的用户活动,以检测与日历集合相关联的日历活动;
检测作为日历事件的第一事件,其中,所述第一事件包括在所述日历集合中包括的第一日历中;
基于所述用户活动、所述第一日历或所述第一事件中的至少一项来确定第二日历,其中,所述第二日历包括在所述日历集合中;以及
更新所述第二日历以包括所述第一事件。
14.根据权利要求13所述的方法,其中,所述第一事件的类型是工作事件、学校事件或私人事件中的一个。
15.根据权利要求13或14所述的方法,还包括:
检测所述第二日历中包括的第二事件;
检测所述第一事件与所述第二事件之间的冲突;以及
向所述用户提供关于所述第一事件或所述第二事件中的至少一个的至少一个替代日期、时间或位置的建议,其中,所述替代日期、所述时间或所述位置中的至少一项解决所述第一事件与所述第二事件之间检测到的冲突。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/863,975 US11263592B2 (en) | 2018-01-07 | 2018-01-07 | Multi-calendar harmonization |
US15/863,975 | 2018-01-07 | ||
PCT/US2018/066100 WO2019135896A1 (en) | 2018-01-07 | 2018-12-18 | Multi-calendar harmonization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111615712A true CN111615712A (zh) | 2020-09-01 |
CN111615712B CN111615712B (zh) | 2023-12-05 |
Family
ID=65139163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880085742.5A Active CN111615712B (zh) | 2018-01-07 | 2018-12-18 | 多日历协调 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11263592B2 (zh) |
EP (1) | EP3735666A1 (zh) |
CN (1) | CN111615712B (zh) |
WO (1) | WO2019135896A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021161104A1 (en) * | 2020-02-12 | 2021-08-19 | Monday.Com | Enhanced display features in collaborative network systems, methods, and devices |
US11120409B1 (en) | 2016-01-07 | 2021-09-14 | Approved Contact, LLC | Calendar comparison system and method |
US10997536B2 (en) | 2018-01-31 | 2021-05-04 | Clari Inc. | Method for determining amount of time spent on a task and estimating amount of time required to complete the task |
US10936623B2 (en) | 2018-01-31 | 2021-03-02 | Clari Inc. | Method and system for synchronizing databases automatically and periodically |
US11282042B2 (en) * | 2019-03-11 | 2022-03-22 | Microsoft Technology Licensing, Llc | Artificial intelligence for calendar event conflict resolution |
US20210192461A1 (en) * | 2019-12-18 | 2021-06-24 | Microsoft Technology Licensing, Llc | Multiple calendar display |
US20210192462A1 (en) * | 2019-12-18 | 2021-06-24 | Microsoft Technology Licensing, Llc | Multiple calendar display |
EP3848869A1 (en) * | 2020-01-09 | 2021-07-14 | Microsoft Technology Licensing, LLC | Electronic calendar selection |
US11556560B2 (en) * | 2020-01-24 | 2023-01-17 | Microsoft Technology Licensing, Llc | Intelligent management of a synchronization interval for data of an application or service |
CN113689171A (zh) * | 2020-05-18 | 2021-11-23 | 华为技术有限公司 | 一种家庭日程融合的方法及装置 |
WO2021243565A1 (en) * | 2020-06-02 | 2021-12-09 | Citrix Systems, Inc. | Dynamic recommendation engine |
US20220129996A1 (en) * | 2020-10-22 | 2022-04-28 | Seize LLC | Systems and methods to organize data from multiple platforms with non-transitory computer-readable media and data organizing methods |
US11531452B2 (en) | 2021-01-14 | 2022-12-20 | Monday.com Ltd. | Digital processing systems and methods for group-based document edit tracking in collaborative work systems |
US20220398546A1 (en) * | 2021-06-11 | 2022-12-15 | Reclaim Inc. | System and methods for managing schedules and calendars |
US12105948B2 (en) | 2021-10-29 | 2024-10-01 | Monday.com Ltd. | Digital processing systems and methods for display navigation mini maps |
US12056255B1 (en) | 2023-11-28 | 2024-08-06 | Monday.com Ltd. | Digital processing systems and methods for facilitating the development and implementation of applications in conjunction with a serverless environment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060190313A1 (en) * | 2002-01-18 | 2006-08-24 | America Online, Inc., A Delaware Corporation | Calendar overlays |
CN102867249A (zh) * | 2012-07-12 | 2013-01-09 | 广东步步高电子工业有限公司 | 基于移动互联网的在线日历系统 |
CN105094517A (zh) * | 2014-05-06 | 2015-11-25 | 菲特比特公司 | 用户装置上基于活动监测装置所检测的活动的通知 |
CN106415628A (zh) * | 2014-05-28 | 2017-02-15 | 微软技术许可有限责任公司 | 社交日历事件共享 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090054091A1 (en) * | 2007-02-21 | 2009-02-26 | Van Wijk Jacques | Methods and Systems for Consolidated Notifications of Updated Personal Information Manager Data |
US20100004971A1 (en) * | 2008-03-18 | 2010-01-07 | The Go Daddy Group, Inc. | Coordinating shedules based on contact priority |
US8375081B2 (en) * | 2009-12-28 | 2013-02-12 | Microsoft Corporation | Calendar repair assistant |
US9117204B2 (en) * | 2010-09-30 | 2015-08-25 | Verizon Patent And Licensing Inc. | Method and apparatus for group coordination of calendar events |
US20140067455A1 (en) | 2012-08-30 | 2014-03-06 | Palo Alto Research Center Incorporated | Method and apparatus for automatically managing user activities using contextual information |
US10510050B2 (en) | 2012-09-10 | 2019-12-17 | Private Secretary, Ltd. | Meetings and events coordinating system and method |
US20140185417A1 (en) * | 2013-01-03 | 2014-07-03 | Ge Zhao | System and method for multi-user calendar synchronization and statistical analysis thereof |
US20160189109A1 (en) * | 2014-12-29 | 2016-06-30 | Apollo Education Group, Inc. | Adaptive event scheduling |
US20160342955A1 (en) * | 2015-05-08 | 2016-11-24 | Daysaver, Inc. | Multi-entity event coordination server and system |
US10721327B2 (en) * | 2017-08-11 | 2020-07-21 | Uber Technologies, Inc. | Dynamic scheduling system for planned service requests |
-
2018
- 2018-01-07 US US15/863,975 patent/US11263592B2/en active Active
- 2018-12-18 WO PCT/US2018/066100 patent/WO2019135896A1/en unknown
- 2018-12-18 CN CN201880085742.5A patent/CN111615712B/zh active Active
- 2018-12-18 EP EP18837020.9A patent/EP3735666A1/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060190313A1 (en) * | 2002-01-18 | 2006-08-24 | America Online, Inc., A Delaware Corporation | Calendar overlays |
CN102867249A (zh) * | 2012-07-12 | 2013-01-09 | 广东步步高电子工业有限公司 | 基于移动互联网的在线日历系统 |
CN105094517A (zh) * | 2014-05-06 | 2015-11-25 | 菲特比特公司 | 用户装置上基于活动监测装置所检测的活动的通知 |
CN106415628A (zh) * | 2014-05-28 | 2017-02-15 | 微软技术许可有限责任公司 | 社交日历事件共享 |
Also Published As
Publication number | Publication date |
---|---|
US11263592B2 (en) | 2022-03-01 |
EP3735666A1 (en) | 2020-11-11 |
CN111615712B (zh) | 2023-12-05 |
WO2019135896A1 (en) | 2019-07-11 |
US20190213557A1 (en) | 2019-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111615712B (zh) | 多日历协调 | |
US12073347B2 (en) | User objective assistance technologies | |
US12111857B2 (en) | Computerized assistance using artificial intelligence knowledge base | |
US10257127B2 (en) | Email personalization | |
KR102242267B1 (ko) | 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법 | |
US11100438B2 (en) | Project entity extraction with efficient search and processing of projects | |
US20170308866A1 (en) | Meeting Scheduling Resource Efficiency | |
US8069142B2 (en) | System and method for synchronizing data on a network | |
WO2019133264A1 (en) | Enhanced computer experience from personal activity pattern | |
WO2018183019A1 (en) | Distinguishing events of users for efficient service content distribution | |
Schuster et al. | Pervasive social context: Taxonomy and survey | |
KR20090024179A (ko) | 가족 정보를 관리하는 방법, 컴퓨터 판독가능 매체, 및 가족 정보를 디스플레이하는 시스템 | |
US20220078135A1 (en) | Signal upload optimization | |
US20140114943A1 (en) | Event search engine for web-based applications | |
US20230325735A1 (en) | Generating and processing contextualized group data | |
US11825014B1 (en) | Location-specific resource alert generation | |
Gupta | Contextual Reasoning based Mobile Recommender System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |