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

第35回 Live Messenger Web Toolkit──WebサイトにLive Messenger機能を追加(3)

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

Conditional Flowコントロール

少し変わったコントロールとして,Conditional Flowコントロールというものがあります。これはユーザーのオンライン状態によって表示内容を変更するために用います。IfコントロールとElseコントロールがあり,プログラミングのIf Else(分岐)構文を実現します。

使用方法は次の通りです。

<msgr:if
   cid="$user"
   condition="online">
    <div>オンラインです。</div>
<msgr:else>
    <div>オフラインです。</div>
</msgr:else>
</msgr:if>

cid属性にはCIDを指定します。Elseコントロールの<msgr:else>要素は省略可能です。

Live Messenger Libraryとの連携

まだ重要なコントロールを紹介していませんが,ここで一度 Live Messenger LibraryとUI Controlsとを連携させてみましょう。UI Controlsは多機能なものが用意されていますが,プログラムで何か処理させたい場合,Live Messenger Libraryの使用が必要になってきます。たとえば,自動で会話の作成や応答,オンラインのメンバーの数だけDisplay Pictureコントロールの生成,メンバーのCIDの取得などはUI Controlsだけでは実現できません。

それでは,Live Messenger LibraryとJavaScriptを使用してサインインユーザーの情報を取得してみましょう。サインイン処理自体もライブラリーにより可能ですが,サインインの処理は既に前回に紹介したSign Inコントロールに任せることにします。サインイン後のタイミングはMessenger Applicationコントロールを使用して知ることができます。

これまで使用してきた<msgr:app>要素に次のようにonAuthenticated属性とonSignedIn属性を追加し,認証完了とサインイン完了時に呼ばれるJavaScriptの関数を指定します。これら以外にもサインアウト時に処理するためのonSignedOut属性がMessenger Applicationコントロールにはあります。

<msgr:app   
    id="appTag"   
    application-verifier-token="<%= ApplicationVerifier %>"
    privacy-url="Privacy.html"
    channel-url="Channel.html"
    token-url="RefreshMessengerToken.aspx"
    onAuthenticated="onAuthenticated"
    onSignedIn="onSignedIn">
</msgr:app>

JavaScriptの関数は次のように書きます。XHTML<head>要素内に追加してください。ここではユーザーのCIDを表示しています。

<script type="text/javascript">
<!--
    var User;
    function onAuthenticated(e) {
        // 認証完了
        
        // User オブジェクト取得
        User = e.get_user();

        // ユーザーの CID の表示
        alert("CID: " + e.get_user().get_presence().get_imAddress().get_cid());
    }

    function onSignedIn(e) {
    }
//-->
</script>

実行した結果は,図6の通りです。サインインしたユーザーのCIDが表示されたでしょうか。

図6 実行結果

図6 実行結果

Live Messenger Libraryでは多くの操作をMicrosoft.Live.Messenger.User クラスを使用して行います。イベント引数からUserオブジェクトを取得し,各プロパティーをたどってCIDを取得しています。

Live Messenger Libraryに用意されているクラスは多数あるため詳細や使用方法を,ここでは紹介できません。詳しく知りたい方はMSDN Libraryのリファレンスを参照してください。またLive Messenger Library自体はLive Messenger Web Toolkit以前からあり,アップグレードを重ねて現在に至っています。以前のバージョンは連載第11回13回でも紹介しています。いろいろと改修はされていますが参考程度にはなると思います。また,次回以降も必要な部分はLive Messenger Libraryを使用し紹介する予定です。

著者プロフィール

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

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

URL:http://katamari.jp