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