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

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

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

メッセージの送信

ここまでくればメッセージの送信は簡単です。

  1. TextMessageオブジェクトの生成
  2. 選択されているConversationオブジェクトのSendMessageメソッドの呼び出し

    以上です。コードは次のようになります。

Gihyo.LiveSample.sendMessage = function() {
    if (Gihyo.LiveSample.selectedConversation != null) {
        var message = new Microsoft.Live.Messenger.TextMessage($('message').value, null);
        Gihyo.LiveSample.selectedConversation.sendMessage(message, null);
        Gihyo.LiveSample.displayMessage(message);
        $('message').value = '';
    }
}

SendMessageメッセージの呼び出しの後,そのメッセージをページ上に表示するためGihyo.LiveSample.displayMessageメソッドの呼び出しもしています。

このメソッドはページ上のボタンのクリックイベントで呼ばれるようにしています。Default.htmを確認してください。

メッセージの送信にはアクティブな会話を選択してから行う必要があります。ページ上では選択している・していないに関わらず何も変化しませんので注意してください。実行した結果は図6のようになります。

図6 メッセージの送信

図6 メッセージの送信

会話の終了

アクティブな会話の一覧には,会話を終了するため[close]というリンクを付けていました。最後にこれを実装しましょう。会話の終了は,ConversationのCloseメソッドを使用します。

Gihyo.LiveSample.closeConversation = function(index) {
    var conversation = Gihyo.LiveSample.User.get_conversations().get_item(index);
    if (Gihyo.LiveSample.selectedConversation == conversation) {
        Gihyo.LiveSample.selectedConversation.remove_messageReceived(Gihyo.LiveSample.messageReceived);
        Gihyo.LiveSample.selectedConversation = null;
        $('messages').innerHTML = '';
    }
    conversation.close();
}

終了した会話が,選択中の会話だった場合を考慮した条件式を入れています。


いかがでしたでしょうか。今回はここまでです。作成したアプリケーションはかなり使いにくいユーザインタフェースでしたが,Live Messengerの機能が実装できることは理解できたのではないかと思います。次回はその他の機能の実装や細かい点について扱う予定です。今回(次回も)の作成したアプリケーションはエラー処理についてほぼ考慮されていません。サインアウトした状態から操作すると簡単にエラーが発生してしまいます。実際にはユーザのプレゼンスの変化によりサインイン中かどうか把握し,処理する必要があります。

著者プロフィール

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

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

URL:http://katamari.jp