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

本文关键字:配置文件 服务器 RTC 使用 | 更新日期: 2023-09-27 18:26:26

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

我编写了基于sip协议的软电话,为了使用sip,我决定使用RTC库进行通信。这款软手机完美地实现了这些功能,如保持、重定向、应答、挂断等。我使用C#和Interop.RTCCORELib dll作为RTC。经过太多时间使用这个电话与任何类型的PBX服务器,如(星号,星号窗口和Elestisk),我在我的软电话面临神秘的问题。

问题:当操作员登录并使用电话时,我创建IRTCProfile2 Propety在服务器上注册此配置文件。话务员用手机完成工作后,话务员关闭手机。此时此刻,我运行方法来禁用服务器上的配置文件。我检查了配置文件,配置文件状态更改为"未注册"但是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();
        }
    }

本文还说调用IRTCClientPresence2.DisablePresence方法。

那么有什么解决方案吗?有什么建议吗?我错过什么了吗?

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

是的,我认为您错过了具有实际DisablePresence()调用的IRClientPresence2。

来自文档;

IRTCClientPresence2接口源自于界面它增加了漫游和分组功能对象。此接口可通过调用IRTCClientPresence接口上的QueryInterface。

编辑:您还在调用DisableProfile(以及添加后的DisablePresence)后立即调用RTCClient::Shutdown(),Shutdown的文档中指出;

让SIP堆栈有机会从注册者和取消订阅的观察者,客户端应致电异步方法PrepareForShutdown,然后调用Shutdown。