events - 如何收听 Skype for Business 通话事件
问题描述
我需要通知后端服务器有关 Skype for Business 呼叫事件的信息。调用后端不是问题,但监听调用事件是。我考虑过观看和解析Skype日志文件,但日志文件中似乎没有通话信息......无论如何这将是一个丑陋的解决方案。
是否有可能以某种方式监听 SfB 呼叫事件并触发自定义操作?我知道有各种 SfB SDK,但它们似乎都没有提供监听这些事件的方法......
我希望能够做这样的事情(伪代码,我真的不在乎使用什么语言,但更喜欢 JavaScript):
skype.onCallIncoming(callInfo => {
console.log(callInfo.user + ' is calling');
// my custom action
});
skype.onCallAccepted(callInfo => {
console.log('The call was accepted');
// my custom action
});
skype.onCallEnded(callInfo => {
console.log('The call was ended');
// my custom action
});
解决方案
SfB 不提供您可以在任何SDK 中使用的任何实时“通话事件”。
对于实时“通话”,您可以做的最好的事情(不费吹灰之力)是订阅用户状态并取消“通话中”(电话中)活动令牌忙状态(不能保证此状态是正确的)。这样做的问题是您不能真正为每个人获得“所有”呼叫事件,因为您只能订阅您知道的端点。使用大规模订阅也存在问题。这可以通过大多数用于 Skype 的 SDK 包括UCWA来完成。
另一种选择是使用CDR数据库,尽管这不适用于“实时”呼叫,并且需要为站点启用 CDR 数据库。启用后,您可以再次使用 SQL 查询数据库来获取历史呼叫数据。
如果您确实需要大规模呼叫监控,那么唯一的选择是创建一个在 FE 机器上运行并将“sip”消息转换为呼叫事件的SIP 代理应用程序。这是很多工作,看起来很简单,但很快就会变得非常困难。这将为您提供“实时”呼叫事件,但需要很长时间才能正确处理,并且您必须对 SIP 有深入的了解。
如果您只谈论本地 Skype 桌面客户端调用(仅限 Windows 客户端),则可以使用客户端 SDK连接到本地客户端,并且可以通过这种方式跟踪呼叫事件。
推荐阅读
- linux - 如何使 shell 脚本递归扫描目录并根据名称模式将某些文件添加到 Git?
- php - 使用 hasmanythrough 忽略 Laravel 连接属性
- android - 如何使这个布尔变量从 False 变为 True?
- javascript - nodejs:遍历目录并为每个文件捕获 SHA256 值
- google-data-studio - Google Data Studio 是否可以从 Google Drive 文件夹中获取数据?
- javascript - 将值从 Js 发送到 PHP
- javascript - 有哪些选项可用于从表格中绘制图形?(不使用任何绘图库)
- python - 用 Python 用 Selenium 选择一个孩子
- python - 在 Python 中求解一阶和二阶微分方程组
- python - 如何在具有不同索引级别的熊猫中合并多索引?