Использование RTC для отключения профиля на сервере? - PullRequest
0 голосов
/ 03 марта 2012

У меня проблема с профилем роуминга в RTC.поэтому позвольте мне описать мою программу, чтобы лучше ее понять.

Я пишу базу Soft-Phone по протоколу sip, для использования Sip я решаю использовать библиотеку RTC для связи.Этот Soft-Phone прекрасно выполняет такие функции, как удержание, перенаправление, ответ, зависание и т. Д. Я использую C # и Interop.RTCCORELib dll для RTC.после слишком долгого времени использования этого телефона с любым типом АТС-сервера, таким как (звездочка, звездочка и 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 метода.

Итак, какое решение?какие-нибудь советы?я что-то пропустил?

1 Ответ

1 голос
/ 03 марта 2012

Да, я думаю, что вы пропустили IRTCClientPresence2 с действительным вызовом DisablePresence () .

Из документов;

Интерфейс IRTCClientPresence2 происходит от IRTCClientPresence интерфейс. Он добавляет возможности роуминга и группировки для присутствия объекты для клиента. Этот интерфейс можно получить, позвонив QueryInterface в интерфейсе IRTCClientPresence.

Редактировать: Вы также вызываете RTCClient :: Shutdown () сразу после вызова DisableProfile (и DisablePresence, когда он добавлен), документация для ShutDown () заявляет, хотя;

Чтобы дать стеку SIP шанс изящно отменить регистрацию в Регистраторы и отписавшиеся Наблюдатели, Клиент должен позвонить асинхронный метод PrepareForShutdown перед вызовом Shutdown.

...