rcs-sdk
Version:
封装客户端与平台间的相互调用功能。
115 lines • 5.86 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.newSipMessage = exports.getHistoryMessageList = exports.sendMessage = exports.createByJSON = exports.uploadFile = exports.createSugRsp = exports.createFile = exports.createText = void 0;
const rcs_data_1 = require("rcs-data");
const File_1 = require("rcs-data/dist/rcs/File");
const constants_1 = require("rcs-data/dist/rcs/constants");
const MSG = require("../srvapi/message");
const UPD = require("../srvapi/uploader");
const constants_2 = require("../constants");
const util_1 = require("../util");
const SIP = require("../srvapi/sip");
const debug = require('debug')('rcssdk:message');
function createText(conversationId, recipient, textMsg, contributionId, messageId) {
let builder = (0, rcs_data_1.Builder)(this.account.nameAddr)
.conversationId(conversationId)
.contributionId(contributionId || (0, util_1.uuid)())
.messageId(messageId || (0, util_1.uuid)());
let rcstext = builder.text(recipient, textMsg);
rcstext.processingNotification = constants_1.Processing_Status.sending;
let sdkrst = (0, util_1.newSdkResult)(constants_2.RequestFunc.NEWMESSAGE, rcstext);
return Promise.resolve(sdkrst);
}
exports.createText = createText;
function createFile(conversationId, recipient, file, contributionId, messageId, thumbnail) {
const builder = (0, rcs_data_1.Builder)(this.account.nameAddr)
.conversationId(conversationId)
.contributionId(contributionId || (0, util_1.uuid)())
.messageId(messageId || (0, util_1.uuid)());
const fileInfo = new File_1.FileInfo(file.name, file.size, file.data, file.type);
const rcsmsg = builder.file(recipient, fileInfo, thumbnail);
rcsmsg.processingNotification = constants_1.Processing_Status.sending;
let sdkrst = (0, util_1.newSdkResult)(constants_2.RequestFunc.NEWMESSAGE, rcsmsg);
return Promise.resolve(sdkrst);
}
exports.createFile = createFile;
function createSugRsp(conversationId, recipient, suggestion) {
return __awaiter(this, void 0, void 0, function* () {
const builder = (0, rcs_data_1.Builder)(this.account.nameAddr)
.conversationId(conversationId)
.contributionId((0, util_1.uuid)())
.messageId((0, util_1.uuid)());
let { type, displayText, postback } = suggestion;
const rcsmsg = builder.suggestionResponse(recipient, {
type,
displayText,
postback,
});
let sdkrst = (0, util_1.newSdkResult)(constants_2.RequestFunc.NEWMESSAGE, rcsmsg);
return Promise.resolve(sdkrst);
});
}
exports.createSugRsp = createSugRsp;
function uploadFile(rcsmsg, rawFile) {
return __awaiter(this, void 0, void 0, function* () {
let sdkrst = yield UPD.upload.call(this, rawFile);
if (sdkrst.errCode != 0) {
return Promise.reject(sdkrst);
}
let { file, thumbnail } = rcsmsg.content;
let { data } = sdkrst;
if (data.file)
file.copy(data.file);
if (data.thumbnail)
thumbnail.copy(data.thumbnail);
sdkrst = (0, util_1.newSdkResult)(constants_2.RequestFunc.UPLOADFILE, rcsmsg);
return Promise.resolve(sdkrst);
});
}
exports.uploadFile = uploadFile;
function createByJSON(conversationId, recipient, rawJSON) {
return __awaiter(this, void 0, void 0, function* () {
let rcsmsg = rcs_data_1.Parser.parseJSON(Object.assign(Object.assign({}, rawJSON), { conversationId, contributionId: (0, util_1.uuid)(), messageId: (0, util_1.uuid)(), senderAddress: this.account.nameAddr.toString(), destinationAddress: [recipient.toString()] }));
rcsmsg.processingNotification = constants_1.Processing_Status.sending;
let sdkrst = (0, util_1.newSdkResult)(constants_2.RequestFunc.NEWMESSAGE, rcsmsg);
return Promise.resolve(sdkrst);
});
}
exports.createByJSON = createByJSON;
function sendMessage(rcsmsg) {
return __awaiter(this, void 0, void 0, function* () {
let contentTypeValue = rcsmsg.contentType.value;
let { headerLines, bodyString } = rcsmsg.output();
let sdkrst = yield SIP.sendMessage.call(this, rcsmsg.to, contentTypeValue, bodyString, headerLines);
rcsmsg.processingNotification = constants_1.Processing_Status.sent;
sdkrst.data = rcsmsg;
return Promise.resolve(sdkrst);
});
}
exports.sendMessage = sendMessage;
function getHistoryMessageList(conversationId, startContributionId, count) {
return MSG.listByConversation.call(this, conversationId, startContributionId, count);
}
exports.getHistoryMessageList = getHistoryMessageList;
function newSipMessage(headers, contentType, body) {
if (contentType === 'message/cpim') {
let rcsmsg = rcs_data_1.Parser.parseCPIM(body, headers);
debug(`生成RCS消息`);
let sdkrst = (0, util_1.newSdkResult)(constants_2.RequestFunc.NEWMESSAGE, rcsmsg);
this.emit(constants_2.CbEvents.ONRECVNEWMESSAGE, sdkrst);
}
else {
debug(`不支持的内容类型'${contentType}'`);
}
}
exports.newSipMessage = newSipMessage;
//# sourceMappingURL=index.js.map