Windows Live Presence API を使用するクエリ

Windows Live Presence API は、Windows Live Messenger ユーザーのプレゼンスにアクセスするための HTTP API です。Windows Live Presence API は、JSON または JavaScript 関数としてプレゼンスを返します。Web サイトから Windows Live Messenger ユーザーのプレゼンスを照会するには、プレゼンスを共有し Web からメッセージを受信する許可を、その Messenger ユーザーが設定する必要があります。Messenger のプレゼンスを共有するように Web サイト上でユーザーに案内する必要があります。詳細については、「ユーザーに対するオンライン プレゼンス共有の案内」を参照してください。

Presence API は、ブラウザから直接使用しやすいように設計されています。この API にアクセスするには、以下の形式の URL を使用します。

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

[ID] は id@apps.messenger.live.com の形式にします。ここで "id" は英数字で表されたユーザー ID です。

[resource] は次のいずれかです。

  • presence:プレゼンスを JSON または JavaScript として取得します。
  • presenceimage:ユーザーのプレゼンスを示す画像アイコンを取得します。

JSON 形式で返されたプレゼンスは、以下の例のような形式になります (12BACD345678 は、プレゼンスが照会されたユーザーの ID であるとします)。

{
   "status":"Offline",
   "icon": {
   "height": 16,
   "url":"http://settings.messenger.live.com/static/w13r2/Conversation/img/Status_Online.gif",
   "width": 16
   },
   "statusText":"Online",
   "id":"12BACD345678@apps.messenger.live.com",
   "displayName":"Name"
}

Presence API を IM Control と組み合わせて使用して、メッセージをやり取りできる他のオンラインのユーザーのプレゼンスを示すことができます。以下に例を示します。

<a href=”http://settings.messenger.live.com/conversation/imme.aspx?...” target=”_blank”>
   <img src=”http://messenger.services.live.com/users/12BACD345678@apps.messenger.live.com/presenceimage”>
</a>

JavaScript コールバック関数の使用

presence リソースを要求する URL で cb クエリ パラメータを渡すと、要求の結果は、指定した JavaScript コールバック関数内に JSON 形式で挿入されます。cb クエリ パラメータの指定は任意です。このパラメータは、presence リソースが要求された場合のみ有効です。それ以外の場合は無視されます。

指定する JavaScript 関数名には以下の要件があります。

  • 有効な JavaScript 関数を参照する必要があります。
  • 使用できる数字は、a-z、A-Z、0-9、および下線 (_) に限られます。
  • 最低 1 つの文字を含み、128 文字以内であることが必要です。

たとえば、次の URL を使用したとします。

http://messenger.services.live.com/users/12BACD345678@apps.messenger.live.com/presence/?cb="ShowStatus"&mkt=en-US

この場合、以下のように、JSON 形式の応答が関数 ShowStatus 内に挿入されます。

ShowStatus({"status":"Offline", "icon": {
     "height":16, "url":"http://settings.messenger.live.com/static/w13r2/Conversation/img/Status_Offline.gif",
     "width": 16 }, 
     "statusText":"Offline", 
     "id":"12BACD345678@apps.messenger.live.com", 
     "displayName":"Name" })

HTML の <script> タグを使用して Presence API を呼び出すことで、Web ページから直接、プレゼンス データにアクセスすることができます。この HTML ページの例では、ページのロード時にユーザー 12BACD345678@apps.messenger.live.com の状態が返されます。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>ユーザー プレゼンスの表示</title>
</head>
<body>   
   <div id="innerFrame"></div>
   
   <script type="text/javascript" language="javascript">   
   function showpresence(presence)
   {
      var innerFrame = document.getElementById('innerFrame');
         
      var statusIcon = document.createElement('img');
      statusIcon.style.border = 'none';
      statusIcon.src = presence.icon.url;
      statusIcon.width = presence.icon.width;
      statusIcon.height = presence.icon.height;
      statusIcon.alt = presence.statusText;
      statusIcon.title = presence.statusText;

      var displayName = document.createElement('span');
      displayName.style.fontFamily = 'MS UI Gothic';
      displayName.style.fontSize = '9pt';
      displayName.title = presence.displayName;
      
      var statusText = document.createElement('span');
      statusText.style.fontFamily = 'MS UI Gothic';
      statusText.style.fontSize = '9pt';
      statusText.title = presence.statusText;
      
      var br = document.createElement('br');
      
      innerFrame.appendChild(statusIcon);
      innerFrame.appendChild(br);
      innerFrame.appendChild(displayName);
      innerFrame.appendChild(br);
      innerFrame.appendChild(statusText);
      
      if ((displayName.innerText !== undefined)&&(statusText.innerText !== undefined))
      {
         displayName.innerText = presence.displayName;
         statusText.innerText = presence.statusText;
      }
      else if ((displayName.textContent != undefined)&&(statusText.textContent !== undefined))
      {
         displayName.textContent == presence.displayName;
         statusText.textContent == presence.statusText;
      }
   }
   </script>
   <script type="text/javascript" language="javascript"
src="http://messenger.services.live.com/users/12BACD345678@apps.messenger.live.com/presence/?cb=showpresence">
   </script>
</body>
</html>

script 要素の src 属性に指定された JavaScript 関数呼び出しがブラウザにロードされると、cb クエリ パラメータに指定されたコールバック関数が呼び出され、Presence API の呼び出しの結果が渡されて、その関数が実行されます。このコールバック関数では、プレゼンス オブジェクトに対して操作を行って、ユーザーの状態を指定の方法で表示することができます。

次のコード例は、HTML の <img> 要素からユーザーのプレゼンス画像にリンクします。

<img src="http://messenger.services.live.com/users/12BACD345678@apps.messenger.live.com/presenceimage/" alt="状態" />

これは、ユーザーの状態を表す 16x16 の PNG アイコン画像を表示します。

関連項目

概念

JSON 要素リファレンス