@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.
Files changed (70) hide show
  1. package/CHANGELOG.md +16 -3
  2. package/assets/customer_avatar.png +0 -0
  3. package/assets/face.svg +10 -0
  4. package/assets/files.svg +5 -0
  5. package/assets/image.svg +8 -0
  6. package/assets/rating_tool_icon.svg +5 -0
  7. package/assets/rating_tool_icon_h5.svg +1 -0
  8. package/assets/video.svg +8 -0
  9. package/assets/video_h5.svg +1 -0
  10. package/components/CustomerServiceChat/chat-header/index-web.vue +16 -14
  11. package/components/CustomerServiceChat/index-web.vue +72 -16
  12. package/components/CustomerServiceChat/message-input/index-web.vue +31 -5
  13. package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +24 -0
  14. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +1 -1
  15. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/index.vue +1 -1
  16. package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.vue +6 -8
  17. package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.vue +11 -16
  18. package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +61 -18
  19. package/components/CustomerServiceChat/message-input-toolbar/rating-tool/index.vue +72 -0
  20. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/h5.scss +10 -1
  21. package/components/CustomerServiceChat/message-input-toolbar/user-define-input-tool.vue +80 -0
  22. package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.vue +9 -14
  23. package/components/CustomerServiceChat/message-list/index-web.vue +34 -6
  24. package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +65 -19
  25. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/marked.ts +1 -1
  26. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue +30 -11
  27. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-concurrency-limit.vue +40 -0
  28. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +29 -7
  29. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/branch-pc.vue +107 -73
  30. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/index.vue +53 -52
  31. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/input-mobile.vue +73 -80
  32. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/label-mobile.vue +21 -24
  33. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/radios-mobile.vue +115 -116
  34. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/input-pc.vue +69 -73
  35. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/label-pc.vue +21 -25
  36. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/radio-pc.vue +87 -77
  37. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-mobile.vue +213 -200
  38. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-pc.vue +122 -113
  39. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/index.vue +7 -7
  40. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-order.vue +141 -0
  41. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rich-text.vue +5 -1
  42. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue +25 -1
  43. package/components/CustomerServiceChat/message-list/message-elements/message-file.vue +1 -1
  44. package/components/CustomerServiceChat/message-list/scroll-button/index.vue +18 -6
  45. package/components/CustomerServiceChat/message-list/style/web.scss +2 -1
  46. package/components/CustomerServiceChat/message-toolbar-button/index.vue +111 -42
  47. package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-end-human-service.vue +59 -0
  48. package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-human-service.vue +55 -0
  49. package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-service-rating.vue +59 -0
  50. package/components/common/BottomPopup/index.vue +1 -1
  51. package/constant.ts +25 -4
  52. package/interface.ts +35 -5
  53. package/locales/en/aidesk.ts +6 -3
  54. package/locales/fil/aidesk.ts +4 -1
  55. package/locales/id/aidesk.ts +7 -4
  56. package/locales/ja/aidesk.ts +5 -2
  57. package/locales/ms/aidesk.ts +5 -2
  58. package/locales/ru/aidesk.ts +6 -3
  59. package/locales/th/aidesk.ts +4 -1
  60. package/locales/vi/aidesk.ts +5 -2
  61. package/locales/zh_cn/aidesk.ts +5 -3
  62. package/locales/zh_tw/aidesk.ts +4 -1
  63. package/package.json +1 -1
  64. package/server.ts +11 -2
  65. package/utils/state.js +30 -0
  66. package/utils/utils.ts +48 -1
  67. package/assets/face.png +0 -0
  68. package/assets/files.png +0 -0
  69. package/assets/image.png +0 -0
  70. 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: object;
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, { TUITranslateService, TUIStore, StoreName, IMessageModel } from '@tencentcloud/chat-uikit-engine';
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