メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年7月29日水曜日

[Apache Shindig][お勉強][OpenSocial] メモ97 messagesサービスのmethod

requestSendMessageに対応するサービスはmessages.createかと思いきや、
そうとは限らないっぽい。

OpenSocialでは特に規定が無いので、
実装しやすそうな
messages.modify
を使用しようかと。

で、その際のjsonrpccontainer.jsのrequestSendMessageの今のところの実装。


JsonRpcContainer.prototype.requestSendMessage = function(recipientIds, message, opt_callback, opt_params) {
opt_callback = opt_callback || function(){};
opt_params = opt_params || {}; /* 使わないよ */

var body = gadgets.util.unescapeString(message.getField(
opensocial.Message.Field.BODY));
var title = gadgets.util.unescapeString(message.getField(
opensocial.Message.Field.TITLE));
var type = gadgets.util.unescapeString(message.getField(
opensocial.Message.Field.TYPE));

if (!body || body.length === 0) {
var bodyMsgKey = gadgets.util.unescapeString(message.getField(
opensocial.Message.Field.BODY_ID));
body = gadgets.Prefs.getMsg(bodyMsgKey);
}
if (!title || title.length === 0) {
var titleMsgKey = gadgets.util.unescapeString(message.getField(
opensocial.Message.Field.TITLE_ID));
title = gadgets.Prefs.getMsg(titleMsgKey);
}
var self = this;
var callback = function() {
var req = opensocial.newDataRequest();
var viewer = new opensocial.IdSpec({'userId' : 'VIEWER'});
var rpc = { method : "messages.modify" };
rpc.params = self.translateIdSpec(viewer);
rpc.params.appId = "@app";

FieldTranslations.translateNetworkDistance(viewer, rpc.params);

rpc.params.msgCollId = "dummyMsgCollId";
rpc.params.entity = {};
rpc.params.entity["title"] = title;
rpc.params.entity["body"] = body;
rpc.params.entity["type"] = type;
rpc.params.entity["recipients"] = self.translateIdSpec(self.makeIdSpec(recipientIds))["userId"];

var messageRequest = new JsonRpcRequestItem(rpc);

req.add(messageRequest, 'key');
req.send(function(response) {
opt_callback(response.get('key'));
});
};
var callbackId = "cId_" + Math.random();
callbackIdStore[callbackId] = callback;
gadgets.rpc.call(null, 'requestSendMessage',
null,
callbackId,
recipientIds,
title,
body);
};


ってな感じ。
サーバ側のサービスを実装してみないとわからないけど、
今度こそ、とりあえずはrequestSendMessageは動作させることができそう。

はてさて。

.

0 コメント: