繁体   English   中英

在Lync中检测来电

[英]Detecting an incoming call in Lync

我正在尝试检测Lync客户端中的传入呼叫。 这是通过在描述订阅的Lync客户端ConversationManager.ConversationAdded事件做这个职位

但是,通过使用此方法,如果在调用者调用之前与调用者的对话窗口已打开,则无法检测传入呼叫。 例如,如果我正在和朋友聊天,因此有一个打开的对话窗口,而这位朋友决定给我打电话,则不会触发ConversationAdded事件。

当我与呼叫者进行了有效对话时,如何检测来电?

谢谢,尼克拉斯

您需要监控对话模式的状态。 两种可用的模式是IM和AV,因此您需要注意这些状态的变化,如下所示:

void ConversationManager_ConversationAdded(object sender, Microsoft.Lync.Model.Conversation.ConversationManagerEventArgs e)
{
    e.Conversation.Modalities[ModalityTypes.InstantMessage].ModalityStateChanged += IMModalityStateChanged;
    e.Conversation.Modalities[ModalityTypes.AudioVideo].ModalityStateChanged += AVModalityStateChanged;
}

void IMModalityStateChanged(object sender, ModalityStateChangedEventArgs e)
{
    if (e.NewState == ModalityState.Connected)
        MessageBox.Show("IM Modality Connected");
}

void AVModalityStateChanged(object sender, ModalityStateChangedEventArgs e)
{
    if (e.NewState == ModalityState.Connected)
        MessageBox.Show("AV Modality Connected");
}

此示例使用ConversationAdded事件来连接事件处理程序以进行模态更改,因此这仅适用于在应用程序运行时启动的对话。 要对应用程序启动前已处于活动状态的会话执行相同操作,可以将此代码添加到应用程序的启动例程中:

foreach (var conv in _lync.ConversationManager.Conversations)
{
    conv.Modalities[ModalityTypes.InstantMessage].ModalityStateChanged += new EventHandler<ModalityStateChangedEventArgs>(IMModalityStateChanged);
    conv.Modalities[ModalityTypes.AudioVideo].ModalityStateChanged += new EventHandler<ModalityStateChangedEventArgs>(AVModalityStateChanged);
}

您应该订阅Conversation.Modalities [ModalityTypes.AudioVideo]上的ModalityStateChanged事件,这将在创建AV模态或更改状态时为您提供事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM