2013-08-29 22 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つのエンドポイントにしかアクセスできません。

なぜそれが起こっているのですか?私がオフにする必要があるグローバルなプライバシー設定がありますか?

どのようにしてすべてのエンドポイントにいつアクセスできますか?

ありがとうございます。

PS:結果セット内の各連絡先を個別にロードしようとしましたが、同じ動作が発生しました。

答えて

1

回答:

必要な連絡先情報がLyncクライアントによって要求されるまで、サブスクリプションが遅れているように、あなたが見ている行動は、Lyncクライアントへのプレゼンスサブスクリプションの最適化によるものです。写真はこの最適化の例です。別の例はContactEndpointsです。 MSDNドキュメントの「Lync 2013の移行ドキュメント」ページContact presence subscription changes sectionをご覧ください。 具体的には、すべてのContactEndpointが必要な連絡先に対して、独自のContactSubscriptionを作成して維持する必要があります。

3

Lync SDK 2010ですべてのユーザーの状態を取得するプログラムを作成しようとしたときに同様の問題が発生しました。すべてのユーザーを選択し、その状態(オンライン/オフラインなど)を読み取りました。しかし、それはクライアントの連絡先のリストにあった連絡先だけでうまくいきます。理由はわかりませんが、解決策は見つけられません。ちょっと後で、私はUCMA 4(アプリケーションエンドポイント)を使用しましたが、リストはADから受信しましたが、現在のステータスしか取得できませんでした。

ADによる検索を使用することは理にかなっていますか?ユーザーIDで電話番号を検索しますか?その場合は、DirectorySearcherにこのフィルタを使用してください。

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

P.S.あなたはどんなsdkを使っていますか?マイクロソフトのサポートから

+0

私はこの1つを使用しています: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クライアントユーザーであっても連絡先情報に依存しているという問題があります。当社のソリューションでは、このような何かをやっている:

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

は、私は現在のLyncユーザーの連絡先が常に適切に満たされることを期待します。そうでない場合は、コードで例外がスローされるか、少なくともnullまたは空の文字列が返されると思います。 代わりに、先頭に "sip:"というプレフィックスを付けずに連絡先のsip-uriを返すことがあります。奇妙なことに、これは必ずしも再現可能ではありません。上記のコードでは、(アクティブディレクトリに基づいて)プライマリ電子メールアドレスが正しく返されます。ほとんどの場合、上記のように動作することがあります。

関連する問題