@microsoft/omnichannel-chat-sdk
Version:
Microsoft Omnichannel Chat SDK
95 lines • 5.25 kB
JavaScript
;
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