当社のソリューションは、当社のソフトウェアに入ってくるメッセージを Lync 経由でユーザーに中継します。ユーザーが Lync で対応できない場合、ユーザーが Lync で再び「対応可能」になると、配信のためにメッセージをキューに入れます。すべての連絡先 (112) への ContactInformationType.Availability に基づいてサブスクリプションを作成し、連絡先の空き状況が変更されたときに発生する contact.ContactInformationChanged イベントのイベントハンドラーを接続しました。
サブスクライブするための私のコードは次のようになります。
/// <summary>
/// Subscribes to contacts.
/// </summary>
/// <param name="group">List of Lync contacts.</param>
void SubscribeToContacts(List<Contact> contacts)
{
Console.WriteLine("Total Contacts: " + contacts.Count.ToString());
foreach (var contact in contacts)
contact.ContactInformationChanged += new EventHandler<ContactInformationChangedEventArgs>(Contact_ContactInformationChanged);
contactSubscription = contactManager.CreateSubscription();
//Choose the types of presence changes to listen for
var contactInformationTypes = new List<ContactInformationType>() { ContactInformationType.Availability };
contactSubscription.Subscribe(ContactSubscriptionRefreshRate.High, contactInformationTypes);
//contactSubscription.AddContacts(contacts);
foreach (var item in contacts)
{
Console.WriteLine(item.Uri);
contactSubscription.AddContact(item);
Console.WriteLine(item.GetContactInformation(ContactInformationType.Availability).ToString());
}
}
私が直面している問題は、ユーザーがリストの連絡先ではない場合、または検索に参加したことがない場合、そのユーザーのプレゼンス ステータスは常に「なし」または (0) であるため、ユーザーはオンラインである可能性がありますが、 Lync で利用可能であることを「見る」ことができます。私はこれがうまくいくはずだと言っているオンラインの場所をいくつか見ましたが、私もそれを手に入れることができないようです. また、そのタイプのユーザーの contact.ContactInformationChanged イベントも発生していないようです。
Office 365 経由で Lync SDK と Online Service を使用していることをお伝えしておきます。
私は今、私が持っているようにうまくいくはずだと思う何かのために、これにあまりにも長い間苦労してきました。ご意見やご提案をいただければ幸いです。
トロイ