(LyncSDK get contact state)
先日から使い始めたLyncSDKほとんど、使い込んでないですが、とりあえずやりたかったコンタクトの状態取得が出来ました。
思ったよりSDKのI/Fがわかりやすく調べなくてもメンバ情報をみてればわかるレベルになっています。
実装
LyncClient client = LyncClient.GetClient();
Contact contact = client.ContactManager.GetContactByUri("ninomiya@sample.com");
IDictionary<ContactInformationType, object> info = contact.GetContactInformation(
new ContactInformationType[]
{
//表示名
ContactInformationType.DisplayName,
//状態
ContactInformationType.Activity,
//コメント(ノート)
ContactInformationType.DefaultNote,
//メールアドレス
ContactInformationType.PrimaryEmailAddress,
//離席時間
ContactInformationType.IdleStartTime,
});
//コンタクトの状態変更イベントを登録
contact.ContactInformationChanged += (sender, arg) =>
{
//コンタクトの状態が変わった場合に呼ばれるイベント
//senderには、変更のあったコンタクト(Microsoft.Lync.Model.Contact)が入っています
};
GetContactInformationの関数に取得を行いたい項目を渡してその結果が返ってきます。
戻りは、Dictionaryですが取得できなかった項目はキーに含まれなので、Dictionaryから取得時にキーが含まれているかの確認は必要です。
※↑のスクショでは、IdleStartTimeが結果に含まれていません。
ContactInformationTypeはMSDNに一覧があります。
ContactInformationType Enumeration (Microsoft.Lync.Model)
定数名 |
翻訳 |
Availability |
連絡先のアベイラビリティ。連絡先情報項目の値型はAvailabilityType列挙です。 |
ActivityId |
現在の連絡先の活動を説明するトークン。連絡先情報項目の値の型はStringです。 |
LocationName |
連絡先の場所の名前。連絡先情報項目の値の型はStringです。 |
TimeZone |
タイムゾーン。連絡先情報項目の値の型はStringです。 |
TimeZoneBias |
タイムゾーンバイアス。連絡先の情報項目の値の型はint32です。 |
MeetingSubject |
対象の会議。連絡先情報項目の値の型はStringです。 |
MeetingLocation |
場所を満たします。連絡先情報項目の値の型はStringです。 |
Activity |
(たとえば、電話機の、会議中、または使用可能な)連絡先の現在の活動。連絡先情報項目の値の型はStringです。 |
CustomActivity |
カスタマイズされたアクティビティの文字列。連絡先情報項目の値の型はStringです。 |
IdleStartTime |
接触がアイドルになった時。連絡先の情報項目の値の型はDateTime型です。 DateTime値は、UTC値として返されます。あなたはDateTime.ToLocalTime()を呼び出すことによって、ローカル時間に変換する必要があります。 |
DisplayName |
連絡先の表示名。連絡先情報項目の値の型はStringです。 |
InstantMessageAddresses |
連絡先のインスタント·メッセージング·アドレスの集合。連絡先の情報項目の値の型は文字列の配列です。 |
PrimaryEmailAddress |
プライマリ電子メールアドレス。連絡先情報項目の値の型はStringです。 |
EmailAddresses |
連絡先の電子メールアドレスの収集は、最初の要素は、プライマリ電子メールアドレスです。連絡先の情報項目の値の型は文字列の配列です。 |
Title |
連絡先のタイトル。連絡先情報項目の値の型はStringです。 |
Company |
連絡先の会社。連絡先情報項目の値の型はStringです。 |
Department |
連絡先の部署。連絡先情報項目の値の型はStringです。 |
Office |
連絡先のオフィスの場所。連絡先情報項目の値の型はStringです。 |
HomePageUrl |
連絡先のホームページのURL |
Photo |
連絡先の写真。情報項目の値の型がStreamオブジェクトで連絡してください。 |
DefaultNote |
他のノートが設定されていない場合は表示されるデフォルトのノート、。連絡先情報項目の値の型はStringです。 |
DefaultNoteType |
デフォルトのノート型(例えば、個人的または不在)。連絡先の情報項目の値型はDefaultNoteTypeの列挙です。 |
PersonalNote |
個人的なメモ。連絡先情報項目の値の型はStringです。 |
OutOfficeNote |
不在時のメモ。連絡先情報項目の値の型はStringです。 |
SourceNetwork |
連絡先ソースネットワーク。連絡先情報項目の値型はSourceNetworkType列挙です。 |
IconUrl |
フェデレーテッド·公衆網からのコンタクトに関連付けられたアイコンのURL。連絡先情報項目の値の型はStringです。 |
IconStream |
フェデレーテッド·公衆網からのコンタクトに関連付けられているアイコン。情報項目の値の型がStreamオブジェクトで連絡してください。 |
ContactEndpoints |
連絡先のコラボレーションエンドポイント(SIPまたはTELエンドポイント)の集まり。連絡先情報項目の値型はCollaborationEndpointオブジェクトの配列です。 |
CurrentCalendarState |
連絡先の現在のカレンダーの状態(例えば、無料、忙しい、またはオフィスの外)。連絡先の情報項目の値型はContactCalendarState列挙です |
NextCalendarState |
連絡先の隣のカレンダー(例えば、無料、忙しい、またはオフィスの外)状態。連絡先の情報項目の値型はContactCalendarState列挙です |
NextCalendarStateStartTime |
次のカレンダーの状態の時間を開始します。連絡先情報の項目値の型は、DateTimeオブジェクトです。 DateTime値は、UTC値として返されます。あなたはDateTime.ToLocalTime()を呼び出すことによって、ローカル時間に変換する必要があります。 |
Reserved1 |
将来の使用のために予約されています。 |
CapabilityString |
現在の連絡先機能。 (例えば、唯一の音声のみ、またはIM)。連絡先情報項目の値の型はStringです。 |
Capabilities |
接触力の組合せ。連絡先情報項目の値型はContactCapabilitiesの列挙です。 |
ContactType |
連絡先のタイプ。連絡先の情報項目の値型はContactPresentityTypeの列挙です。 |
Description |
連絡先の説明。連絡先情報の項目値の型はStringです。 |
Reserved2 |
将来の使用のために予約されています。 |
FirstName |
連絡先の名前。連絡先情報項目の値の型はStringです。 |
LastName |
連絡先の姓。連絡先情報項目の値の型はStringです。 |
Reserved3 |
将来の使用のために予約されています。 |
Reserved4 |
将来の使用のために予約されています。 |
Reserved5 |
将来の使用のために予約されています。 |
Reserved6 |
将来の使用のために予約されています。 |
Reserved7 |
将来の使用のために予約されています。 |
(∩´∀`)∩ワーイ
特定のコンタクト情報ではなく、自分がお気に入り登録している一覧の取得なども次にやってみよう。
とりあえず目的は達成