audio - Lync 2013 SDK-当 “Join meeting audio from”设置设置为 “Do not join audio”时,加入 session 并连接AVModality

标签 audio lync skype-for-business lync-client-sdk conference

我是Lync 2013 SDK的新手(现在已经使用了几周),并且能够弄清除此以外的大部分东西……

当我加入 session 时(使用ConversationManager.JoinConference()),它可以正常加入。但是,在某些情况下(不是全部),我想在 session 上连接AVModality。有时它可以工作,有时它只是位于“正在连接”中而从未建立连接(即使我称之为EndConnect)。

我发现的是Skype的“选项”->“Skype session ”->“加入电话 session ”部分中的设置,似乎覆盖了我的代码。也许是比赛条件?

当设置为“不加入音频”和“在加入 session 之前,请问我要使用哪个音频设备”时,未选中(意味着加入时没有提示): session 加入,AVModality变为断开->连接->断开连接。然后,我的代码触发了BeginConnect,AVModality变为断开连接->连接-并没有解决(有时我会听到快速忙音的声音)。

当“在我加入 session 之前,请问我要使用哪种音频设备”被选中(意味着我得到提示): session 加入后,提示询问如何连接,如果我选择Skype for business-它可以正常连接音频(预期)。有趣的是,如果我使用Lync UI挂断电话(AVModality转到“已断开连接”),则它将立即再次重新连接(假设我的BeginConnect这样做了)。

这是真正令人费解的地方:
如果状态为ModalityStateChanged事件处理程序中的AVmodality处于连接状态时,如果我调用BeginConnect,则会发生以下情况:
session 加入,提示询问我如何连接(此时AVmodality状态为“正在连接”,直到对提示做出决定为止)-这意味着我的BeginConnect将触发。然后,如果在提示中选择“不加入音频”,则AVModality状态变为“正在连接->断开连接->正在连接->正在加入->已连接”。所以-我的BeginConnect已经在进行中,并且只要在选择“不加入音频”之前触发,它在这种情况下仍然可以工作。

因此,我想知道“不加入音频”选项(无论有无提示)是否实际上设置了一些其他属性,以防止AVModality在此之后连接而又不进行其他设置?如果是这样-我想知道我需要执行的其他练习曲:)

感谢您提供的所有帮助!

最佳答案

归结于此... session 加入是否确实加入了音频-我已经处理了除一种情况以外的所有方案,但我仍然无法弄清:
1.我需要加入 session 音频,但用户选择不加入音频(在提示符下或从Skype选项设置中)。

在这种情况下-我向模态状态更改事件添加了一个事件处理程序,并且当NewState == Disconnected时,我在模态本身上触发了BeginConnect。这很好。在回调中,我有EndConnect调用。但是-AVModality状态继续保持在“正在连接”状态,并且从不解析为已连接。在用户界面上-它显示了音频按钮,但所有按钮均变灰(连接时就像正常一样)。我不确定如何使其完成连接?

这是一段代码:

    if (merge)
            {
                myHandler = delegate (object sender1, ModalityStateChangedEventArgs e1)
                {
                    AVModality avModality = (AVModality)sender1;
                    Globals.ThisAddIn.confConvo = avModality.Conversation;
                    if (e1.NewState == ModalityState.Connected)
                    {                            
                        DialNumberInSkype(meetingInfo);
                        avModality.ModalityStateChanged -= myHandler;
                    }
                    if (e1.NewState == ModalityState.Disconnected)
                    {
                        object[] asyncState = { avModality, "CONNECT" };
                        avModality.BeginConnect((ar) =>
                        {
                            avModality.EndConnect(ar);
                            DialNumberInSkype(meetingInfo);
                        }, asyncState);
                        avModality.ModalityStateChanged -= myHandler;
                    }
                };
            }

编辑:
由于某种原因,我现在无法添加评论...

我尝试按照您的建议设置端点。但是,我收到ArgumentException错误“值不在预期范围内。”因此,我尝试将CreateContactEndpoint中的uri值硬编码为“sip:my_login@domain.com”(当然,实际值除外)-并得到了相同的ArgumentException错误。我在此之前添加了一个断点,并且能够看到avModality.Endpoint的值-实际上,它一直都设置为我...在尝试调用BeginConnect时,它不是null或未设置。

关于audio - Lync 2013 SDK-当 “Join meeting audio from”设置设置为 “Do not join audio”时,加入 session 并连接AVModality,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39134694/

相关文章:

c# - 在 C# 中访问 Lync/Skype for Business 对话

ios - 如何在 iOS Swift 中更改音频的 BPM(每分钟节拍数)?

android - 如何通过声音推送云消息?

php - 仅播放6秒的base64编码音乐文件

lync - 哪个 Lync SDK?从托管代码发送 IM

python - 以编程方式获取 Skype for Business 状态

winapi - 0db 声级的默认值作为绝对浮点值

c# - 不允许来电 Lync Api 或禁用来电声音

c# - 如何从 lync 客户端 2013 通信中检索 IM 消息

mysql - 通过 Skype for Business 发送消息