2012-03-03 2 views
1

RTC에서 프로필 로밍에 문제가 있습니다. 그래서 그것을 더 잘 이해할 수있는 프로그램을 설명하겠습니다.RTC를 사용하여 서버의 프로필을 비활성화 하시겠습니까?

나는 Sip 프로토콜을 사용하여 SIP 프로토콜에 Soft-Phone 기반을 작성합니다. RTC 라이브러리를 사용하여 통신을 결정했습니다. 이 소프트 폰은 홀드, 리다이렉트, 응답, 끊어짐 등의 기능을 완벽하게 수행합니다. RTC에는 C# 및 Interop.RTCCORELib dll을 사용합니다. 너무 많은 시간 (별표, 별표 창 및 Elestisk) 같은 PBX 서버의 모든 유형이 전화를 사용하여 나는 내 소프트 폰에서 신비한 문제에 직면했다.

문제점 : 운영자 로그인 및 전화를 사용하여 난 서버에이 정보를 등록 IRTCProfile2 Propety를 생성한다. 운영자는 전화로 그의/그녀의 작품을 마친 후, 전화를 끊습니다. 이 순간 나는 서버에서 프로필을 비활성화하는 방법을 실행합니다. 프로필을 확인하고 프로필 상태가 "등록되지 않음"으로 변경되었습니다. 그러나 sip 사용자는 여전히 서버에 로그인합니다. 나는 msdn을 확인하고 이것을 article으로 찾는다.

이 기사에서는 서버에서 프로필을 비활성화하는 방법에 대해 설명합니다. 나는 이것을 똑같이한다. 여기에 내 코드가있다 :

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

예, 실제로 DisablePresence() 전화가있는 IRTCClientPresence2을 놓친 것 같습니다.

docs에서;

IRTCClientPresence2 인터페이스는 IRTCClientPresence 인터페이스에서 파생됩니다. 클라이언트에 존재하는 개체에 대한 로밍 및 그룹화 기능을 추가합니다. 이 인터페이스는 IRTCClientPresence 인터페이스에서 QueryInterface를 호출하여 가져올 수 있습니다.

편집 : 당신은 즉시 (즉, 추가 할 때와 DisablePresence)하지만, the documentation for ShutDown() 상태를 DisableProfile를 호출 한 후) RTCClient :: 종료를 (전화하는거야;

는 SIP 정상적으로, 클라이언트가 종료를 호출하기 전에 비동기 방식 PrepareForShutdown를 호출해야 등록 및 탈퇴 당직자로부터의 등록을 취소 할 수있는 기회를 쌓아 줄 수 있습니다.

+0

@Rev '_rtcProvisioning.DisableProfile (_rtcProfile);'에 대한 실제 호출이 완료 되었습니까? –

+0

@Rev COM Interop를 수행 한 이후로 내 배열 매핑이 꺼져있어 오랜 시간이 걸렸지 만, Count [0]가 0보다 큰 경우 Profiles [0]가 아닌 [0]이 아닌 상태를 확인하기위한 올바른 요소입니다. –

+0

첫 번째 예,이 줄 이후에 cuz'_rtcProfile state'가 변경됩니다. 둘째 : 그렇게 생각합니다. profiles [1]은 if 조건에서만 사용하고'_rtcProfile'은 서버에 등록 된 동일한 객체이며이 객체는 disable 메소드로갑니다. – Rev

관련 문제