C#自动应答LYNC中的呼叫

时间:2012-05-25 14:56:23

标签: c# lync

我想自动回答LYNC的任何接听电话。

使用SDK我可以检测到进入的呼叫。如果任何人通过语音或视频呼叫我,则会调用以下方法。

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

但我现在需要帮助解决这个问题。

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

这将用于会议室设置,如果它足以只是拨打房间而另一端的人不必做任何事情就会很好。

1 个答案:

答案 0 :(得分: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/