2

我想在 LYNC 中自动接听任何来电。

使用 SDK,我可以检测到来电。如果有人通过语音或视频呼叫我,则会调用以下方法。

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

但我现在需要有关如何接听电话的帮助。

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

这将用于会议室环境中,如果只拨电话就足够了,另一端的人不必做任何事情,那就太好了。

4

1 回答 1

5

你最好的选择是订阅一个在来电时引发的事件,而不是状态变化。这是因为传入事件包含调用对象的句柄,然后您可以使用它来接受调用。

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

要掌握的稍微棘手的一点是,您会收到有关传入对话的通知,但它实际上是您想要接受的呼叫。不过没关系,因为 Call 对象包含在 Conversation 对象中,该对象是传递的 EventArgs 的一部分。

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

假设这是一个 AV 电话(并最终回答您的原始问题!),然后您可以通过以下方式接听电话:

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

希望这可以帮助。我很快就会写一篇关于这个的博客文章,并提供更多细节,所以我会尽量记住在完成后更新这个答案。

edit: Blog post written with a bit more detail, and is here: http://thoughtstuff.co.uk/2012/06/answering-the-call-accepting-incoming-calls-in-lync-client-sdk/

于 2012-05-31T10:28:27.233 回答