Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用RTC禁用服务器上的配置文件?_C#_Voip_Sip - Fatal编程技术网

C# 使用RTC禁用服务器上的配置文件?

C# 使用RTC禁用服务器上的配置文件?,c#,voip,sip,C#,Voip,Sip,我在RTC中有配置文件漫游问题。因此,让我描述一下我的程序,以便更好地理解它 我编写了基于sip协议的软电话,为了使用sip,我决定使用RTC库进行通信。这部软电话可以完美地实现这些功能,如保持、重定向、应答、挂断等。我使用C#和Interop.RTCCORELib dll来实现RTC。在与任何类型的PBX服务器(如asterisk、asterisk windows和Elestisk)一起使用了太多时间后,我在我的软电话中面临着神秘的问题 问题: 当操作员登录并使用电话时,我会创建IRTCPro

我在RTC中有配置文件漫游问题。因此,让我描述一下我的程序,以便更好地理解它

我编写了基于sip协议的软电话,为了使用sip,我决定使用RTC库进行通信。这部软电话可以完美地实现这些功能,如保持、重定向、应答、挂断等。我使用C#和
Interop.RTCCORELib dll
来实现RTC。在与任何类型的PBX服务器(如asterisk、asterisk windows和Elestisk)一起使用了太多时间后,我在我的软电话中面临着神秘的问题

问题: 当操作员登录并使用电话时,我会创建
IRTCProfile2属性
在服务器上注册此配置文件。操作员使用手机完成工作后,请关闭手机。此时,我运行方法来禁用服务器上的配置文件。我检查了配置文件,配置文件状态变为“未注册”但sip用户仍在服务器上登录。我查了一下msdn,找到了这个

本文介绍如何在服务器上禁用配置文件。我也这么做。这是我的密码:

  public void unregisterProfile()
    {
        if (_rtcProvisioning.Profiles.Count > 0 && 
           ((IRTCProfile)_rtcProvisioning.Profiles[1]).State == RTC_REGISTRATION_STATE.RTCRS_REGISTERED)
        {
            _rtcProvisioning.DisableProfile(_rtcProfile);
            _rtcPresence.DisablePresence();
            _rtcClient.PrepareForShutdown();
            Thread.Sleep(2000);
            _rtcClient.Shutdown();
        }
    }
在本文中,还要说call
irtcclientpresence 2.DisablePresence
方法

有什么解决办法吗?有什么建议吗?我错过什么了吗

是的,我想你错过了真正的电话

从文件中

IRTCClientPresence 2接口源自IRTCClientPresence 接口。它增加了漫游和分组功能以显示状态 对象到客户端。此接口可以通过调用 IRTCClientPresence接口上的QueryInterface

编辑:在调用DisableProfile(以及添加DisablePresence时的DisablePresence)之后,您还将立即调用RTCClient::Shutdown(),不过:

给SIP堆栈一个从中优雅地注销的机会 注册者和退订观察者,客户应致电 调用Shutdown之前的异步方法PrepareForShutdown


@Rev您确定实际调用
\u rtcProvisioning.DisableProfile(\u rtcProfile)完成了吗?@Rev我已经有一段时间没有进行COM互操作了,所以我的数组映射可能已关闭,但是如果计数大于0,配置文件[1]是否真的是检查状态的正确元素,而不是配置文件[0]?首先是,因为在这一行之后,配置文件状态发生了变化,第二:我认为是这样。配置文件[1]仅在条件下使用,并且
\u rtcProfile
是服务器上注册的同一对象,此对象用于禁用方法。@Rev在答案中添加了一些额外的信息。@Rev不确定您取消投票的原因,但未对PrepareForShutton信息没有帮助的原因进行注释。它完全解决了你所说的问题。