2012-05-25 45 views
2

我想在LYNC中自动应答任何呼入呼叫。C#在LYNC中自动应答呼叫

使用SDK我可以检测到一个无匹配的调用。如果有人用语音或视频呼叫我,则会调用以下方法。

void AVModalityStateChanged(object sender, ModalityStateChangedEventArgs e) 
{ 
    if (e.NewState == ModalityState.Notified) 
    { 
     // someone is calling me 
    } 
} 

但我现在需要如何回答这个问题。

我的整个的Lync连接类在这里可以查看:http://www.pastebucket.com/2293

这将会在会议室的设置使用它会是很好,如果这是不够的,只是拨打房间和人民在另一结束不必做任何事情。

回答

5

你最好打赌的是订阅一个事件,这个事件会在来电时引发,而不是在状态变化时。这是因为传入事件包含呼叫对象的句柄,您可以使用该句柄来接受呼叫。

看看ConversationManager.ConversationAdded事件。传入的IM和AV对话(包括AV呼叫)会引发此问题。

略微有点棘手把握的是,你收到通知传入对话但它实际上是呼叫要接受。虽然如此,因为Call对象包含在Conversation对象中,这是EventArgs传递的一部分。

让我们假设你只想接受AV呼叫,而不是IM呼叫。所以,你需要做的第一件事是看你刚刚被通知的对话是否实际上是一个AV呼叫。您可以通过使用从事件传递的ConversationManagerEventArgs来查看对话的模式来说明这一点。 e.Conversation.Modalities包含传入会话的所有模式。

假设这是一个AV调用(!并最终回答你原来的问题),你就可以接受与呼叫:

e.Conversation.Modalities[ModalityTypes.AudioVideo].Accept();

希望这有助于。我将很快做一篇关于这方面的博客文章,并提供更详细的内容,所以我会尽量记住在完成后更新这个答案。

编辑:博客文章写得更详细一点,并在这里:http://thoughtstuff.co.uk/2012/06/answering-the-call-accepting-incoming-calls-in-lync-client-sdk/