检测会话是传入还是传出

时间:2018-08-17 13:17:24

标签: c# lync skypedeveloper lync-2013 lync-client-sdk

我使用Lync SDK 2013并尝试检查是否有新的对话传入或传出。我不想只检查音频/视频通话,我想检查每种方式类型。

private void Conversation_Added(object sender, ConversationManagerEventArgs e)
{
    Conversation conversation = e.Conversation;
    IDictionary<ModalityTypes, Modality> modalities = conversation.Modalities;
    bool conversationIsIncoming = modalities.Any(modality => modality.Value.State == ModalityState.Notified);
}

当事件被触发并涉及Any方法时,我会收到此错误

  

NullReferenceException 对象引用未设置为对象的实例。   System.Collections.Generic.KeyValuePair.Value.get   返回null。

因此,显然我必须在此处使用null检查,但也许整个代码可能是错误的?如何检查对话是传入还是传出?

1 个答案:

答案 0 :(得分:1)

您的想法基本上是正确的,但是当您检查通知的状态时是错误的。

您需要挂钩ModalityStateChanged事件,并且如果您只想了解音频/视频“呼叫”,则也只需挂钩具有AudioVideo方式类型的对话。

例如

1400 -> N 
3    -> no of denominations 
500 
1000 
2000

Output: 1500 2

当您不再需要了解状态更改时,别忘了从ModalityStateChanged上摘机。