使ってみよう! Windows Live SDK/API

第10回 IM Control & Presence API ―― WebページにLive Messengerの表示

この記事を読むのに必要な時間:およそ 4 分

IM Controlの利用案内

IM Controlは,ユーザ自身でWebサイトへ設置するだけでなく,例えばソーシャルネットワークサイトにて会員の各プレゼンスを表示するなど,ほかのユーザのプレゼンスを表示する利用方法も考慮されています。その場合,ユーザにプレゼンス表示を承諾してもらいプレゼンス表示に必要なIDを取得する必要があります。その手順についても説明します。

プレゼンス表示の許可を得るため,ユーザに対してサインアップページと呼ばれるWebページを案内します。次の構文からなるURLのリンクを示します。

http://settings.messenger.live.com/applications/websignup.aspx?returnurl=[returnurl]&privacyurl=[privacyurl]
パラメータ 説明
[returnurl] サインアップページから戻り先のURL
[privacyurl] サイトのプライバシーポリシーが書かれたページのURL

ユーザは一度live.comドメインにあるサインアップページ図4に移動し,承諾・拒否の選択後,元のサイトに戻ってきます。利用案内を行うサイトはプレゼンスに関する情報を取得するためプライバシーポリシーを提示する必要があります。

図4 サインアップページ

図4 サインアップページ

サインアップページにてユーザが同意またはキャンセルを行うと,戻り先に指定したアドレスへ移動します。そのときに戻り先のURLに以下のパラメータが付いてアクセスされます。

パラメータ名 説明 値の例
Result

承諾の結果。次のいずれか。

  • Accepted
  • Declined
  • NoPrivacyUrl
Accepted
id

ユーザ固有のID。resultがAcceptedの場合のみ。

12BACD345678@apps.messenger.live.com

例えば,戻り先にURLに「katamari.jp」を指定していた場合,次のようなアドレスにユーザは戻ってきます。

http://katamari.jp/?result=Accepted&id=afe8504aa8cd166f@apps.messenger.live.com

戻り先のサイトでは,resultパラメータがAcceptedの場合にidパラメータの値を取得・保存しておくことでユーザのプレゼンスの表示が可能になります。IM ControlのHTMLコードにこのIDが使用されていますので,その部分を参考にIDを置き換えて使います。

ユーザはサイトごとに承諾するような形になりますが,固有IDはIM Control,Presence APIとも共通になっています。特定のサイトのみ承諾や拒否はできません。

Presence API

Windows Live Presence APIは,Windows Live Messengerの特定ユーザのプレゼンスをJSON(JavaScript Object Notation)形式または画像形式で返すAPIです。JSONとはデータをJavaScriptで処理する際に便利な表記方法です。JavaScriptを使用してプレゼンスが取得でき,IM Controlより柔軟なプレゼンスの表示や処理が可能です。メッセージを送受信することはできないのでIM Controlと組み合わせて使うのがよいでしょう。

Presence APIの利用

Presence APIは次の構文からなるURLを利用します。

http://messenger.services.live.com/users/[ID]/[resource]/[?queryparameters]

[ID]は,id@apps.messenger.live.comの形式をしたプレゼンス表示のための固有IDを指定します。ユーザ自身のIDを確認するには,IM Controlを設置したときに利用したページhttp://settings.messenger.live.com/applications/WebSettings.aspxからHTMLを作成し,コード中のIDを抜き出してください。IM Controlの利用案内で取得できるIDも同一です。

[resource]は,次のいずれかを指定します。

  • presence: JSON形式で取得する場合
  • presenceimage: 画像形式で取得する場合

[?queryparameters]は,JSON形式でプレゼンスを取得する場合に使用します。

画像形式で取得

画像形式の場合,URLへアクセスするとプレゼンスを表す16x16のPNG画像が取得できます。これはIM Controlの状態アイコン形式のHTML作成に使用されています。IM ControlのHTML作成では,IMGタグとIMウィンドウへのリンクと組み合わせたHTMLになっています。

JSON形式で取得

JSON形式の場合,URLへアクセスすると次のような文字列が返ってきます。

{
    "icon":{
        "url": "http://settings.messenger.live.com/static/w13r2/Conversation/img/Status_Away.gif", 
        "height": 16,
        "width": 16
        },
    "statusText": "\u9000\u5e2d\u4e2d",
    "status": "Away",
    "displayName": "\u677e\u6c5f",
    "id": a7c9efe5c10b4fbc@apps.messenger.live.com
}

"status"などのキー名と"Offline"など その値の組み合わせになっています。Presence APIにより返ってくる値には次のものがあります。

status

ユーザの状態を表し,次の8種類の文字列になります。

  • Online: オンライン
  • Away: 退席中
  • Idle: 退席中(しばらく操作していない状態)
  • BeRightBack: 一時退席中
  • Busy: 取り込み中
  • OutToLunch: 昼休み
  • OnThePhone: 通話中
  • Offline: オフライン
statusText

ユーザの状態を表すローカライズされた文字列。日本語などのマルチバイト文字列の場合,⁠\」をエスケープシーケンスとして利用したUnicode形式で表現されています。

id

APIを呼び出す際に指定したID(id@apps.messenger.live.com形式⁠⁠。

displayName

ユーザの表示名。ユーザが Live Messenger で指定している表示名になります。statusTextと同様にエスケープされています。この値は空文字(⁠⁠)の場合もあります。

icon

ユーザの状態を表すアイコン画像情報。データが入れ子構造になっており,iconの中に次の3種類のデータがあります。

url
ユーザの状態を表すアイコン画像のURL。状態によってアドレスは変化します。得られる画像は,[resource]に画像形式を指定したときと同じものです。
width
アイコン画像の横幅ピクセル。
height
アイコン画像の縦幅ピクセル。
mkt

カルチャ情報のID。必ずしも含まれている値ではありません。ja-JPやen-USなどの値になります。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp