2013-08-29 2 views
5

Lync를 기반으로하는 회사 디렉터리의 사용자 지정 UI에서 작업하고 있습니다. 발견 접촉이있는 경우Lync - ContactEndpoints와 일치하지 않는 동작

var cit = ContactInformationType.ContactEndpoints; 
var endpoints = contact.GetContactInformation(cit) as List<object>; 

문제

: 내가 전화 번호를 표시하기 위해 자신의 엔드 포인트에 액세스하려고 일치 연락처 각각에 대해

Container.Instance.Lync.ContactManager.BeginSearch(SearchQuery, 
      SearchProviders.GlobalAddressList, 
      SearchFields.AllFields, 
      SearchOptions.IncludeContactsWithoutSipOrTelUri, 
      500, 
      ContactsAndGroupsCallback, SearchQuery); 

: Lync 2013 사용 나는이 검색을 Lync를 연결하기 위해 사용하는 계정의 연락처 목록, 전체 세부 정보 (5 개의 끝점)에 액세스 할 수 있습니다. 그러나 연락처 목록에 없으면 단 하나의 엔드 포인트 만 액세스 할 수 있습니다.

그런 아이디어가있는 이유는 무엇입니까? 내가 꺼야 할 글로벌 개인 정보 보호 설정이 있습니까?

항상 모든 엔드 포인트에 액세스 할 수 있습니까?

감사합니다.

추신 : 결과 집합에 각 연락처를로드하려고 시도했지만 여전히 동일한 동작을합니다.

답변

1

답변 :

필요한 연락처 정보은 Lync 클라이언트에 의해 요구 될 때까지 가입이 지연되도록 당신이보고있는 행동은 Lync 클라이언트에 존재 가입 최적화 때문이다. 이 최적화를위한 사진은 사진입니다. 또 다른 예는 ContactEndpoints입니다. MSDN 문서의 Lync 2013 용 마이그레이션 설명서 페이지 Contact presence subscription changes section을 살펴보십시오. 특히 모든 ContactEndpoint가 필요한 연락처에 대해 자신의 ContactSubscription을 만들고 유지 관리해야합니다.

3

Lync SDK 2010에서 모든 사용자의 상태를 얻기 위해 프로그램을 작성하는 중 비슷한 문제가 발생했습니다. 모든 사용자를 선택하고 상태 (온라인/오프라인 등)를 읽었습니다. 그러나 그것은 클라이언트 연락처 목록에있는 연락처와 만 잘 작동합니다. 이유는 모르겠지만 해결책은 없습니다. 조금 후에 UCMA 4 (응용 프로그램 끝점 사용)를 사용합니다. AD에서받은 목록 만 현재 상태를 얻을 수 있습니다.

아마 AD로 검색을 사용하는 것이 맞습니까? 사용자 모금으로 전화 번호를 찾으십니까? 그렇다면 DirectorySearcher에이 필터를 사용해보십시오.

searcher.Filter = "(&(objectClass=user)(msRTCSIP-PrimaryUserAddress=*))"; //put sip instead of * 

P.S. 무슨 SDK를 사용하고 있습니까? Microsoft 지원에서

+0

저는 이것을 사용하고 있습니다 : http://www.microsoft.com/en-us/download/details.aspx?id=36824 – Maxim

+0

정말 AD 검색을 시도합니다.이 방법은 해결책은 아니지만 도움이 될 수 있습니다. : 연락처 세부 정보에 액세스 할 수없는 연락처 목록에없는 깨진 연락처를 찾은 다음 Lync 클라이언트에서 검색을 실행하십시오 (검색 결과에 있어야 함). 결과 : SDK를 통해 연락처를 사용할 수 있습니다. – Tahiaji

0

나는 동일한 문제에 직면 해있다. 명시 적으로

Microsoft.Lync.Controls을 GetContactInformation 함수를 호출하기 전에 그 사람의 ContactCard로드 시도 할 수 있습니다. ContactCard objContactCard = new Microsoft.Lync.Controls.ContactCard(); objContactCard.Source = objContact. GetContactInformation (ContactInformationType.이메일 주소);

  ContactSubscription _contactSubscription = lyncObj.ContactManager.CreateSubscription(); 

       _contactSubscription.AddContact(foundContact); 

       _contactSubscription.Subscribe(ContactSubscriptionRefreshRate.High, _ContactInformationList); 

그러나 여전히 정보 (전화 번호)를 받고 일부 지연를 얻을 수 있습니다. Thread.Sleep을 선택하거나 을 다시 시도 할 수 있습니다.. 희망이 도움이됩니다.

0

문제는 lync 클라이언트 사용자에 대해서도 연락처 정보에 의존하는 것이 문제입니다. 우리의 솔루션에서는 다음과 같은 작업을 수행하고 있습니다.

현재 lync 사용자 연락처가 항상 올바르게 채워질 것으로 예상됩니다. 그렇지 않은 경우 코드에서 예외가 발생하거나 적어도 null 또는 빈 문자열이 반환 될 것으로 예상됩니다. 대신 "sip :"접두어가없는 연락처의 sip-uri를 반환합니다. 이상하게도 이것이 항상 재생산되는 것은 아닙니다. 위의 코드는 (활성 디렉토리에 따라) 기본 전자 메일 주소를 올바르게 반환하는 경우가 대부분이며, 때로는 위에서 언급 한 것처럼 동작합니다.

관련 문제