2013-08-29 8 views
5

Tôi đang làm việc trên giao diện người dùng tùy chỉnh cho thư mục của công ty dựa trên Lync. Sử dụng Lync 2013 tôi thực hiện tìm kiếm này:Lync - hành vi không nhất quán với ContactEndpoints

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

Đối với mỗi phù hợp với địa chỉ liên lạc tôi cố gắng truy cập vào các điểm cuối của họ để hiển thị số điện thoại:

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

Vấn đề

Nếu tiếp xúc tìm thấy là trong danh sách liên hệ của tài khoản tôi đang sử dụng để kết nối Lync, sau đó tôi có quyền truy cập vào chi tiết đầy đủ (5 điểm cuối). Tuy nhiên, nếu anh ta không có trong danh sách liên lạc, tôi có quyền truy cập vào chỉ 1 điểm cuối.

Mọi ý tưởng tại sao nó lại diễn ra như vậy? Có cài đặt bảo mật toàn cầu mà tôi cần phải tắt hay gì đó không?

Làm cách nào để tôi có thể truy cập tất cả các điểm cuối mọi lúc?

Cảm ơn bạn.

PS: Tôi đã cố gắng tải từng liên hệ trong tập kết quả riêng lẻ và vẫn nhận được cùng một hành vi.

Trả lời

1

trả lời từ hỗ trợ của Microsoft:

Các hành vi bạn đang nhìn thấy là do thuê bao hiện diện tối ưu hóa cho khách hàng Lync để đăng ký sẽ được trì hoãn cho đến khi thông tin liên lạc cần thiết theo yêu cầu của khách hàng Lync. Ảnh là một ví dụ cho việc tối ưu hóa này. Một ví dụ khác là ContactEndpoints. Vui lòng xem Contact presence subscription changes section của tài liệu Di chuyển cho Lync 2013 trong tài liệu MSDN. Cụ thể, bạn phải tạo và duy trì ContactSubscription của riêng bạn cho các liên hệ mà bạn cần tất cả các ContactEndpoints.

3

Tôi gặp phải sự cố tương tự khi cố gắng viết chương trình để lấy trạng thái của tất cả người dùng trên Lync SDK 2010. Chọn tất cả người dùng và đọc trạng thái của nó (trực tuyến/ngoại tuyến, v.v.). Nhưng nó hoạt động tốt với chỉ những địa chỉ liên hệ có trong danh sách địa chỉ liên hệ khách hàng. Tôi không biết tại sao, nhưng các giải pháp không được tìm thấy. Ít lâu sau, tôi sử dụng UCMA 4 (với điểm cuối ứng dụng), mặc dù danh sách nhận được từ AD và chỉ có thể nhận trạng thái hiện tại.

Có thể có ý nghĩa khi sử dụng tìm kiếm theo AD? Tìm số điện thoại của người dùng nhâm nhi? Nếu vậy, hãy thử sử dụng bộ lọc này cho DirectorySearcher:

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

P.S. bạn đang sử dụng sdk nào?

+0

Tôi đang sử dụng cái này: http://www.microsoft.com/en-us/download/details.aspx?id=36824 – Maxim

+0

thực sự cố gắng tìm kiếm trên AD) Đây không phải là giải pháp, nhưng có thể trợ giúp : thử tìm một số liên lạc bị hỏng (không có trong danh sách liên lạc của bạn, nơi bạn không thể truy cập vào chi tiết đầy đủ), và sau đó chạy tìm kiếm trong ứng dụng khách Lync (nó phải nằm trong kết quả tìm kiếm). Kết quả: liên hệ có sẵn để sử dụng thông qua SDK – Tahiaji

0

Tôi đang đối mặt với cùng một vấn đề. Bạn có thể thử tải của người contactcard trước khi gọi các GetContactInformation chức năng rõ ràng

Microsoft.Lync.Controls. Thẻ liên hệ objContactCard = new Microsoft.Lync.Controls.ContactCard(); objContactCard.Source = objContact. GetContactInformation (ContactInformationType).EmailAddresses);

  ContactSubscription _contactSubscription = lyncObj.ContactManager.CreateSubscription(); 

       _contactSubscription.AddContact(foundContact); 

       _contactSubscription.Subscribe(ContactSubscriptionRefreshRate.High, _ContactInformationList); 

Tuy nhiên, bạn vẫn có thể nhận được một số chậm trễ trong việc có được thông tin (số điện thoại). Bạn có thể chọn sử dụng Chủ đề.Sleep hoặc có thể chỉ muốn thử lại. Hy vọng điều này sẽ hữu ích.

0

Vấn đề là dựa vào thông tin liên hệ ngay cả đối với người dùng ứng dụng khách đồng bộ hóa. Trong giải pháp của chúng tôi, chúng tôi đang thực hiện một việc như sau:

Contact user = LyncClient.GetClient().Self.Contact; 
string email = user.GetContactInformation(ContactInformationType.PrimaryEmailAddress) as string; 

Tôi hy vọng rằng liên hệ người dùng lync hiện tại luôn được điền đúng. Và nếu nó không được, tôi mong đợi mã để ném một ngoại lệ hoặc ít nhất là trả lại null hoặc một chuỗi rỗng. Thay vào đó đôi khi nó trả về sip-uri của liên hệ mà không có tiền tố "sip:" hàng đầu. Điều kỳ lạ là điều này không phải lúc nào cũng có thể tái tạo: Hầu hết thời gian mã ở trên trả về địa chỉ email chính (theo thư mục hoạt động) một cách chính xác, đôi khi nó hoạt động như đã đề cập ở trên.