Teams数据统计 - 通话记录
上篇文章介绍了如何获取用户的在线状态,这篇文章我们记录介绍如何统计用户通话记录。
首先,Teams为了安全,它要求 app 要有 CallRecords.Read.All
权限。然后就可以通过这个api来获取 call record。
GET /communications/callRecords/{id}
这个接口会返回类似如下的数据:
{"@odata.context": "https://graph.microsoft.com/beta/$metadata#communications/callRecords/$entity","version": 1,"type": "groupCall","modalities": ["audio"],"lastModifiedDateTime": "2020-12-25T19:00:24.582757Z","startDateTime": "2020-12-25T18:52:21.321Z","endDateTime": "2020-12-25T19:52:46.123Z","id": "e523d2ed-1111-4b6b-925b-754a88034cc5","organizer": {"user": {"id": "821809f5-0000-0000-0000-3b5136c0e777","displayName": "Abbie Wilkins","tenantId": "dc368399-474c-4d40-900c-6265431fd81f"}},"participants": [{"user": {"id": "821809f5-0000-0000-0000-3b5136c0e777","displayName": "Abbie Wilkins","tenantId": "dc368399-474c-4d40-900c-6265431fd81f"}},...]
}
可以看到,我们能通过 organizer
和 participants
来找到参与这个通过的参与人,我们可以记录下用户的 user id,同时我们还可以通过 startDateTime
和 endDateTime
来取得这次 call 的开始和结束时间。
实际上 Teams 里的 call record 比我们想象的复杂很多,一个call里可能有多个 session 组成,我们用一张官方的数据模型图看一下。
我们可以给上面这个 api 加上参数来获取 session。
GET https://graph.microsoft.com/beta/communications/callRecords/{id}?$expand=sessions
{"@odata.context": "https://graph.microsoft.com/beta/$metadata#communications/callRecords(sessions(segments()))/$entity","startDateTime": "2020-02-25T18:52:21.2169889Z","endDateTime": "2020-02-25T18:52:46.7640013Z","organizer": { ... },"participants": [ ... ],"sessions": [{"modalities": ["audio"],"startDateTime": "2020-02-25T18:52:21.2169889Z","endDateTime": "2020-02-25T18:52:46.7640013Z","id": "e523d2ed-2966-4b6b-925b-754a88034cc5","caller": {"@odata.type": "#microsoft.graph.callRecords.participantEndpoint","userAgent": {"@odata.type": "#microsoft.graph.callRecords.clientUserAgent","headerValue": "RTCC/7.0.0.0 UCWA/7.0.0.0 AndroidLync/6.25.0.27 (SM-G930U Android 8.0.0)","platform": "android","productFamily": "skypeForBusiness"},"identity": {"@odata.type": "#microsoft.graph.identitySet","user": {"id": "821809f5-0000-0000-0000-3b5136c0e777","displayName": "Abbie Wilkins","tenantId": "dc368399-474c-4d40-900c-6265431fd81f"}}},"callee": {"@odata.type": "#microsoft.graph.callRecords.participantEndpoint","userAgent": {"@odata.type": "#microsoft.graph.callRecords.clientUserAgent","headerValue": "UCCAPI/16.0.12527.20122 OC/16.0.12527.20194 (Skype for Business)","platform": "windows","productFamily": "skypeForBusiness"},"identity": {"user": {"id": "f69e2c00-0000-0000-0000-185e5f5f5d8a","displayName": "Owen Franklin","tenantId": "dc368399-474c-4d40-900c-6265431fd81f"}},"feedback": {"rating": "poor","tokens": {"NoSound": false,"OtherNoSound": false,"Echo": false,"Noisy": true,"LowVolume": false,"Stopped": false,"DistortedSound": false,"Interruptions": false}}}}]
}
从上面返回的json可以看到,session里有 startDateTime
和 endDateTime
。还有 caller
和 callee
,我们用这些数据来进行进一步的深入统计,而且可以看到里面还有每个用户参与这个通话是使用的设备(userAgent.platform
),更有意思的是,这里面还有 feedback
,里面有这个用户这次通话中音质是好还是差,有没有噪音等等。有了这些信息,相信大家脑海里已经有了大量的可以统计的点了。
各位看到这里,可能会问,上面的接口是获取某一次 call record 的,那我如何获取所有的记录呢?
这里就需要用到 graph api 的订阅功能。
POST https://graph.microsoft.com/beta/subscriptions
{"changeType": "created","notificationUrl": "https://<<your api url>>","resource": "/communications/callRecords","expirationDateTime":"2016-11-20T18:23:45.9356913Z","clientState": "secretClientValue","latestSupportedTlsVersion": "v1_2"
}
上面的 resource
是 /communications/callRecords
,表明如果有任何一个call发生,graph api会回调我们的接口。上面的 "notificationUrl": "https://<<your api url>>"
是你的服务的回调 url,我们可以在这个接口里得到相应的 call record id,并且记录下来,等一段时间call 结束后,就可以获取整个call的信息了。
Teams数据统计 - 通话记录相关推荐
- Teams数据统计 - 聊天消息
前两篇文章介绍了如何对用户的在线状态和通话记录进行数据统计.这篇文章我们来看看如何统计用户的聊天消息. 在介绍具体 api 如何调用前,我们可以先看一下 Teams 里对于 Message 的层级结构 ...
- Teams数据统计 - 用户在线离线状态
前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感. 实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可 ...
- 循环、格式化输出、数据统计
主要内容: for循环 while循环 格式化输出(2) 数据统计及记录 ############################################################# 1 ...
- 学术前沿趋势分析_学习_论文数据统计Task1
论文数据统计学习记录 任务说明 分析说明 1. 获得方法:**==使用python 爬虫爬取数据集==** 2. 这里**==使用正则化加以限制==** 3. 判断数据是否存在 4. json文件的设 ...
- 大数据项目(二)————某电信公司通话记录改造
1.项目介绍 某互联网公司面向APP应用开发者提供的,以品牌互推.流量互导.广告分账为主的一站式服务平台. 将通话记录数据由原来的oracle系统改造成使用大数据架构解决方案.主要使用hbase做通话 ...
- 离线分析:Flume+Kafka+HBase+Hadoop通话数据统计
文章目录 项目背景 项目架构 系统环境 系统配置 框架安装 JDK Hadoop Zookeeper Kafka Flume HBase 项目实现 项目结构 表设计 HBase Mysql 功能编写 ...
- 多条记录取最近日期的一条_Excel VBA:基于员工打卡记录的考勤数据统计
微信公众号:金融数学 使用VBA做一个基于员工打卡记录的考勤数据分析工具; 1应用场景 某公司通过门禁系统记录了每位员工上下班打卡时间,现在需要对一段特定时间内员工出勤情况进行统计分析,包含加班时间( ...
- dataframe记录数_大数据系列之Spark SQL、DataFrame和RDD数据统计与可视化
Spark大数据分析中涉及到RDD.Data Frame和SparkSQL的操作,本文简要介绍三种方式在数据统计中的算子使用. 1.在IPython Notebook运行Python Spark程序 ...
- 城市智慧路灯综合管理平台、图监控、灯箱实时监控、策略管理、故障报警、灯具管理、数据统计、故障分析、开关灯记录分析、区域管理、分组管理、DIV+CSS布局设计、HTML/Bootstrp/jQuery
源码类别: 后台模板 文件大小: 21.5 MB 源码内容:城市智慧路灯综合管理平台后台模板 前端技术: HTML/CSS/Bootstrap/jQuery 模板语言: 简体中文 ...
最新文章
- mybatis 大于小于转义_10 HTML5特性、转义字符和注释
- 怎么获取codeforces的数据_原创 | codeforces 1417C,逆向思考的数据结构题
- linux动态库文件.so为什么有多个版本号?(多个名字)(小版本升级)
- C#内存泄露与资源释放 经验总结
- 你的目的是什么是谁指使你_电视剧《谁说我结不了婚》第25-27集剧情:魏书帮程璐搞定投资人...
- html图片自动切换的幻灯片效果的,js带点自动图片轮播幻灯片特效代码分享
- php cii订单导出,使用 kingcms.php 建立一个留言本【附模型代码】
- SpringBoot 一个依赖搞定 session 共享,没有比这更简单的方案了!
- 阿里云存储负责人吴结生:我经历的三个重大决策
- 【路径规划】基于matlab粒子群算法机器人栅格路径规划【含Matlab源码 018期】
- 内容管理系统CMS学习总结
- 阿里云运行python_使用阿里云运行python
- 罗技鼠标驱动怎么下载?
- 1988-2020年各省、分城乡基尼系数、基尼系数计算及相关经典文献、1978-2019年中国省市恩格尔系数表、泰尔指数计算模板、208个地级市和31个省、市城乡泰尔指数
- IV 估计:工具变量不外生时也可以用!
- NanoHTTPD 获取请求ip
- abd串口工具使用教程_adb调试工具包(adb调试程序)
- transition参数css,css3的transition属性详解
- 电脑开两个及以上微信
- 如何设置跨网段共享打印机?