前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感。

  

实际上 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, PresenceUnknown
  • activity 可能的值有:Available, Away, BeRightBack, Busy, DoNotDisturb, InACall, InAConferenceCall, Inactive, InAMeeting, Offline, OffWork, OutOfOffice, PresenceUnknown, Presenting, UrgentInterruptionsOnly

这么多值,分别代表什么意思呢?在Teams里这些状态如下表:

User configured App configured
Available Available
Available, Out of Office. (当用户设置了自动回复功能,Teams就会设置成Out of office状态)
Busy Busy
In a call
In a meeting
On a call, out of office
Do not disturb
Presenting
Focusing. 当用户在我们的日历里设置了focus时间,Teams 就会显示这个状态
Away Away
Away Last Seen time
Be right back
Appear offline Offline. 当用户没有在任何设备登入,几分钟后就会显示这个状态
Status unknown
Out of Office

知道了这些,各位是不是已经在心里有这个统计 app 的想法了?比如可以弄一个 Azure Function,并且使用 timer trigger,每隔几分钟或者几小时,就调用上面的 api,来获取公司里用户的状态,然后保存到数据库中,后面的统计就可以从数据库里 query 了,当然为了统计的效率,可能需要对数据存储做一些优化,比如某个用户的状态如果没有变化,就不重复记录。统计时也可能需要一些复杂的 sql 语句。不过一旦你有了用户在线离线的数据,统计则是水到渠成的事情了。

Teams数据统计 - 用户在线离线状态相关推荐

  1. springboot使用监听器实现用户在线离线状态的监控

    520也依旧勤奋的写着代码,我真是太勤勉了 实现了用户登录的监听器,实时监听session,以此控制数据库中用户的登录状态 本来在监听器上同时加入了@Component@WebListener,随后监 ...

  2. 阿里云物联网批量获取设备的在线离线状态

    一.背景 我们在做物联网的时候,除了控制设备进行一些操作之外.设备的在线离线显示也是很重要的.如果设备离线的话,此时用户操作设备,设备并不会做出反应.对用户而言,操作体验当然是非常不好的. 这边我们可 ...

  3. Teams数据统计 - 聊天消息

    前两篇文章介绍了如何对用户的在线状态和通话记录进行数据统计.这篇文章我们来看看如何统计用户的聊天消息. 在介绍具体 api 如何调用前,我们可以先看一下 Teams 里对于 Message 的层级结构 ...

  4. Teams数据统计 - 通话记录

    上篇文章介绍了如何获取用户的在线状态,这篇文章我们记录介绍如何统计用户通话记录. 首先,Teams为了安全,它要求 app 要有 CallRecords.Read.All 权限.然后就可以通过这个ap ...

  5. html检测用户在线离线,HTML5 --- navigator.onLine 离线检测(示例代码)

    navigator.onLine,是一个属性,返回浏览器的联网状态.主要用于查看你是否连接上了互联网. 在正常联网的情况下会返回true,没有联网即离线的状态下返回false. 一旦浏览器的联网状态发 ...

  6. SessionListener与SessionAttributeListener统计用户在线问题

    最近用户急要一个在线统计用户列表的模块,在网上搜了些例子,大部分都是用SessionListener统计在线人数的,无法得到具体访问的用户列表.尝试了一下用 HttpSessionAttributeL ...

  7. 利用 Redis Bitmap 统计用户在线次数

    场景1:统计用户A在今年以来的上线次数 基础知识: setbit 用于设置某个key某个offset下面比特位的值,只能是0或1 bitcount 用于统计每个key中,比特位被标记为1的个数 如: ...

  8. 【django项目后台开发】数据统计——用户总数统计、日增用户数统计、日活跃用户统计(3)

    一.用户总数统计 1.后端接⼝设计 请求⽅式: GET /statistics/total_count/ 请求参数: 通过请求头传递jwt token数据. 返回数据: JSON { "co ...

  9. 有事您Q我,qq在线离线状态

    是腾讯的互动代码.是一种服务,免费的. 你可以到http://is.qq.com/webpresence/code.shtml腾讯互动状态代码按照提示生成你需要的代码.然后添加到网页代码或支持的博客中 ...

最新文章

  1. golang json 获取所有key_Golang —— JSON 大法
  2. 《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize...
  3. java jar 和 war 包的区别
  4. Oracle的rownum原理和使用
  5. rtsp交互命令简介及过程参数描述
  6. 实现基于darknet框架实现CTPN版本自然场景文字检测 与CNN+CTCOCR文字识别的ChineseOCR搭建
  7. 外设驱动库开发笔记15:DHT11温湿度传感器驱动
  8. Java编程:树(实际应用)
  9. loj#6433. 「PKUSC2018」最大前缀和(状压dp)
  10. iOS中的armv6、armv7、armv7s含义详解
  11. PDF转CAD格式步骤再简单
  12. 【HTML】Html页面跳转的5种方式
  13. LLVM LLD PE 格式分析 (COFF)
  14. 把计算机网络关闭啦怎么打开,网络发现已关闭怎么办?Win7系统启用/关闭网络发现方法(图文)...
  15. 算法刷题【洛谷P1359】租用游艇(最短路径Floyd算法和Dijkstra算法模板题)
  16. 转载-高仙机器人落地北京杭州深圳多个城市地铁
  17. PCL安装与配置(Windows10+VS2017 )
  18. 北方工业大学计算机考研资料汇总
  19. 信息学奥赛 python 教程_Python在信息学竞赛中的运用及Python的基本用法(详解)
  20. MMX和SSE的运用

热门文章

  1. 操作系统:分享10个经常用的cmd命令
  2. 幽默:程序员背后的心酸日常,你懂多少?
  3. 程序员的二十句励志名言,看看你最喜欢哪句?
  4. C语言补丁原理,C语言可变长參数实现原理
  5. 事业单位考试题库计算机网络,2015年事业单位计算机基础知识试题及答案
  6. apache 配置文件内使用 8080 端口_【SpringBoot 框架】- SpringBoot 配置文件
  7. 进程相关概念、C程序的空间分配
  8. linxu其他用户登录mysql_Linux系统的MySQL用户如何开启远程登录权限
  9. Vue 3.2 发布了,那尤雨溪是怎么发布 Vue.js 的?
  10. 年度总结文章的抽奖结果公布