@tencentcloud/ai-desk-customer-vue 1.4.0 → 1.5.1
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 +17 -0
- package/assets/feedback_dialog_close.svg +3 -0
- package/assets/feedback_dislike_after.svg +3 -0
- package/assets/feedback_dislike_before.svg +10 -0
- package/assets/feedback_dislike_hover.svg +10 -0
- package/assets/feedback_like_after.svg +14 -0
- package/assets/feedback_like_before.svg +10 -0
- package/assets/feedback_like_hover.svg +10 -0
- package/assets/green_check.svg +4 -0
- package/components/CustomerServiceChat/index-web.vue +18 -0
- package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +1 -0
- package/components/CustomerServiceChat/message-input/message-input-quote/index.vue +29 -20
- package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +35 -35
- package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +1 -1
- package/components/CustomerServiceChat/message-list/index-web.vue +5 -0
- package/components/CustomerServiceChat/message-list/message-elements/feedback-button.vue +369 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +30 -11
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/marked.ts +17 -10
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue +13 -5
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-concurrency-limit.vue +1 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +8 -6
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-ivr-form/form-branch.vue +117 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/{message-single-form → message-ivr-form}/form-input.vue +65 -111
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/{message-single-form → message-ivr-form}/index.vue +7 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/branch-pc.vue +5 -3
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/index.vue +3 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/input-mobile.vue +1 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/label-mobile.vue +4 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/label-pc.vue +5 -3
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-mobile.vue +17 -5
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-pc.vue +21 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-order.vue +2 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-product-card.vue +2 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-number.vue +9 -13
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-star.vue +11 -18
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-robot-welcome.vue +1 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue +14 -10
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-timeout-warning.vue +29 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/styles/common.scss +1 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-plugin-web.vue +22 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue +6 -24
- package/components/CustomerServiceChat/message-list/message-elements/message-text.vue +0 -9
- package/components/CustomerServiceChat/message-list/message-elements/read-status/index.vue +31 -20
- package/components/CustomerServiceChat/message-list/message-elements/simple-message-list/index.vue +2 -1
- package/components/common/Toast/index-web.vue +4 -2
- package/constant.ts +11 -1
- package/locales/en/aidesk.ts +28 -16
- package/locales/fil/aidesk.ts +28 -16
- package/locales/id/aidesk.ts +28 -16
- package/locales/ja/aidesk.ts +28 -16
- package/locales/ms/aidesk.ts +28 -16
- package/locales/ru/aidesk.ts +28 -16
- package/locales/th/aidesk.ts +28 -16
- package/locales/vi/aidesk.ts +28 -16
- package/locales/zh_cn/aidesk.ts +28 -16
- package/locales/zh_tw/aidesk.ts +28 -16
- package/package.json +1 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form/form-branch.vue +0 -68
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="message-rating-star">
|
|
3
|
-
<p class="rating-head">
|
|
3
|
+
<p class="rating-head-tail">
|
|
4
4
|
{{ props.ratingTemplate.head }}
|
|
5
5
|
</p>
|
|
6
6
|
<div class="rating-card">
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
</div>
|
|
50
50
|
<p
|
|
51
51
|
v-if="hasReply"
|
|
52
|
-
class="rating-tail"
|
|
52
|
+
class="rating-head-tail"
|
|
53
53
|
:style="{
|
|
54
54
|
marginTop: 20 + 'px',
|
|
55
55
|
}"
|
|
@@ -125,17 +125,15 @@ export default {
|
|
|
125
125
|
});
|
|
126
126
|
|
|
127
127
|
const setValue = (val: number) => {
|
|
128
|
-
if (hasReply.value) {
|
|
129
|
-
|
|
128
|
+
if (!hasReply.value && !hasExpire.value) {
|
|
129
|
+
value.value = val;
|
|
130
130
|
}
|
|
131
|
-
value.value = val;
|
|
132
131
|
};
|
|
133
132
|
|
|
134
133
|
const setHoverValue = (value: number) => {
|
|
135
|
-
if (hasReply.value) {
|
|
136
|
-
|
|
134
|
+
if (!hasReply.value && !hasExpire.value) {
|
|
135
|
+
hoverValue.value = value;
|
|
137
136
|
}
|
|
138
|
-
hoverValue.value = value;
|
|
139
137
|
};
|
|
140
138
|
|
|
141
139
|
const submitRatingStar = async () => {
|
|
@@ -176,16 +174,11 @@ export default {
|
|
|
176
174
|
};
|
|
177
175
|
</script>
|
|
178
176
|
<style lang="scss" scoped>
|
|
179
|
-
.rating-head {
|
|
180
|
-
font-size: 14px;
|
|
181
|
-
font-weight: 400;
|
|
182
|
-
color: #999;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
.rating-tail {
|
|
177
|
+
.rating-head-tail {
|
|
186
178
|
font-size: 14px;
|
|
187
179
|
font-weight: 400;
|
|
188
180
|
color: #999;
|
|
181
|
+
word-break: break-word;
|
|
189
182
|
}
|
|
190
183
|
|
|
191
184
|
.card-title {
|
|
@@ -199,11 +192,11 @@ export default {
|
|
|
199
192
|
border-radius: 20px;
|
|
200
193
|
border: 0;
|
|
201
194
|
margin-top: 10px;
|
|
202
|
-
|
|
203
|
-
padding
|
|
204
|
-
|
|
195
|
+
min-width: 240px;
|
|
196
|
+
padding: 10px;
|
|
205
197
|
button:disabled {
|
|
206
198
|
background: #d8d8d8;
|
|
199
|
+
cursor: default;
|
|
207
200
|
}
|
|
208
201
|
}
|
|
209
202
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
<div>
|
|
3
|
+
<div class="message-stream">
|
|
4
|
+
<span v-if="isCursorBlinking" class="blinking-cursor">|</span>
|
|
5
|
+
<pre ref="preRef" :class="['message-marked']" v-html="displayedContent" />
|
|
6
|
+
</div>
|
|
7
|
+
<div v-if="image" class="rich-image-previewer" @click="closeImage">
|
|
8
|
+
<img
|
|
9
|
+
class="rich-image-preview"
|
|
10
|
+
:src="imageSrc"
|
|
11
|
+
/>
|
|
12
|
+
</div>
|
|
11
13
|
</div>
|
|
12
14
|
</template>
|
|
13
15
|
|
|
@@ -146,9 +148,11 @@ const closeImage = () => {
|
|
|
146
148
|
<style lang="scss" scoped>
|
|
147
149
|
.message-stream {
|
|
148
150
|
overflow-wrap: break-word;
|
|
149
|
-
word-break:
|
|
151
|
+
word-break: normal;
|
|
150
152
|
white-space: normal;
|
|
151
153
|
font-size: 14px;
|
|
154
|
+
font-family: PingFangSC-Regular;
|
|
155
|
+
user-select: text;
|
|
152
156
|
}
|
|
153
157
|
|
|
154
158
|
.blinking-cursor {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
{{ props.payload.content }}
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script lang="ts">
|
|
8
|
+
import { customerServicePayloadType } from '../../../../../../interface';
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
payload: customerServicePayloadType;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default {
|
|
15
|
+
props: {
|
|
16
|
+
payload: {
|
|
17
|
+
type: Object as () => customerServicePayloadType,
|
|
18
|
+
default: () => ({}),
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
setup(props: Props) {
|
|
22
|
+
return {
|
|
23
|
+
props,
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
</script>
|
|
28
|
+
<style lang="scss" scoped>
|
|
29
|
+
</style>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<MessagePluginLayout
|
|
3
3
|
:message="props.message"
|
|
4
|
+
:blinkMessageIDList="props.blinkMessageIDList"
|
|
4
5
|
:showStyle="pluginMessageType.showStyle"
|
|
5
6
|
:bubbleClassNameList="[
|
|
6
7
|
pluginMessageType.pluginType === 'room' ? 'message-bubble-room' : '',
|
|
@@ -14,8 +15,12 @@
|
|
|
14
15
|
v-if="pluginMessageType.pluginType === 'customer'"
|
|
15
16
|
:message="props.message"
|
|
16
17
|
@heightChanged="onHeightChanged"
|
|
18
|
+
@messageSent="onMessageSent"
|
|
17
19
|
/>
|
|
18
20
|
</template>
|
|
21
|
+
<template #messageTip>
|
|
22
|
+
<TimeoutWarning :payload="payload"/>
|
|
23
|
+
</template>
|
|
19
24
|
</MessagePluginLayout>
|
|
20
25
|
</template>
|
|
21
26
|
|
|
@@ -29,6 +34,10 @@ import {
|
|
|
29
34
|
} from './message-desk-elements/index';
|
|
30
35
|
import MessagePluginLayout from './message-plugin-layout-web.vue';
|
|
31
36
|
import MessageCustomerService from './message-desk-elements/message-desk.vue';
|
|
37
|
+
import { CUSTOM_MESSAGE_SRC } from '../../../../../constant';
|
|
38
|
+
import TimeoutWarning from './message-desk-elements/message-timeout-warning.vue';
|
|
39
|
+
import { customerServicePayloadType } from '../../../../../interface';
|
|
40
|
+
import { JSONToObject } from '../../../../../utils/index';
|
|
32
41
|
const { computed } = vue;
|
|
33
42
|
|
|
34
43
|
interface IProps {
|
|
@@ -46,18 +55,26 @@ const emits = defineEmits([
|
|
|
46
55
|
'handleToggleMessageItem',
|
|
47
56
|
'handleH5LongPress',
|
|
48
57
|
'heightChanged',
|
|
58
|
+
'messageSent',
|
|
49
59
|
]);
|
|
50
60
|
const messageModel = computed(() => TUIStore.getMessageModel(props.message.ID));
|
|
51
61
|
|
|
62
|
+
const payload = computed<customerServicePayloadType>(() => {
|
|
63
|
+
return props.message && JSONToObject(props.message?.payload?.data);
|
|
64
|
+
});
|
|
65
|
+
|
|
52
66
|
const pluginMessageType = computed<{ pluginType: string; showStyle: string }>(
|
|
53
67
|
() => {
|
|
54
68
|
let typeObj = { pluginType: '', showStyle: '' };
|
|
55
69
|
if (isCustomerServicePluginMessage(messageModel.value as any)) {
|
|
70
|
+
const src = payload.value.src;
|
|
56
71
|
typeObj = {
|
|
57
|
-
pluginType: 'customer',
|
|
72
|
+
pluginType: src === CUSTOM_MESSAGE_SRC.TIMEOUT_WARNING ? 'customer_tip' : 'customer',
|
|
58
73
|
showStyle: isCustomServiceMessageInvisible(messageModel.value as any)
|
|
59
74
|
? ''
|
|
60
|
-
:
|
|
75
|
+
: src === CUSTOM_MESSAGE_SRC.TIMEOUT_WARNING
|
|
76
|
+
? 'tip'
|
|
77
|
+
: 'bubble',
|
|
61
78
|
};
|
|
62
79
|
}
|
|
63
80
|
return typeObj;
|
|
@@ -81,6 +98,9 @@ const handleH5LongPress = (e: any, message: IMessageModel, type: string) => {
|
|
|
81
98
|
const onHeightChanged = () => {
|
|
82
99
|
emits('heightChanged');
|
|
83
100
|
};
|
|
101
|
+
const onMessageSent = () => {
|
|
102
|
+
emits('messageSent');
|
|
103
|
+
};
|
|
84
104
|
</script>
|
|
85
105
|
|
|
86
106
|
<style lang="scss" scoped>
|
package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div style="display:flex;width: fit-content;">
|
|
3
|
-
<div v-if="hasQuoteContent&&isH5" :class="{
|
|
4
|
-
'mobile-left-box': true,
|
|
5
|
-
reverse: message.flow === 'out',
|
|
6
|
-
in:message.flow === 'in',
|
|
7
|
-
}"></div>
|
|
8
3
|
<div
|
|
9
4
|
v-if="hasQuoteContent"
|
|
10
5
|
:class="{
|
|
@@ -218,8 +213,8 @@ async function scrollToOriginalMessage() {
|
|
|
218
213
|
padding: 12px;
|
|
219
214
|
font-size: 12px;
|
|
220
215
|
color: #666;
|
|
221
|
-
|
|
222
|
-
word-break:
|
|
216
|
+
overflow-wrap: break-word;
|
|
217
|
+
word-break: normal;
|
|
223
218
|
background-color: #fbfbfb;
|
|
224
219
|
border-radius: 8px;
|
|
225
220
|
line-height: 16.8px;
|
|
@@ -233,12 +228,12 @@ async function scrollToOriginalMessage() {
|
|
|
233
228
|
.reverse.reference-content {
|
|
234
229
|
margin-right: 44px;
|
|
235
230
|
margin-left: auto;
|
|
236
|
-
border-radius:
|
|
231
|
+
border-radius: 8px;
|
|
237
232
|
}
|
|
238
233
|
.isMobile.reference-content.in {
|
|
239
234
|
margin-right: auto;
|
|
240
235
|
background: #f3f4f7;
|
|
241
|
-
border-radius:
|
|
236
|
+
border-radius: 8px;
|
|
242
237
|
}
|
|
243
238
|
.isMobile.reverse.reference-content {
|
|
244
239
|
margin-right: 10px;
|
|
@@ -247,20 +242,6 @@ async function scrollToOriginalMessage() {
|
|
|
247
242
|
color: white;
|
|
248
243
|
|
|
249
244
|
}
|
|
250
|
-
.mobile-left-box {
|
|
251
|
-
display:inline-block;
|
|
252
|
-
background: #FFFFFF33;
|
|
253
|
-
width: 5px;
|
|
254
|
-
margin-top: 4px;
|
|
255
|
-
border-radius: 8px 0 0 8px;
|
|
256
|
-
}
|
|
257
|
-
.mobile-left-box.in {
|
|
258
|
-
display:inline-block;
|
|
259
|
-
background: #e1e2e5;
|
|
260
|
-
width: 5px;
|
|
261
|
-
margin-top: 4px;
|
|
262
|
-
border-radius: 8px 0 0 8px;
|
|
263
|
-
}
|
|
264
245
|
.revoked-text {
|
|
265
246
|
color: #999;
|
|
266
247
|
}
|
|
@@ -274,7 +255,8 @@ async function scrollToOriginalMessage() {
|
|
|
274
255
|
.max-double-line {
|
|
275
256
|
font-family: PingFangSC-Regular;
|
|
276
257
|
font-size: 14px;
|
|
277
|
-
|
|
258
|
+
overflow-wrap: break-word;
|
|
259
|
+
word-break: normal;
|
|
278
260
|
overflow: hidden;
|
|
279
261
|
display: -webkit-box;
|
|
280
262
|
max-height: 33px;
|
|
@@ -84,15 +84,6 @@ watchEffect(() => {
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
.text {
|
|
87
|
-
white-space: pre-wrap;
|
|
88
|
-
font-size: 14px;
|
|
89
|
-
text-size-adjust: none;
|
|
90
|
-
font-family: PingFangSC-Regular;
|
|
91
|
-
overflow-wrap: break-word;
|
|
92
|
-
word-break: break-all;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.text:lang(en) {
|
|
96
87
|
white-space: pre-wrap;
|
|
97
88
|
font-size: 14px;
|
|
98
89
|
text-size-adjust: none;
|
|
@@ -18,24 +18,24 @@ import TUIChatEngine, {
|
|
|
18
18
|
IMessageModel,
|
|
19
19
|
TUITranslateService,
|
|
20
20
|
} from '@tencentcloud/chat-uikit-engine';
|
|
21
|
+
import { ReadState } from '../../../../../constant';
|
|
21
22
|
const { computed, ref, onMounted, onUnmounted } = vue;
|
|
22
23
|
|
|
23
24
|
interface IProps {
|
|
24
25
|
message: IMessageModel;
|
|
26
|
+
prevStatus: ReadState;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
const props = withDefaults(defineProps<IProps>(), {
|
|
28
30
|
message: () => ({} as IMessageModel),
|
|
31
|
+
prevStatus: ReadState.Unread,
|
|
29
32
|
});
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Unread,
|
|
35
|
-
AllRead,
|
|
36
|
-
NotShow,
|
|
37
|
-
PartiallyRead,
|
|
33
|
+
const isInHumanService = ref(false);
|
|
34
|
+
|
|
35
|
+
interface IEmits {
|
|
36
|
+
(e: 'setStatus', status:ReadState): void;
|
|
38
37
|
}
|
|
38
|
+
const emits = defineEmits<IEmits>();
|
|
39
39
|
|
|
40
40
|
const TYPES = TUIChatEngine.TYPES;
|
|
41
41
|
// User-level read receipt toggle has the highest priority.
|
|
@@ -48,18 +48,25 @@ onMounted(() => {
|
|
|
48
48
|
TUIStore.watch(StoreName.USER, {
|
|
49
49
|
displayMessageReadReceipt: onDisplayMessageReadReceiptUpdate,
|
|
50
50
|
});
|
|
51
|
+
TUIStore.watch(StoreName.CUSTOM, {
|
|
52
|
+
isInHumanService: onInHumanServiceUpdate,
|
|
53
|
+
});
|
|
51
54
|
});
|
|
52
55
|
|
|
53
56
|
onUnmounted(() => {
|
|
54
57
|
TUIStore.unwatch(StoreName.USER, {
|
|
55
58
|
displayMessageReadReceipt: onDisplayMessageReadReceiptUpdate,
|
|
56
59
|
});
|
|
60
|
+
TUIStore.unwatch(StoreName.CUSTOM, {
|
|
61
|
+
isInHumanService: onInHumanServiceUpdate,
|
|
62
|
+
});
|
|
57
63
|
});
|
|
58
64
|
|
|
65
|
+
const onInHumanServiceUpdate = (value: boolean) => {
|
|
66
|
+
isInHumanService.value = value;
|
|
67
|
+
};
|
|
68
|
+
|
|
59
69
|
const isShowReadStatus = computed<boolean>(() => {
|
|
60
|
-
if (!ReadStatus) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
70
|
if (!isDisplayMessageReadReceipt.value) {
|
|
64
71
|
return false;
|
|
65
72
|
}
|
|
@@ -127,23 +134,27 @@ const readState = computed<ReadState>(() => {
|
|
|
127
134
|
return isPeerRead ? ReadState.Read : ReadState.Unread;
|
|
128
135
|
}
|
|
129
136
|
} else if (conversationType === 'GROUP') {
|
|
130
|
-
if (needReadReceipt) {
|
|
131
|
-
if (readCount === 0) {
|
|
132
|
-
return ReadState.Unread;
|
|
133
|
-
} else if (unreadCount === 0) {
|
|
134
|
-
return ReadState.AllRead;
|
|
135
|
-
} else {
|
|
136
|
-
return ReadState.PartiallyRead;
|
|
137
|
-
}
|
|
138
|
-
} else {
|
|
137
|
+
if (!needReadReceipt) {
|
|
139
138
|
return ReadState.NotShow;
|
|
140
139
|
}
|
|
140
|
+
if (!isInHumanService.value) {
|
|
141
|
+
return ReadState.AllRead;
|
|
142
|
+
}
|
|
143
|
+
// 特殊判断: 群里只有1人时设置已读 (未接到人工时)
|
|
144
|
+
if (readCount === 0) {
|
|
145
|
+
return props.prevStatus === ReadState.AllRead ? ReadState.AllRead : ReadState.Unread;
|
|
146
|
+
} else if (unreadCount === 0) {
|
|
147
|
+
return ReadState.AllRead;
|
|
148
|
+
} else {
|
|
149
|
+
return ReadState.PartiallyRead;
|
|
150
|
+
}
|
|
141
151
|
}
|
|
142
152
|
return ReadState.Unread;
|
|
143
153
|
});
|
|
144
154
|
|
|
145
155
|
const readStatusText = computed(() => {
|
|
146
156
|
const { readCount = 0 } = props.message.readReceiptInfo;
|
|
157
|
+
emits('setStatus', readState.value);
|
|
147
158
|
switch (readState.value) {
|
|
148
159
|
case ReadState.Read:
|
|
149
160
|
return TUITranslateService.t('TUIChat.已读');
|
|
@@ -127,7 +127,8 @@ const handleStyle = (type?: string) => {
|
|
|
127
127
|
border-radius: 3px;
|
|
128
128
|
padding: 10px 15px;
|
|
129
129
|
width: fit-content;
|
|
130
|
-
|
|
130
|
+
overflow-wrap: break-word;
|
|
131
|
+
word-break: normal;
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
|
|
@@ -148,7 +149,8 @@ const handleStyle = (type?: string) => {
|
|
|
148
149
|
font-size: 14px;
|
|
149
150
|
letter-spacing: 0;
|
|
150
151
|
text-align: center;
|
|
151
|
-
|
|
152
|
+
overflow-wrap: break-word;
|
|
153
|
+
word-break: normal;
|
|
152
154
|
}
|
|
153
155
|
}
|
|
154
156
|
|
package/constant.ts
CHANGED
|
@@ -33,6 +33,7 @@ export const CUSTOM_MESSAGE_SRC = {
|
|
|
33
33
|
MULTI_FORM: '33',
|
|
34
34
|
THINKING: '35',
|
|
35
35
|
CONCURRENCY_LIMIT: '36',
|
|
36
|
+
TIMEOUT_WARNING: '37',
|
|
36
37
|
};
|
|
37
38
|
|
|
38
39
|
// im message extra type
|
|
@@ -140,6 +141,7 @@ export const WHITE_LIST = [
|
|
|
140
141
|
CUSTOM_MESSAGE_SRC.MULTI_FORM,
|
|
141
142
|
CUSTOM_MESSAGE_SRC.CONCURRENCY_LIMIT,
|
|
142
143
|
CUSTOM_MESSAGE_SRC.ORDER,
|
|
144
|
+
CUSTOM_MESSAGE_SRC.TIMEOUT_WARNING,
|
|
143
145
|
];
|
|
144
146
|
|
|
145
147
|
export const TOOLBAR_BUTTON_TYPE = {
|
|
@@ -155,4 +157,12 @@ export const INPUT_TOOLBAR_TYPE = {
|
|
|
155
157
|
RATING: 'rating',
|
|
156
158
|
}
|
|
157
159
|
|
|
158
|
-
export const USER_DEFAULT_AVATAR = 'https://web.sdk.qcloud.com/im/desk/assets/user_default_avatar.png';
|
|
160
|
+
export const USER_DEFAULT_AVATAR = 'https://web.sdk.qcloud.com/im/desk/assets/user_default_avatar.png';
|
|
161
|
+
|
|
162
|
+
export enum ReadState {
|
|
163
|
+
Read,
|
|
164
|
+
Unread,
|
|
165
|
+
AllRead,
|
|
166
|
+
NotShow,
|
|
167
|
+
PartiallyRead,
|
|
168
|
+
}
|
package/locales/en/aidesk.ts
CHANGED
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
const AIDesk = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
"结束人工会话": "End human service",
|
|
3
|
+
"转人工服务": "Human service",
|
|
4
|
+
"跳转": "Goto",
|
|
5
|
+
"立即填写": "Fill now",
|
|
6
|
+
"已提交": "Submitted",
|
|
7
|
+
"提交": "Submit",
|
|
8
|
+
"查看内容": "View content",
|
|
9
|
+
"请填写必填项": "Please fill in the required fields",
|
|
10
|
+
"Hi,我是": "Hi, I'm ",
|
|
11
|
+
"请输入内容":"Please enter the content",
|
|
12
|
+
"如果满意请给好评哦~":"If you're satisfied, please give a good review~",
|
|
13
|
+
"请对本次服务进行评价": "Please rate this service",
|
|
14
|
+
"提交评价": "Feedback",
|
|
15
|
+
"并发限制": "There are currently too many users accessing the service. Please try again later",
|
|
16
|
+
"分支选项异常": "Content is abnormal, please check the task flow configuration",
|
|
17
|
+
"服务评价": "Feedback",
|
|
18
|
+
"满意":"Satisfied",
|
|
19
|
+
"不满意":"Dissatisfied",
|
|
20
|
+
"感谢您的反馈,我们会持续优化改进":"Thank you for your feedback, we will continue to improve",
|
|
21
|
+
"您遇到了哪方面的问题":"What problem did you encounter",
|
|
22
|
+
"其他反馈内容":"Other feedback",
|
|
23
|
+
"取消":"Cancel",
|
|
24
|
+
"答非所问":"Irrelevant answer",
|
|
25
|
+
"未匹配相关内容":"No relevant content matched",
|
|
26
|
+
"信息错误":"Incorrect information",
|
|
27
|
+
"上下文理解错误":"Context misunderstanding",
|
|
28
|
+
"格式不规范":"Improper format",
|
|
29
|
+
"内容不完整":"Incomplete content",
|
|
18
30
|
}
|
|
19
31
|
export default AIDesk;
|
package/locales/fil/aidesk.ts
CHANGED
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
const AIDesk = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
"结束人工会话":"Tapusin ang Usapan",
|
|
3
|
+
"转人工服务": "Ilipat sa Serbisyo ng Tao",
|
|
4
|
+
"跳转":"Tumalon",
|
|
5
|
+
"立即填写": "Punan Agad",
|
|
6
|
+
"已提交": "Naisumite Na",
|
|
7
|
+
"提交": "Isumite",
|
|
8
|
+
"查看内容": "Tingnan ang Nilalaman",
|
|
9
|
+
"请填写必填项": "Mangyaring punan ang mga kinakailangang field",
|
|
10
|
+
"Hi,我是": "Hi, ako ",
|
|
11
|
+
"请输入内容":"Pakilagay ang nilalaman",
|
|
12
|
+
"如果满意请给好评哦~":"Kung nasiyahan ka, mangyaring magbigay ng magandang pagsusuri~",
|
|
13
|
+
"请对本次服务进行评价": "Mangyaring suriin ang serbisyong ito",
|
|
14
|
+
"提交评价": "Ipasa ang pagsusuri",
|
|
15
|
+
"并发限制": "Maraming tao ang naghahanap ng tulong ngayon, subukan muli mamaya",
|
|
16
|
+
"分支选项异常": "Ang nilalaman ay abnormal, pakisuri ang configuration ng task flow",
|
|
17
|
+
"服务评价": "Pagsusuri ng Serbisyo",
|
|
18
|
+
"满意":"Nasisiyahan",
|
|
19
|
+
"不满意":"Hindi nasisiyahan",
|
|
20
|
+
"感谢您的反馈,我们会持续优化改进":"Salamat sa iyong feedback, patuloy naming pagbubutihin",
|
|
21
|
+
"您遇到了哪方面的问题":"Anong problema ang iyong naranasan",
|
|
22
|
+
"其他反馈内容":"Iba pang feedback",
|
|
23
|
+
"取消":"Kanselahin",
|
|
24
|
+
"答非所问":"Hindi nauugnay na sagot",
|
|
25
|
+
"未匹配相关内容":"Walang katugmang nilalaman",
|
|
26
|
+
"信息错误":"Maling impormasyon",
|
|
27
|
+
"上下文理解错误":"Maling pag-unawa sa konteksto",
|
|
28
|
+
"格式不规范":"Hindi tamang pormat",
|
|
29
|
+
"内容不完整":"Hindi kumpletong nilalaman",
|
|
18
30
|
}
|
|
19
31
|
export default AIDesk;
|
package/locales/id/aidesk.ts
CHANGED
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
const AIDesk = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
"结束人工会话": "Selesai",
|
|
3
|
+
"转人工服务": "Layanan manusia",
|
|
4
|
+
"跳转": "Goto",
|
|
5
|
+
"立即填写": "Isi sekarang",
|
|
6
|
+
"已提交": "Terkirim",
|
|
7
|
+
"提交": "Kirim",
|
|
8
|
+
"查看内容": "Lihat konten",
|
|
9
|
+
"请填写必填项": "Harap isi bidang yang wajib diisi",
|
|
10
|
+
"Hi,我是": "Hai, saya adalah ",
|
|
11
|
+
"请输入内容":"Silakan masukkan konten",
|
|
12
|
+
"如果满意请给好评哦~":"Jika Anda puas, silakan berikan ulasan yang bagus~",
|
|
13
|
+
"请对本次服务进行评价": "Silakan beri penilaian untuk layanan ini",
|
|
14
|
+
"提交评价": "Kirim Ulasan",
|
|
15
|
+
"服务评价": "Ulasan Layanan",
|
|
16
|
+
"并发限制": "Saat ini banyak pengguna yang mengakses. Mohon coba lagi nanti",
|
|
17
|
+
"分支选项异常": "Konten tidak normal, silakan periksa konfigurasi alur tugas",
|
|
18
|
+
"满意":"Puas",
|
|
19
|
+
"不满意":"Tidak puas",
|
|
20
|
+
"感谢您的反馈,我们会持续优化改进":"Terima kasih atas masukan Anda, kami akan terus memperbaiki",
|
|
21
|
+
"您遇到了哪方面的问题":"Masalah apa yang Anda hadapi",
|
|
22
|
+
"其他反馈内容":"Masukan lainnya",
|
|
23
|
+
"取消":"Batal",
|
|
24
|
+
"答非所问":"Jawaban tidak relevan",
|
|
25
|
+
"未匹配相关内容":"Tidak ada konten yang cocok",
|
|
26
|
+
"信息错误":"Informasi salah",
|
|
27
|
+
"上下文理解错误":"Kesalahan pemahaman konteks",
|
|
28
|
+
"格式不规范":"Format tidak standar",
|
|
29
|
+
"内容不完整":"Konten tidak lengkap",
|
|
18
30
|
}
|
|
19
31
|
export default AIDesk;
|