UNPKG

@microsoft/omnichannel-chat-sdk

Version:
95 lines 5.25 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var OmnichannelMessage_1 = require("../core/messaging/OmnichannelMessage"); var LiveChatVersion_1 = require("../core/LiveChatVersion"); var utilities_1 = require("./utilities"); var createOmnichannelMessage = function (message, optionalParams) { var omnichannelMessage = {}; omnichannelMessage.liveChatVersion = optionalParams.liveChatVersion || LiveChatVersion_1.default.V1; optionalParams.debug && console.log(message); if (optionalParams.liveChatVersion === LiveChatVersion_1.default.V2) { var _a = message, id = _a.id, content = _a.content, metadata = _a.metadata, sender = _a.sender, senderDisplayName = _a.senderDisplayName, createdOn = _a.createdOn, editedOn = _a.editedOn; // eslint-disable-line @typescript-eslint/no-explicit-any omnichannelMessage.id = id; omnichannelMessage.messageid = undefined; omnichannelMessage.clientmessageid = undefined; omnichannelMessage.deliveryMode = undefined; // Backward compatibility omnichannelMessage.properties = {}; // Backward compatibility omnichannelMessage.content = ''; omnichannelMessage.properties.tags = metadata && metadata.tags ? metadata.tags : []; omnichannelMessage.tags = metadata && metadata.tags ? metadata.tags.replace(/\"/g, "").split(",").filter(function (tag) { return tag.length > 0; }) : []; // eslint-disable-line no-useless-escape omnichannelMessage.timestamp = editedOn !== null && editedOn !== void 0 ? editedOn : createdOn; omnichannelMessage.messageType = OmnichannelMessage_1.MessageType.UserMessage; // Backward compatibility omnichannelMessage.sender = { id: sender.communicationUserId, displayName: senderDisplayName, type: OmnichannelMessage_1.PersonType.Bot }; if (content) { if (typeof (content) === 'string') { omnichannelMessage.content = content; } else if (typeof (content) === 'object' && typeof (content === null || content === void 0 ? void 0 : content.message) === 'string') { // ChatMessage coming from ChatThreadClient.listMessages() API omnichannelMessage.content = content.message; } } else { if (message.message) { // ChatMessageReceivedEvent coming from WS omnichannelMessage.content = message.message; } } if (metadata && metadata.amsMetadata && metadata.amsReferences || (metadata === null || metadata === void 0 ? void 0 : metadata.amsreferences)) { try { var data = JSON.parse(metadata.amsMetadata); // "amsreferences" takes precedence var references = JSON.parse(metadata.amsreferences || (metadata === null || metadata === void 0 ? void 0 : metadata.amsReferences)); var _b = data[0], fileName = _b.fileName, contentType = _b.contentType; // fileMetadata should be defined only when there's an attachment omnichannelMessage.fileMetadata = {}; // Backward compatibility omnichannelMessage.fileMetadata.fileSharingProtocolType = 0; omnichannelMessage.fileMetadata.id = references[0]; omnichannelMessage.fileMetadata.name = fileName; omnichannelMessage.fileMetadata.size = 0; omnichannelMessage.fileMetadata.type = contentType; omnichannelMessage.fileMetadata.url = ''; } catch (_c) { // Suppress errors to keep chat flowing } } // OriginalMessageId is used to track the original message id from the source messaging channel before bridging and any retries if (metadata && metadata.OriginalMessageId) { omnichannelMessage.properties.originalMessageId = metadata.OriginalMessageId; } else { omnichannelMessage.properties.originalMessageId = id; } // Handle custom event metadata if (metadata && metadata.customEvent && metadata.customEventName && metadata.customEventValue) { omnichannelMessage.customEvent = { isCustomEvent: Boolean(metadata.customEvent), customEventName: metadata.customEventName, customEventValue: metadata.customEventValue }; } omnichannelMessage.role = (0, utilities_1.getMessageRole)(omnichannelMessage); } else { var clientmessageid = message.clientmessageid; omnichannelMessage.id = clientmessageid; omnichannelMessage = __assign({}, message); } return omnichannelMessage; }; exports.default = createOmnichannelMessage; //# sourceMappingURL=createOmnichannelMessage.js.map