东莞网站建设品牌公司,网络推广商城,某大学网络设计方案,网站建设进度表模板前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计#xff0c;看上去很有大数据感。 实际上 Teams 也具备的类似的能力#xff0c;只是它把这个能力开放给了开发人员#xff0c;我们可以通过强大的 Graph API#xff0c;获取大量的数据信息看上去很有大数据感。 实际上 Teams 也具备的类似的能力只是它把这个能力开放给了开发人员我们可以通过强大的 Graph API获取大量的数据信息当然为了保证数据安全你的app必须获得 tenant 管理员的同意。
我接下来的几篇文章就集中介绍一下如何获取这些信息有兴趣的开发者可以轻松使用这些 api 来提供用户的数据统计功能。
我们这篇文章先来介绍一下用户在线离线状态 presence。
获取某一个用户的状态
GET /users/{id}/presence获取多个用户的状态
POST /communications/getPresencesByUserIdRequest body:
{ids: [fa8bf3dc-eca7-46b7-bad1-db199b62afc3, 66825e03-7ef5-42da-9069-724602c31f6b, ... ]
}这两个 api 都需要一个权限 Presence.Read.All。下面是api的返回内容
{value: [{id: fa8bf3dc-eca7-46b7-bad1-db199b62afc3,availability: Busy,activity: InAMeeting},{id: 66825e03-7ef5-42da-9069-724602c31f6b,availability: Away,activity: Away}]
}可以看到 teams 把用户的状态做的很细有两个字段 availability 和 activity。
availability 可能的值有Available, AvailableIdle, Away, BeRightBack, Busy, BusyIdle, DoNotDisturb, Offline, PresenceUnknownactivity 可能的值有Available, Away, BeRightBack, Busy, DoNotDisturb, InACall, InAConferenceCall, Inactive, InAMeeting, Offline, OffWork, OutOfOffice, PresenceUnknown, Presenting, UrgentInterruptionsOnly
这么多值分别代表什么意思呢在Teams里这些状态如下表
User configuredApp configuredAvailableAvailableAvailable, Out of Office. (当用户设置了自动回复功能Teams就会设置成Out of office状态)BusyBusyIn a callIn a meetingOn a call, out of officeDo not disturbPresentingFocusing. 当用户在我们的日历里设置了focus时间Teams 就会显示这个状态AwayAwayAway Last Seen timeBe right backAppear offlineOffline. 当用户没有在任何设备登入几分钟后就会显示这个状态Status unknownOut of Office
知道了这些各位是不是已经在心里有这个统计 app 的想法了比如可以弄一个 Azure Function并且使用 timer trigger每隔几分钟或者几小时就调用上面的 api来获取公司里用户的状态然后保存到数据库中后面的统计就可以从数据库里 query 了当然为了统计的效率可能需要对数据存储做一些优化比如某个用户的状态如果没有变化就不重复记录。统计时也可能需要一些复杂的 sql 语句。不过一旦你有了用户在线离线的数据统计则是水到渠成的事情了。