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 コメント:
コメントを投稿