gpt4 book ai didi

c# - 在 Lync 中检测来电

转载 作者:太空狗 更新时间:2023-10-29 21:02:31 27 4
gpt4 key购买 nike

我正在尝试检测 Lync 客户端中的传入调用。这是通过订阅 Lync 客户端中的 ConversationManager.ConversationAdded 事件来完成的,如 this post 中所述。

但是,通过使用此方法,如果在调用者调用之前与调用者的对话窗口已经打开,我将无法检测到来电。例如,如果我正在与 friend 聊天,因此有一个打开的对话窗口,而这个 friend 决定给我打电话,则不会触发 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);
}

关于c# - 在 Lync 中检测来电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207549/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com