@tencentcloud/ai-desk-customer-vue 1.1.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -3
- package/assets/customer_avatar.png +0 -0
- package/assets/face.svg +10 -0
- package/assets/files.svg +5 -0
- package/assets/image.svg +8 -0
- package/assets/rating_tool_icon.svg +5 -0
- package/assets/rating_tool_icon_h5.svg +1 -0
- package/assets/video.svg +8 -0
- package/assets/video_h5.svg +1 -0
- package/components/CustomerServiceChat/chat-header/index-web.vue +16 -14
- package/components/CustomerServiceChat/index-web.vue +72 -16
- package/components/CustomerServiceChat/message-input/index-web.vue +31 -5
- package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +24 -0
- package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +1 -1
- package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/index.vue +1 -1
- package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.vue +6 -8
- package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.vue +11 -16
- package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +61 -18
- package/components/CustomerServiceChat/message-input-toolbar/rating-tool/index.vue +72 -0
- package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/h5.scss +10 -1
- package/components/CustomerServiceChat/message-input-toolbar/user-define-input-tool.vue +80 -0
- package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.vue +9 -14
- package/components/CustomerServiceChat/message-list/index-web.vue +34 -6
- package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +65 -19
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/marked.ts +1 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue +30 -11
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-concurrency-limit.vue +40 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +29 -7
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/branch-pc.vue +107 -73
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/index.vue +53 -52
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/input-mobile.vue +73 -80
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/label-mobile.vue +21 -24
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/radios-mobile.vue +115 -116
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/input-pc.vue +69 -73
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/label-pc.vue +21 -25
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/radio-pc.vue +87 -77
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-mobile.vue +213 -200
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-pc.vue +122 -113
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/index.vue +7 -7
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-order.vue +141 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rich-text.vue +5 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue +25 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-file.vue +1 -1
- package/components/CustomerServiceChat/message-list/scroll-button/index.vue +18 -6
- package/components/CustomerServiceChat/message-list/style/web.scss +2 -1
- package/components/CustomerServiceChat/message-toolbar-button/index.vue +111 -42
- package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-end-human-service.vue +59 -0
- package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-human-service.vue +55 -0
- package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-service-rating.vue +59 -0
- package/components/common/BottomPopup/index.vue +1 -1
- package/constant.ts +25 -4
- package/interface.ts +35 -5
- package/locales/en/aidesk.ts +6 -3
- package/locales/fil/aidesk.ts +4 -1
- package/locales/id/aidesk.ts +7 -4
- package/locales/ja/aidesk.ts +5 -2
- package/locales/ms/aidesk.ts +5 -2
- package/locales/ru/aidesk.ts +6 -3
- package/locales/th/aidesk.ts +4 -1
- package/locales/vi/aidesk.ts +5 -2
- package/locales/zh_cn/aidesk.ts +5 -3
- package/locales/zh_tw/aidesk.ts +4 -1
- package/package.json +1 -1
- package/server.ts +11 -2
- package/utils/state.js +30 -0
- package/utils/utils.ts +48 -1
- package/assets/face.png +0 -0
- package/assets/files.png +0 -0
- package/assets/image.png +0 -0
- package/assets/video.png +0 -0
package/server.ts
CHANGED
|
@@ -17,6 +17,9 @@ import TUIChatEngine, {
|
|
|
17
17
|
import Log from './utils/logger';
|
|
18
18
|
import { version } from './package.json'
|
|
19
19
|
import { Toast, TOAST_TYPE } from "./components/common/Toast/index-web";
|
|
20
|
+
import { switchReadStatus } from "./utils/utils";
|
|
21
|
+
import state from "./utils/state";
|
|
22
|
+
import { USER_DEFAULT_AVATAR } from "./constant";
|
|
20
23
|
|
|
21
24
|
interface IInitWithProfile {
|
|
22
25
|
SDKAppID: number,
|
|
@@ -26,19 +29,24 @@ interface IInitWithProfile {
|
|
|
26
29
|
avatar?: string,
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
interface IProfile {
|
|
33
|
+
nick?: string,
|
|
34
|
+
avatar?: string,
|
|
35
|
+
}
|
|
36
|
+
|
|
29
37
|
export default class TUICustomerServer {
|
|
30
38
|
private isLoggedIn: boolean;
|
|
31
39
|
static instance: TUICustomerServer;
|
|
32
40
|
private customerServiceAccounts: any[];
|
|
33
41
|
private loggedInUserID: string;
|
|
34
|
-
private myProfile:
|
|
42
|
+
private myProfile: IProfile;
|
|
35
43
|
constructor() {
|
|
36
44
|
TUICore.registerService(TUIConstants.TUICustomerServicePlugin.SERVICE.NAME, this);
|
|
37
45
|
TUICore.registerExtension(TUIConstants.TUIContact.EXTENSION.CONTACT_LIST.EXT_ID, this);
|
|
38
46
|
this.customerServiceAccounts = ['@customer_service_account'];
|
|
39
47
|
this.isLoggedIn = false;
|
|
40
48
|
this.loggedInUserID = '';
|
|
41
|
-
this.myProfile = {};
|
|
49
|
+
this.myProfile = { avatar: USER_DEFAULT_AVATAR };
|
|
42
50
|
}
|
|
43
51
|
|
|
44
52
|
static getInstance(): TUICustomerServer {
|
|
@@ -60,6 +68,7 @@ export default class TUICustomerServer {
|
|
|
60
68
|
this.isLoggedIn = true;
|
|
61
69
|
this.loggedInUserID = userID;
|
|
62
70
|
TUIConversationService.switchConversation('C2C@customer_service_account');
|
|
71
|
+
switchReadStatus(state.get('showReadStatus'));
|
|
63
72
|
TUIChatEngine.chat.callExperimentalAPI('isFeatureEnabledForStat', Math.pow(2, 42));
|
|
64
73
|
})
|
|
65
74
|
.catch((error) => {
|
package/utils/state.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const state = {
|
|
2
|
+
data: {},
|
|
3
|
+
// listeners: [],
|
|
4
|
+
|
|
5
|
+
// 获取数据
|
|
6
|
+
get(key) {
|
|
7
|
+
return this.data[key];
|
|
8
|
+
},
|
|
9
|
+
|
|
10
|
+
// 设置数据
|
|
11
|
+
set(key, value) {
|
|
12
|
+
this.data[key] = value;
|
|
13
|
+
// this.notifyListeners();
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
// // 监听数据变化
|
|
17
|
+
// subscribe(callback) {
|
|
18
|
+
// this.listeners.push(callback);
|
|
19
|
+
// return () => {
|
|
20
|
+
// this.listeners = this.listeners.filter(cb => cb !== callback);
|
|
21
|
+
// };
|
|
22
|
+
// },
|
|
23
|
+
|
|
24
|
+
// // 通知所有监听器
|
|
25
|
+
// notifyListeners() {
|
|
26
|
+
// this.listeners.forEach(cb => cb(this.data));
|
|
27
|
+
// }
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default state;
|
package/utils/utils.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import TUIChatEngine, {
|
|
1
|
+
import TUIChatEngine, {
|
|
2
|
+
TUITranslateService,
|
|
3
|
+
TUIStore,
|
|
4
|
+
StoreName,
|
|
5
|
+
IMessageModel,
|
|
6
|
+
TUIUserService,
|
|
7
|
+
IConversationModel,
|
|
8
|
+
} from '@tencentcloud/chat-uikit-engine';
|
|
9
|
+
import Log from './logger';
|
|
2
10
|
|
|
3
11
|
export function deepCopy(data: any, hash = new WeakMap()) {
|
|
4
12
|
if (typeof data !== 'object' || data === null || data === undefined) {
|
|
@@ -159,3 +167,42 @@ export function calculateTimestamp(timestamp: number): string {
|
|
|
159
167
|
)}`;
|
|
160
168
|
}
|
|
161
169
|
}
|
|
170
|
+
|
|
171
|
+
export function getSafeUrl(url) {
|
|
172
|
+
try {
|
|
173
|
+
const decodedUrl = decodeURIComponent(url);
|
|
174
|
+
const parsedUrl = new URL(decodedUrl);
|
|
175
|
+
if (!['http:', 'https:'].includes(parsedUrl.protocol)) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// 清除 username 和 password
|
|
180
|
+
parsedUrl.username = '';
|
|
181
|
+
parsedUrl.password = '';
|
|
182
|
+
return parsedUrl.href;
|
|
183
|
+
} catch (e) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export function openSafeUrl(content: string) {
|
|
189
|
+
const safeUrl = getSafeUrl(content);
|
|
190
|
+
if (safeUrl) {
|
|
191
|
+
window.open(safeUrl, '_blank', 'noopener,noreferrer');
|
|
192
|
+
} else {
|
|
193
|
+
Log.w(`Invalid URL provided:${content}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// call after chat engine is ready
|
|
198
|
+
export function switchReadStatus(value: number) {
|
|
199
|
+
if (value !== 1) {
|
|
200
|
+
TUIUserService.switchMessageReadStatus(false);
|
|
201
|
+
} else {
|
|
202
|
+
TUIUserService.switchMessageReadStatus(true);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export function getTo(conversation: IConversationModel): string {
|
|
207
|
+
return conversation?.groupProfile?.groupID || conversation?.userProfile?.userID;
|
|
208
|
+
}
|
package/assets/face.png
DELETED
|
Binary file
|
package/assets/files.png
DELETED
|
Binary file
|
package/assets/image.png
DELETED
|
Binary file
|
package/assets/video.png
DELETED
|
Binary file
|