C# 在 LYNC 中自动接听电话

Posted

技术标签:

【中文标题】C# 在 LYNC 中自动接听电话【英文标题】:C# Automatically answer calls in LYNC 【发布时间】:2012-05-25 14:56:23 【问题描述】:

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

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

void AVModalityStateChanged(object sender, ModalityStateChangedEventArgs e)

    if (e.NewState == ModalityState.Notified)
    
        // someone is calling me
    

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

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

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

【问题讨论】:

【参考方案1】:

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

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

有点棘手的是,您会收到有关传入 Conversation 的通知,但它实际上是您想要接受的 Call。不过没关系,因为 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/

【讨论】:

以上是关于C# 在 LYNC 中自动接听电话的主要内容,如果未能解决你的问题,请参考以下文章

Lync 项目经验-43-Lync 电话效果不比传统座机差(项目!项目!项目!)

为啥对方接听电话后会自动播放音频?

从 UCMA 应用程序中的电话号码检索 Lync 联系人

如何在 Flutter App 中接听电话?

Twilio 应用程序 - 更新通话资源结束通话

如何知道被叫方是不是接听了电话(他拿起电话时的电话状态是啥)