混合日历的好处

目前,该集成提供以下主要功能:

  1. 使用户能够通过任何连接到 Google 的 G Suite 日历 (Google Calendar) 的日历客户端安排协作会议。 您无需安装插件或扩展程序。 在位置字段(例如 @webex 或 @meet)。

  2. 在 Webex 应用程序(桌面和移动)和物理终端上向用户显示会议列表。

  3. 弹出带有“加入”按钮的通知,也称为一键通 (OBTP)。

  4. 更新用户的 Webex 应用程序在线状态(当用户在 Gmail 中开启假期响应者时,有时称为“外出”状态)。

本文概述了基于云的混合日历服务如何将 Google Calendar 与 Webex 云集成来提供这些功能。

有关其他混合日历服务集成的类似概述,请参阅以下文章:

关于最新功能与部署信息,请参阅https://www.cisco.com/go/hybrid-services-calendar

数据处理

混合日历从日历系统接收会议详细信息,并按如下方式使用:

  • 检查用于加入会议的URI和URL的会议位置和正文
  • 邀请的标题作为会议标题
  • 在Webex应用程序和某些设备的会议列表中显示会议插槽的开始和结束时间
  • 要在会议列表中填充参加者列表的受邀者
  • 到了加入的时间,受邀者将向他们发送“加入”按钮
  • 会议邀请主体填充Webex会议议程

服务将加密数据发送到 Webex 云(并以加密形式存储数据),以提供会议列表和加入按钮。

服务不存储或传输未加密的数据。 敏感数据(例如会议描述、会议正文和受邀者的电子邮件地址)在存储和传输时始终会加密。


 
混合日历服务会在限定时间内保留会议数据。 存储的数据涵盖从过去 7 天到未来 31 天的会议。

对于数据加密,混合日历使用与 Webex 应用程序相同的 Webex 云加密服务。 因此,云密钥管理服务器 (KMS) 可提供密钥管理。 如果您选择部署混合数据安全,您自己的内部KMS 将提供密钥管理。 (有关更多详细信息,请参阅Webex 应用程序安全性文件。)

部署期间的验证和授权

混合日历使用 OAuth 2.0 客户端凭证授予流到 Google 授权服务器。

应用程序验证过程

混合日历会作为应用程序向 Google 注册。 它使用具有域范围委派的服务帐户,以避免需要用户同意。 (有关更多详细信息,请参阅https://developers.google.com/identity/protocols/OAuth2ServiceAccount.)

混合日历必须具有以下应用程序权限:

许可

使用情况

管理用户日历

https://www.googleapis.com/auth/calendar

  • 使用加入详情更新会议文本。

  • 确定用户语言以进行本地化。

管理基本邮件设置

https://www.googleapis.com/auth/gmail.settings.basic
  • 阅读“不在办公室”状态。

在 Control Hub 中,只有具有特权访问权限的管理员可以为混合日历预配置客户的组织。 管理员必须将客户端标识和授权范围从 Control Hub 复制并粘贴到 Google G Suite 域管理控制台的管理 API 客户端访问部分。

该流程包含以下高级步骤:

  1. 使用服务帐户凭证时,该应用程序从 Google 授权服务器获取用户级访问令牌来获取对用户日历的访问权限。

  2. 应用程序使用 Google Calendar API 调用中的访问令牌来获取对日历信息的访问权限。

预配置过程

激活用户以访问日历

在将混合日历成功预配置为注册应用程序后,管理员必须明确激活用户以允许服务访问其各自的 G Suite 日历。

如要成功激活用户以便访问日历,必须满足以下条件:

  • 用户在 Control Hub 中的电子邮件地址必须与其在组织的 Google G Suite 租户中的 Google 日历帐户匹配。

  • 管理员必须验证用户电子邮件地址中的域,或用户需要成功登录 Webex 应用程序来验证其电子邮件地址。

激活用户会通知混合日历,以验证其是否有正确的权限访问 G Suite 中的用户日历。

成功验证是使用混合日历功能的前提条件。 如果服务无法验证用户,会将用户置于错误状态。 该服务强制执行一项策略,仅访问成功激活的用户的日历以便继续处理。

正在进行的操作

混合日历使用Google 日历 REST API 。 此 API 支持对 Google Calendar 进行各种操作。 但是,混合日历仅使用与日历使用案例相关的命令子集。

表 1. 当前由混合日历服务使用的操作

REST API

使用情况

GET calendars/{calendarId}/events

日历活动的列表。

GET calendars/{calendarId}/events/{eventId}/instances

指定的重复活动的实例。

GET /calendars/{calendarId}/events/{eventId}

日历中单个活动的相关信息。

PATCH /calendars/{calendarId}/events/{eventId}

更新日历活动的属性(包括加入信息和扩展属性)。 该操作还用于将会议的状态设置为接受/拒绝/暂时接受。

POST /calendars/{calendarId}/events/quickAdd

创建基于简单文本字符串的活动。

POST /calendars/{calendarId}/events/watch

订阅对用户日历更改的相关通知。

POST /channels/stop

取消订阅对用户日历更改的相关通知。

GET /users/me/settings/{setting}

检索用户的区域设置。

GET /users/{userId}/settings/vacation

获取用户的假期响应者设置。

POST /calendars/{calendarId}/acl

创建访问控制规则。

DELETE /calendars/{calendarId}/acl

删除访问控制规则。

POST /calendars/{calendarId}/events

在日历中创建活动。

DELETE /calendars/{calendarId}/events/{eventId}

从日历中删除活动。

GET /freeBusy

显示指定时间范围内用户的可用性和忙/闲状态。