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第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行所谓…

HDU 4747 Mex

4747 思路: 线段树 先求出mex(1,1), mex(1, 2) , mex(1,3),...,mex(1,n)(单调上升),先将这些mex放进线段树里求和 然后再求出next[i]表示下一次出现a[i] 的位置 然后从前…

Teams数据统计 - 通话记录

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

linux下mysql的数据库简单备份脚本

应用于整个库的备份。 #!/bin/bash PATH$PATH:/usr/local/mysql/bin:/usr/local/mysql/sbin # 数据库名称 databases(myname) # 备份目录 basepath/home/databak/ cd $basepath if [ ! -d "$basepath" ]; thenmkdir -p "$basepath" fi#遍历数据库名称 for …

解决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数据统计 - 聊天消息

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

vis.js

1、官网&#xff1a;http://visjs.org/docs/network/ 2、示例&#xff1a; <!doctype html>  <html>     <head>     <title>vis.js</title>     <script type"text/javascript" src"vis.js"></scri…

暑期实习面试——艾锝科技,Python实习生

远程笔试过&#xff0c;拒绝现场面转载于:https://www.cnblogs.com/qinziang/p/9123339.html

Teams App 如何使用设备的能力

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

实验室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…

写出整洁的高效的js代码

Variables:变量 使用有意义的可发音的变量名 Bad: var yyyymmdstr moment().format(YYYY/MM/DD);Good: var yearMonthDay moment().format(YYYY/MM/DD);使用可搜索的命名 在开发过程中&#xff0c;我们阅读代码的时间会远远超过编写代码的时间&#xff0c;因此保证代码的可读…

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;并且确保我们勾…

第4章 变量、作用域和内存问题

JavaScript高级程序设计第四章知识点梳理 1、基本类型值和引用类型值 基本类型值包括&#xff1a;Boolean、String、undefined、Number、Null 引用类型值&#xff1a;Object 注意&#xff1a;ECMAScript中所有函数的参数都是按值传递的。 2、延长作用域链 当执行流进入下列任何…

Teams App如何选择用户

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