如何监听Skype for Business通话接听事件以触发Windows Form应用
问题解答
是的,存在可直接监听的Skype for Business通话接听事件,你可以通过官方的Lync Client SDK实现需求,具体实现方案如下:
核心实现逻辑
Skype for Business的通话接听动作会触发音频模块的状态变更事件,你只需要按以下步骤监听即可:
- 首先在项目中引入Lync Client SDK的核心程序集
Microsoft.Lync.Model.dll - 调用
LyncClient.GetClient()获取当前已登录的Skype for Business客户端实例 - 为客户端的会话管理器注册
ConversationManager.ConversationAdded事件,监听新发起的通话会话 - 对每个新生成的会话,先判断是否为音频/视频通话类型,之后为该会话的音频模块注册
ModalityStateChanged事件 - 当事件回调中音频模块的状态变更为
ModalityState.Connected时,即代表通话已经被接听,此时即可执行你自定义的业务逻辑
核心代码示例
// 获取Lync客户端实例 LyncClient client = LyncClient.GetClient(); // 注册新会话监听事件 client.ConversationManager.ConversationAdded += ConversationManager_ConversationAdded; private void ConversationManager_ConversationAdded(object sender, ConversationManagerEventArgs e) { // 获取会话的音频模块 AVModality avModality = e.Conversation.Modalities[ModalityTypes.AudioVideo] as AVModality; if (avModality != null) { // 注册音频模块状态变更事件 avModality.ModalityStateChanged += AvModality_ModalityStateChanged; } } private void AvModality_ModalityStateChanged(object sender, ModalityStateChangedEventArgs e) { // 判断状态是否为已连接(即通话被接听) if (e.NewState == ModalityState.Connected) { // 此处写入你需要执行的自定义逻辑 } }
注意事项
- 运行程序的设备必须提前安装Skype for Business客户端,且客户端处于已登录状态,SDK才能正常获取实例
- 建议项目使用.NET Framework 4.5及以上版本,匹配对应版本的Lync Client SDK避免兼容性问题
- 64位系统下注意项目编译平台和SDK版本的架构匹配,避免出现加载程序集失败的问题
内容的提问来源于stack exchange,提问作者PoornachnadraRao Pillarisetti
相关产品推荐
相关产品推荐

