5

Lync に基づく会社のディレクトリのカスタム UI に取り組んでいます。Lync 2013 を使用して、次の検索を実行します。

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

一致する連絡先ごとに、エンドポイントにアクセスして電話番号を表示しようとします。

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

問題

Lync への接続に使用しているアカウントの連絡先リストに連絡先が見つかった場合は、完全な詳細 (5 つのエンドポイント) にアクセスできます。ただし、彼が連絡先リストにない場合、1 つのエンドポイントにしかアクセスできません。

なぜそのようなことが起こっているのですか?無効にする必要があるグローバルなプライバシー設定はありますか?

いつでもすべてのエンドポイントにアクセスするにはどうすればよいですか?

ありがとうございました。

PS: 結果セット内の各連絡先を個別にロードしようとしましたが、それでも同じ動作が得られます。

4

4 に答える 4

3

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

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

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

PSどのSDKを使用していますか?

于 2013-09-04T13:20:57.693 に答える
1

Microsoft サポートからの回答:

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

于 2013-09-19T18:07:36.113 に答える
0

問題は、lync クライアント ユーザーであっても連絡先情報に依存していることです。私たちのソリューションでは、次のようなことをしています。

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

現在の lync ユーザーの連絡先が常に適切に入力されていることを期待します。そうでない場合は、コードが例外をスローするか、少なくとも null または空の文字列を返すことを期待します。代わりに、先頭の「sip:」プレフィックスなしで連絡先の sip-uri を返すことがあります。奇妙なことに、これは常に再現できるとは限りません。ほとんどの場合、上記のコードは (Active Directory に従って) プライマリ メール アドレスを正しく返しますが、上記のように動作することもあります。

于 2015-02-20T10:26:43.310 に答える
0

私は同じ問題に直面しています。GetContactInformation関数を明示的に呼び出す前に、その人のContactCardの読み込みを試すことができます

Microsoft.Lync.Controls. ContactCard 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);

ただし、情報 (電話番号) の取得に多少の遅れが生じる場合があります。Thread.Sleepを使用するか、単に再試行するかを選択できます。お役に立てれば。

于 2014-02-22T17:07:31.143 に答える