Microsoft图形 API使应用程序能够跨多个会话管理用户状态,确保准确且动态的可用性更新。
状态会话
用户可以有多个状态会话,因为用户可以位于多个 Teams 客户端上, (桌面、移动和 Web) 。 每个 Teams 客户端都有一个独立的状态会话,并且用户的状态是来自所有后面的会话的聚合状态。
同样,应用程序可以为用户提供自己的状态会话,并能够更新状态。
以下优先级用于会话状态的聚合方式,“A > B”表示 A 优先于 B:
- 用户首选状态 > 会话级别状态 (用户首选状态替代会话级别状态)
- 在会话级别状态中:DoNotDisturb > Busy > Available > Away
注意: 当 Microsoft Graph 中的用户状态发生更改时,由于 Teams 客户端使用轮询模式,因此更新状态需要几分钟时间。
状态排列
| Teams 状态 | 图形可用性/活动 |
|---|---|
| 可用 | available/available |
| 可用,外出 | available / outOfOffice |
| 忙碌 | busy/busy |
| 在通话中 | busy / inACall |
| In a meeting - 在会议中 | busy / inAMeeting |
| 在通话中,外出 | busy / inACall + OOF |
| 请勿打扰 | doNotDisturb / doNotDisturb |
| 提出 | doNotDisturb / presenting |
| 離開 | away / away |
| 马上回来 | beRightBack / beRightBack |
| 脱机显示 | offline / offWork |
| Out of office - 外出 | outOfOffice |
注意
setPresence 方法不支持直接设置“外出 (OOF) ”或“在会议中”状态。 这些状态根据日历事件和邮箱配置自动管理,尝试通过 setPresence 方法设置它们不起作用。
若要反映 “外出” ,请使用 事件 API ,方法是将日历事件的 showAs 属性设置为 oof,或使用 mailboxSettings 配置用户的自动恢复设置。
“正在会议中”状态在安排的日历会议事件期间自动反映,不需要手动更新状态。
超时、过期和保持活动状态
状态会话可能会超时并过期,因此应用程序需要在超时前调用状态:setPresence API,以维护会话的状态;或在过期之前,使会话保持活动状态。
如果可用性为 Available 且超时为 5 分钟,则状态会话可能会超时。 超时时,存在状态将分阶段淡出。 例如,如果应用程序将状态会话设置为 Available/Available,则状态将更改为 Available/AvailableInactive 5 分钟后,第一个超时,然后在 Away/Away 5 分钟内更改为第二个超时。
使用 expirationDuration 配置状态会话的过期时间;否则,默认过期时间为 5 分钟。 有效值范围为 5 分钟到 4 小时,之后会话变为 Offline。
用于跨租户状态可见性和交互的受信任域
在 Teams 管理中心配置 外部访问权限 ,以便只有预期的合作伙伴组织才能 查看用户的状态并对其采取行动 。 在 Teams 管理中心 (用户 > 外部访问) ,允许所有域或将特定域添加到“会议”下的 “允许 ”列表 ,并与受信任的Microsoft 365 组织聊天。 这些受信任组织中的用户能够查看用户状态。 跨租户状态需要 相互信任,并且合作伙伴还必须允许你的域。 不受信任 (或被阻止) 无法看到状态或无法启动状态驱动的交互的域。 有关详细信息,请参阅 指定受信任的Microsoft 365 组织。