メッセージの送信
続いて,
メッセージを送信するコードは次のようになります。ここでは,
function sendMessage(cid, text) {
if (!cid || !text) return;
var contact = User.get_onlineContacts().findByCid(cid);
if (!contact) return;
// メッセージの作成
var message = new Microsoft.Live.Messenger.TextMessage(text);
// 会話の作成とメッセージの送信
var conv = User.get_conversations().create(contact);
conv.sendMessage(message);
// メッセージの表示
var userCid = User.get_presence().get_imAddress().get_cid(); // サインインユーザーの CID
showMessage(userCid, text);
}
送信するメッセージは文字列からTextMessageオブジェクトを生成して使います。TextMessageクラス以外にもシェイクを表すNudeMessageクラスやアプリケーション独自のメッセージを定義できるApplicationMessageクラスがライブラリーには用意されています。
会話はConversationクラスで表します。User.
同じユーザー相手へのメッセージでも毎回新たに会話を作成するように見えますが,
送信ボタンをクリックすると上記の関数を実行するようにしておきましょう。
$(function () {
$("#sendButton").click(
function () {
if (!User) return false;
var cid = $("#onlineContacts").val();
var text = $("#text").val();
// メッセージの送信
sendMessage(cid, text);
// 入力されたテキストから検索
search(text, cid);
$("#text").val("");
return false;
});
});
メッセージの受信
次はインスタントメッセージの受信です。これも送信と同じくConversationオブジェクトを使います。メッセージを受信するとConversationクラスのMessageReceivedイベントが起きるので,
コレクションの変更イベントは,
User.get_conversations().add_collectionChanged(conversationCollectionChanged);
関連付けたconversationCollectionChanged関数は次のように追記します。
function conversationCollectionChanged(sender, e) {
// 追加された Conversation オブジェクト取得
var items = e.get_newItems();
// MessageReceived イベントと関連付け
$.each(items, function () {
if (!this.get_closed()) {
this.add_messageReceived(messageReceived);
}
});
}
そしてMessageReceivedイベントで呼ばれる関数は次のように記述します。
function messageReceived(sender, e) {
switch (e.get_message().get_type()) {
case Microsoft.Live.Messenger.MessageType.textMessage:
// Message オブジェクト参照
var message = e.get_message();
// 送信者の Contact オブジェクト取得
var contact = User.get_contacts().findByAddress(message.get_sender());
if (contact) {
var cid = contact.get_cid(); // 送信者の CID
var text = message.get_text(); // 受信メッセージのテキスト
// 受信メッセージの表示
showMessage(cid, text);
// メッセージのテキストから検索
search(text, cid);
}
break;
default:
break;
}
}
受信したメッセージの種類を調べ,