Teams数据统计 - 用户在线离线状态

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

TeamsStatistics TeamsStatistics TeamsStatistics

 

 

 

实际上 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 configuredApp configured
AvailableAvailable
Available, Out of Office. (当用户设置了自动回复功能,Teams就会设置成Out of office状态)
BusyBusy
In a call
In a meeting
On a call, out of office
Do not disturb
Presenting
Focusing. 当用户在我们的日历里设置了focus时间,Teams 就会显示这个状态
AwayAway
Away Last Seen time
Be right back
Appear offlineOffline. 当用户没有在任何设备登入,几分钟后就会显示这个状态
Status unknown
Out of Office

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付

传统友商ERP的交付过程 一、先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行所谓…

Teams数据统计 - 通话记录

上篇文章介绍了如何获取用户的在线状态,这篇文章我们记录介绍如何统计用户通话记录。 首先,Teams为了安全,它要求 app 要有 CallRecords.Read.All 权限。然后就可以通过这个api来获取 call record。 GET /communications/callRecords/{id}这…

解决JS浮点数(小数)计算加减乘除的BUG

2019独角兽企业重金招聘Python工程师标准>>> //浮点数减法运算function FloatSub(arg1,arg2){var r1,r2,m,n;try{r1arg1.toString().split(".")[1].length}catch(e){r10}try{r2arg2.toString().split(".")[1].length}catch(e){r20}mMath.pow(10…

Teams App 如何使用设备的能力

我们以前讲到过,Teams有很多中可以扩展的方面,其中有一种是Tab,开发者可以开发一个web page/app,然后以tab的方式嵌入到teams里面。 除了基本的功能,这种tab也可以使用teams客户端设备所带的一些能力,比如…

实验室3

实验3.1 1 #include<stdio.h>2 int main()3 { long int sum,i;4 sum0;5 for(i22;i<1003;i20){6 sumsumi;7 }8 printf("sum%ld",sum);9 return 0; 10 } 11 1 #include<stdio.h>2 int main()3 { 4 long int…

Teams App自定义

当我们开发的 app 被企业安装后&#xff0c;有些企业挺希望能做一些自定义&#xff0c;如果把app的图标改的更加符合企业风格一点&#xff0c;或者把app的名字改成让本企业员工更容易理解一些&#xff0c;或者把app界面的主题色改成个企业风格更加搭配一些&#xff0c;或者对于…

实验四:xl命令的常见子命令以及操作

实验名称&#xff1a; xl命令的常见子命令以及操作 实验环境&#xff1a; 这里我们需要正常安装一台虚拟机&#xff0c;如下图&#xff1a; 我们这里以一台busybox为例&#xff0c;来进行这些简单的常见的操作&#xff1b; 实验要求&#xff1a; 这里我们准备了5个常见操作&…

Teams App 扫描二维码

上篇文章我们讲了如何在app的manifest里设置设备的权限&#xff0c;这篇文章我们来实际操作开发一个可以扫描二维码的teams app。 首先&#xff0c;我们先到app studio里&#xff0c;创建一个teams app&#xff0c;然后创建tab&#xff0c;重要的一点是&#xff0c;我们确保ma…

关于我的知识星球服务

2019独角兽企业重金招聘Python工程师标准>>> 今天刚开通了我的知识星球-攻城师在路上&#xff0c;欢迎大家加入&#xff0c;目前前50名按最低费用收费50元一年&#xff0c;后面会根据人数情况调整。 希望通过这么一个圈子&#xff0c;让大家信息资源共享&#xff0c…

mysql8用户管理

查看当前登录用户&#xff1a; 创建用户&#xff1a; create user 用户名主机地址 identified with mysql_native_password by 密码; 修改密码&#xff1a; alter user 用户名主机地址 identified with mysql_native_password by 新密码; 原因是&#xff1a;在mysql 5.7.9版本以…

Teams App设备的地理位置能力

我们上一篇文章讲了如何在Teams app里扫描二维码&#xff0c;这篇文章我们来看一下如何获取当前设备的地理位置&#xff0c;并且在地图上显示地理位置。 首先&#xff0c;我们先到app studio里&#xff0c;创建一个teams app&#xff0c;然后创建tab&#xff0c;并且确保我们勾…

Teams App如何选择用户

当我们在开发app的时候&#xff0c;很多时候需要选择一个用户&#xff0c;比如我们开发一个审批的app&#xff0c;就要选择审批人&#xff0c;所以这个app就需要实现选择人的界面&#xff0c;而且需要获取完整的用户列表&#xff0c;但是要获取完整的用户列表又需要app拥有较高…

Python终端如何输出彩色字体

Python终端如何输出彩色字体 Python终端如何输出彩色字体 实现过程&#xff1a;终端的字符颜色是用转义序列控制的&#xff0c;是文本模式下的系统显示功能&#xff0c;和具体的语言无关。转义序列是以ESC开头,即用\033来完成&#xff08;ESC的ASCII码用十进制表示是27&#xf…

关于Elemet-ui组件Cascader中proper的配置问题

最近做一个地区的二级联动用上了Cascader组件&#xff0c;但是我的城市数据结构跟他 options的默认的结构不太一样&#xff1b; 默认的结构如下&#xff1a; 我的数据结构是&#xff1a; 先说我的解决办法&#xff1a; 一看我的数据结构跟他默认的数据结构不对劲&#xff0c;我…

将Teams app升级到net6

net6 发布已经有一个多月了&#xff0c;因为我的LuckyDraw app是使用Azure app service&#xff0c;当时我查了一下app service还没有ready&#xff0c;昨天我又查看了一下&#xff0c;发现app service已经默认装了net6。 那就是时候升级我的LuckyDraw了&#xff0c;如果大家的…

作为程序猿,一定要知道的电脑快捷键和Eclipse快捷键

2019独角兽企业重金招聘Python工程师标准>>> 转载自&#xff1a;Java资源社区 1. F2 当你选中一个文件的话&#xff0c;这意味着“重命名”2. F5 刷新3. CTRLF5 强行刷新4. F12另存为5. Alt &#xff0b;F4 关闭程序6. Home首行7. Ctrl Home游标移动到文字编辑的开…

QCustomplot(一) 能做什么事

阅读目录 一、QCustomPlot简介二、效果预览三、源码下载四、相关文章回到顶部一、QCustomPlot简介 之前在Qt之自绘制饼图这篇文章的说明中我简单的描述了下目前依赖于qt的第三方绘图库&#xff0c;此后我会针对自己使用QCustomPlot的情况做一总结&#xff0c;以方便大家参考 QC…

shiro(一)简介、理论知识

2019独角兽企业重金招聘Python工程师标准>>> 开涛学shiro&#xff1a;http://jinnianshilongnian.iteye.com/blog/2018398 shirospirngmvc参考: https://www.cnblogs.com/sharpest/p/5865732.html http://peirenlei.iteye.com/blog/2086639 https://blog.csdn.net/c…

Teams 的 Meeting App

Teams 的 Meeting App 已经正式推出了一段时间&#xff0c;相应的文档也已经较为完善了&#xff0c;我接下来会写一系列的文章&#xff0c;来介绍如何开发一个自己的Meeting app。这篇文章作为这个系列的第一篇&#xff0c;将介绍 meeting app 是如何被使用的&#xff0c;有哪些…