首页 > 解决方案 > 如何收听 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
});

标签: eventsoffice365ms-officeskypeskype-for-business

解决方案


SfB 不提供您可以在任何SDK 中使用的任何实时“通话事件”。

对于实时“通话”,您可以做的最好的事情(不费吹灰之力)是订阅用户状态并取消“通话中”(电话中)活动令牌忙状态(不能保证此状态是正确的)。这样做的问题是您不能真正为每个人获得“所有”呼叫事件,因为您只能订阅您知道的端点。使用大规模订阅也存在问题。这可以通过大多数用于 Skype 的 SDK 包括UCWA来完成。

另一种选择是使用CDR数据库,尽管这不适用于“实时”呼叫,并且需要为站点启用 CDR 数据库。启用后,您可以再次使用 SQL 查询数据库来获取历史呼叫数据。

如果您确实需要大规模呼叫监控,那么唯一的选择是创建一个在 FE 机器上运行并将“sip”消息转换为呼叫事件的SIP 代理应用程序。这是很多工作,看起来很简单,但很快就会变得非常困难。这将为您提供“实时”呼叫事件,但需要很长时间才能正确处理,并且您必须对 SIP 有深入的了解。

如果您只谈论本地 Skype 桌面客户端调用(仅限 Windows 客户端),则可以使用客户端 SDK连接到本地客户端,并且可以通过这种方式跟踪呼叫事件。


推荐阅读