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

第13回 Live Messenger Library ―― オリジナルLive Messengerの作成 (後編)

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

今回も前回前々回に引き続いてMessenger LibraryによるWebアプリケーションの作成です。そして,ひとまず完結編になります。前回までに作成したコードを元にLive Messengerとして機能するための事項を説明します。

localhostでの開発をサポート

はじめにMessenger Libraryのアップデート情報を紹介します。本連載 第11回のLive Messenger Library 前編の記事中で,ダイナミックDNSなどを用いた開発時の環境を紹介しました。これは開発時もlive.comサービスと通信するためURLドメインが必要なためでしたが,Messenger Libraryがアップデートされ,ドメインがlocalhostでも開発が可能になっています。簡単にMessenger Libraryの開発ができるようになりましたので,ぜひトライしてみてください。とはいえ,ダイナミックDNSを使った環境はほかのWindows Liveサービスを利用した開発で必要な場合がありますので構築しておいて損はありません。

プレゼンスの変更

さて,まずは前回までに作成したアプリケーションにて,ユーザのプレゼンスを変更できるようにしてみましょう。プレゼンスの表示はUserオブジェクトのPresenceプロパティ(IMAddressPresenceクラス型)を使用していました。プレゼンスの変更はこのPresenceプロパティに各種 値を設定するだけで可能です。ただし,表示アイコンのURLは読み取り専用のプロパティとなっているためMessenger Libraryから変更はできません。

Messenger Libraryの場合,プロパティとして扱われている値への設定は「set_」を接頭辞とした関数を使用していました。表示名・表示メッセージ・状態を変更は次のように記述します。

Gihyo.LiveSample.changePresence = function() {
    var presence = Gihyo.LiveSample.User.get_presence();
    if (presence.get_status() === Microsoft.Live.Messenger.PresenceStatus.offline) {
        return;
    }

    presence.set_displayName($('displayNameText').value);
    presence.set_personalMessage($('personalMessageText').value);
    
    var selectedIndex = $('selectStatus').selectedIndex;
    var statuses = [Microsoft.Live.Messenger.PresenceStatus.appearOffline,
                    Microsoft.Live.Messenger.PresenceStatus.away,
                    Microsoft.Live.Messenger.PresenceStatus.beRightBack,
                    Microsoft.Live.Messenger.PresenceStatus.busy,
                    Microsoft.Live.Messenger.PresenceStatus.idle,
                    Microsoft.Live.Messenger.PresenceStatus.inACall,
                    Microsoft.Live.Messenger.PresenceStatus.online,
                    Microsoft.Live.Messenger.PresenceStatus.outToLunch];
    presence.set_status(statuses[selectedIndex]);
}

サインインしていない状態では変更しないように条件文を入れています。状態の変更は,selectタグとoptionタグを使ってユーザに選択してもらうことを想定しています。Microsoft.Live.Messenger.PresenceStatus列挙体の各値を格納した配列を作成し,それと対応するようにHTMLを記述します。HTMLは次のように記述しました。Default.htm内の適当な場所に追加してください。

<div>
<table>
    <tr><td>Display Name: </td><td><input id="displayNameText" type="text" /></td></tr>
    <tr><td>Message: </td><td><input id="personalMessageText" type="text" /></td></tr>
    <tr><td>Status: </td>
        <td>
        <select id="selectStatus">
            <option>オフライン</option>
            <option>退席中</option>
            <option>一時退席中</option>
            <option>取り込み中</option>
            <option>退席中 (自動)</option>
            <option>通話中</option>
            <option>オンライン</option>
            <option>昼休み</option>
        </select>
        </td></tr>
</table>
<div><input type="button" value="Change Presence" onclick="Gihyo.LiveSample.changePresence();" /></div>
</div>

実行した結果は図1のようになります。

図1 プレゼンスの変更

図1 プレゼンスの変更

著者プロフィール

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

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

URL:http://katamari.jp

コメント

コメントの記入