私は小さなアプリケーションを作成しました。これにより、連絡先の 1 人の可用性が変更されたときに更新することができます。現在、私はこれを記録するだけです。
ここで素晴らしいリソースを見つけました: https://rcosic.wordpress.com/2011/11/17/availability-presence-in-lync-client/
基本的に次のことをアドバイスします。
//Register to a contact
Contact contactByUri = _lyncClient.ContactManager.GetContactByUri(user.UserUri);
contactByUri.ContactInformationChanged += new EventHandler(Self_ContactInformationChanged);
void Self_ContactInformationChanged(object sender, ContactInformationChangedEventArgs e)
{
Contact self = sender as Contact;
// has user changed his availability (therefore, his presence status)?
if (e.ChangedContactInformation.Contains(ContactInformationType.Availability))
{
ContactAvailability availability = (ContactAvailability)self.GetContactInformation(ContactInformationType.Availability);
string activity = (string)self.GetContactInformation(ContactInformationType.Activity);
OnAvailabilityChanged(availability, activity);
}
}
Availability は次のいずれかです。
Invalid (-1),
None (0) – Do not use this enumerator. This flag indicates that the cotact state is unspecified.,
Free (3500) – A flag indicating that the contact is available,
FreeIdle (5000) – Contact is free but inactive,
Busy (6500) – A flag indicating that the contact is busy and inactive,
BusyIdle (7500) – Contact is busy but inactive,
DoNotDisturb (9500) – A flag indicating that the contact does not want to be disturbed,
TemporarilyAway (12500) – A flag indicating that the contact is temporarily away,
Away (15500) – A flag indicating that the contact is away,
Offline (18500) – A flag indicating that the contact is signed out.
ほとんどの場合、すべて正常に動作していますが、ある日はContactAvailability
=を受け取りNone
ます。
理由を知りたいのですが、この問題を解決するためにできることがあれば教えてください (クライアント SDK のリセットなど)。