UNPKG

rcs-sdk

Version:

封装客户端与平台间的相互调用功能。

115 lines 5.86 kB
"use strict"; 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