@tencentcloud/ai-desk-customer-wechat
Version:
AI Desk customer UIKit for wechat mini program
114 lines (113 loc) • 4.55 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
const common_vendor = require("../common/vendor.js");
const aiDeskCustomerUniapp_utils_index = require("./utils/index.js");
const aiDeskCustomerUniapp_utils_logger = require("./utils/logger.js");
const _TUICustomerServer = class _TUICustomerServer {
constructor() {
__publicField(this, "customerServiceAccounts");
common_vendor.R.registerService(common_vendor.E.TUICustomerServicePlugin.SERVICE.NAME, this);
common_vendor.R.registerExtension(common_vendor.E.TUIContact.EXTENSION.CONTACT_LIST.EXT_ID, this);
this.customerServiceAccounts = ["@customer_service_account"];
}
static getInstance() {
if (!_TUICustomerServer.instance) {
_TUICustomerServer.instance = new _TUICustomerServer();
}
return _TUICustomerServer.instance;
}
static loginCustomerUIKit(SDKAppID, userID, userSig) {
aiDeskCustomerUniapp_utils_index.clearChatStorage(SDKAppID, userID);
common_vendor.qt.login({
SDKAppID,
userID,
userSig,
useUploadPlugin: true
}).then(() => {
aiDeskCustomerUniapp_utils_logger.Log.i(`login success. userID:${userID}`);
_TUICustomerServer.loggedInUserID = userID;
common_vendor.Xt.switchConversation("C2C@customer_service_account");
common_vendor.qt.chat.callExperimentalAPI("isFeatureEnabledForStat", Math.pow(2, 42));
}).catch((error) => {
aiDeskCustomerUniapp_utils_logger.Log.l(error);
});
}
/**
* init
*/
static init(SDKAppID, userID, userSig) {
aiDeskCustomerUniapp_utils_logger.Log.l(`TUICustomerServer.init SDKAppID:${SDKAppID} userID:${userID} isInitialized:${_TUICustomerServer.isInitialized} loggedInUserID:${_TUICustomerServer.loggedInUserID}`);
if (_TUICustomerServer.isInitialized) {
if (_TUICustomerServer.loggedInUserID === userID) {
return;
}
_TUICustomerServer.unInit().finally(() => {
this.loginCustomerUIKit(SDKAppID, userID, userSig);
});
} else {
_TUICustomerServer.isInitialized = true;
this.loginCustomerUIKit(SDKAppID, userID, userSig);
}
}
static async unInit() {
return common_vendor.qt.logout();
}
// Determine if the current session is a customer service session
isCustomerConversation(conversationID) {
const userID = conversationID && conversationID.slice(3) || "";
return this.customerServiceAccounts.indexOf(userID) > -1;
}
// Determine if the current message is a customer service message
isCustomerServicePluginMessage(message) {
if (!message || !this.isCustomerConversation(message.conversationID)) {
return false;
}
if (aiDeskCustomerUniapp_utils_index.isThinkingMessage(message)) {
return false;
}
return aiDeskCustomerUniapp_utils_index.isCustomerServiceMessage(message) || aiDeskCustomerUniapp_utils_index.isMessageInvisible(message);
}
onGetExtension(extensionID) {
if (extensionID === common_vendor.E.TUIContact.EXTENSION.CONTACT_LIST.EXT_ID) {
return [
{
weight: 0,
icon: "",
text: "智能客服",
data: {
name: "customer",
accountList: this.customerServiceAccounts
}
}
];
}
}
onCall(method, params) {
aiDeskCustomerUniapp_utils_logger.Log.l(`TUICustomerServer.onCall method:${method} params:`, params);
if (method === common_vendor.E.TUICustomerServicePlugin.SERVICE.METHOD.ACTIVE_CONVERSATION) {
if (this.isCustomerConversation(params.conversationID)) {
common_vendor.Qt.sendCustomMessage({
to: params.conversationID.slice(3),
conversationType: common_vendor.qt.TYPES.CONV_C2C,
payload: {
data: JSON.stringify({
src: "7",
customerServicePlugin: 0,
triggeredContent: typeof params.robotLang === "undefined" ? void 0 : { language: params.robotLang }
})
}
}, { onlineUserOnly: true });
}
}
}
};
__publicField(_TUICustomerServer, "isInitialized");
__publicField(_TUICustomerServer, "instance");
__publicField(_TUICustomerServer, "loggedInUserID");
let TUICustomerServer = _TUICustomerServer;
exports.TUICustomerServer = TUICustomerServer;