以前のエントリ Messenger Library Ver. 2.5 Release! で少しふれた、なにこれ? なEndpointsについてです。
Version 2.5 によりEndpointクラスにNameプロパティが追加されました。以前までのEndpointクラスが持つプロパティは、
- Capabilities: MessengerのVersionや多人数会話のサポートなどの情報を参照できる。
- Id: Endpointの識別子
- IMAddress: メールアドレスおよび各種情報の取得・設定
- Presence: プレゼンス情報の取得・設定
でした。これにNameプロパティが加わり、ドキュメントでは人にわかりやすい名前になって取得・設定ができるよ とあります。
そもそもEndpoint自体が何かよくわかりません。その名前って? というわけでVersion 2.5を利用して値を取得してみましょう。
// user は Microsoft.Live.Messenger.User オブジェクト
var es = user.get_endpoints().getEnumerator();
while (es.moveNext()) {
var e = es.get_current();
alert(e.get_name());
}
私の場合、これをローカルな環境から実行すると「localhost」と表示されました。このときWebページのアドレスは「http://localhost/MessengerLibrarySample/」でした。
なるほど。Endpointの名前とは、サインインしている場所を表す名前なんですねー。これは先日公開されたLive Messenger 2009 Betaにより意味が出てきます。2009 Betaでは複数個所からの同時サインインがサポートされています。Messenger Libraryを利用してWebページからサインインした状態で、Windowsクライアント上のLive Messengerにサインすると、次のように表示されます。
このEndpointの名前は、set_name() により変更も可能です。また、この値が参照および設定ができるのは、サインインしてるユーザー自身のものだけです(メンバーのEndpointsは、Contactクラスのプロパティ→IMAddressクラス経由で可能)。
以上のように、またコードからもわかるように、ひとりのユーザーに対して複数のEndpointがあるわけですが、少なくとも私の環境では他のサインインしている場所のEndpoint情報は取得できませんでした(コレクションの要素数が1)。