@tencentcloud/ai-desk-customer-vue 1.5.2 → 1.5.3
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 +6 -0
- package/README.md +316 -71
- package/components/CustomerServiceChat/emoji-config/index.ts +3 -2
- package/components/CustomerServiceChat/index-web.vue +1 -0
- package/components/CustomerServiceChat/message-input/index-web.vue +9 -2
- package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +11 -0
- package/components/CustomerServiceChat/message-input/message-input-quote/index.vue +31 -6
- package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue +18 -9
- package/components/CustomerServiceChat/utils/sendMessage.ts +5 -0
- package/interface.ts +1 -1
- package/locales/en/TUIChat.ts +2 -1
- package/locales/fil/TUIChat.ts +1 -0
- package/locales/id/TUIChat.ts +161 -160
- package/locales/ja/TUIChat.ts +162 -161
- package/locales/ms/TUIChat.ts +162 -161
- package/locales/ru/TUIChat.ts +155 -154
- package/locales/th/TUIChat.ts +162 -161
- package/locales/vi/TUIChat.ts +153 -152
- package/locales/zh_cn/TUIChat.ts +1 -0
- package/locales/zh_tw/TUIChat.ts +1 -0
- package/package.json +4 -6
- package/server.ts +42 -7
- package/utils/utils.ts +53 -0
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
<Icon
|
|
22
22
|
class="input-quote-close-icon"
|
|
23
23
|
:file="closeIcon"
|
|
24
|
-
width="
|
|
25
|
-
height="
|
|
24
|
+
width="14px"
|
|
25
|
+
height="14px"
|
|
26
26
|
@onClick="cancelQuote"
|
|
27
27
|
/>
|
|
28
28
|
</div>
|
|
@@ -42,6 +42,8 @@ import closeIcon from '../../../../assets/close-quote-icon.svg';
|
|
|
42
42
|
import { isPC,isH5 } from '../../../../utils/env';
|
|
43
43
|
import { transformTextWithKeysToEmojiNames } from '../../emoji-config';
|
|
44
44
|
import { InputDisplayType } from '../../../../interface';
|
|
45
|
+
import { getQuoteContentForDesk } from '../../../../utils/utils';
|
|
46
|
+
import { MessageQuoteTypeEnum } from '../../message-list/message-elements/message-quote/interface';
|
|
45
47
|
const { ref, computed, onMounted, onUnmounted } = vue;
|
|
46
48
|
|
|
47
49
|
interface IProps {
|
|
@@ -54,6 +56,9 @@ const props = withDefaults(defineProps<IProps>(), {
|
|
|
54
56
|
|
|
55
57
|
const TYPES = TUIChatEngine.TYPES;
|
|
56
58
|
const quoteMessage = ref<IMessageModel>();
|
|
59
|
+
const quoteMessageType = ref<number>(0);
|
|
60
|
+
|
|
61
|
+
const emits = defineEmits(['getQuoteMessageCloudCustomData']);
|
|
57
62
|
|
|
58
63
|
onMounted(() => {
|
|
59
64
|
TUIStore.watch(StoreName.CHAT, {
|
|
@@ -74,30 +79,39 @@ const quoteContentText = computed(() => {
|
|
|
74
79
|
_quoteContentText = transformTextWithKeysToEmojiNames(
|
|
75
80
|
quoteMessage.value.payload?.text,
|
|
76
81
|
);
|
|
82
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_TEXT;
|
|
77
83
|
break;
|
|
78
84
|
case TYPES.MSG_IMAGE:
|
|
79
85
|
_quoteContentText = TUITranslateService.t('TUIChat.图片');
|
|
86
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_IMAGE;
|
|
80
87
|
break;
|
|
81
88
|
case TYPES.MSG_AUDIO:
|
|
82
89
|
_quoteContentText = TUITranslateService.t('TUIChat.语音');
|
|
90
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_SOUND;
|
|
83
91
|
break;
|
|
84
92
|
case TYPES.MSG_VIDEO:
|
|
85
93
|
_quoteContentText = TUITranslateService.t('TUIChat.视频');
|
|
94
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_VIDEO;
|
|
86
95
|
break;
|
|
87
96
|
case TYPES.MSG_FILE:
|
|
88
97
|
_quoteContentText = TUITranslateService.t('TUIChat.文件');
|
|
98
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_FILE;
|
|
89
99
|
break;
|
|
90
100
|
case TYPES.MSG_CUSTOM:
|
|
91
|
-
_quoteContentText =
|
|
101
|
+
_quoteContentText = getQuoteContentForDesk(quoteMessage.value);
|
|
102
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_CUSTOM;
|
|
92
103
|
break;
|
|
93
104
|
case TYPES.MSG_FACE:
|
|
94
105
|
_quoteContentText = TUITranslateService.t('TUIChat.表情');
|
|
106
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_FACE;
|
|
95
107
|
break;
|
|
96
108
|
case TYPES.MSG_MERGER:
|
|
97
109
|
_quoteContentText = TUITranslateService.t('TUIChat.聊天记录');
|
|
110
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_MERGER;
|
|
98
111
|
break;
|
|
99
112
|
default:
|
|
100
113
|
_quoteContentText = TUITranslateService.t('TUIChat.消息');
|
|
114
|
+
quoteMessageType.value = MessageQuoteTypeEnum.TYPE_NONE;
|
|
101
115
|
break;
|
|
102
116
|
}
|
|
103
117
|
return _quoteContentText;
|
|
@@ -114,10 +128,21 @@ function onQuoteMessageUpdated(options?: {
|
|
|
114
128
|
message: IMessageModel;
|
|
115
129
|
type: string;
|
|
116
130
|
}) {
|
|
117
|
-
if (options
|
|
131
|
+
if (options && options.message && options.type === 'quote') {
|
|
118
132
|
quoteMessage.value = options.message;
|
|
133
|
+
const quoteMessageCloudCustomData = JSON.stringify({
|
|
134
|
+
messageReply: {
|
|
135
|
+
messageAbstract: quoteContentText.value,
|
|
136
|
+
messageID: quoteMessage.value.ID,
|
|
137
|
+
messageSender: quoteMessage.value.from,
|
|
138
|
+
messageTime: quoteMessage.value.time,
|
|
139
|
+
messageType: quoteMessageType.value,
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
emits('getQuoteMessageCloudCustomData', quoteMessageCloudCustomData);
|
|
119
143
|
} else {
|
|
120
144
|
quoteMessage.value = undefined;
|
|
145
|
+
emits('getQuoteMessageCloudCustomData', undefined);
|
|
121
146
|
}
|
|
122
147
|
}
|
|
123
148
|
</script>
|
|
@@ -152,7 +177,7 @@ function onQuoteMessageUpdated(options?: {
|
|
|
152
177
|
.input-quote-content-h5 {
|
|
153
178
|
display: flex;
|
|
154
179
|
justify-content: space-between;
|
|
155
|
-
background-color:
|
|
180
|
+
background-color: rgba(255, 255, 255, 0.5);
|
|
156
181
|
padding: 8px 16px 8px 8px;
|
|
157
182
|
font-size: 12px;
|
|
158
183
|
align-items: center;
|
|
@@ -197,6 +222,6 @@ function onQuoteMessageUpdated(options?: {
|
|
|
197
222
|
.input-quote-container-h5 {
|
|
198
223
|
@extend %common-container-style;
|
|
199
224
|
width:100%;
|
|
200
|
-
margin:
|
|
225
|
+
margin: 5px 0 5px 0px;
|
|
201
226
|
}
|
|
202
227
|
</style>
|
package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue
CHANGED
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
|
|
15
15
|
<div
|
|
16
16
|
v-if="isMessageRevoked"
|
|
17
|
-
class="revoked-text"
|
|
17
|
+
:class="isPC ? 'revoked-text' : ''"
|
|
18
18
|
>
|
|
19
19
|
{{ TUITranslateService.t("TUIChat.引用内容已撤回") }}
|
|
20
20
|
</div>
|
|
21
21
|
<div v-else>
|
|
22
22
|
<div v-if="isH5" class="mobile-quote-sender">
|
|
23
|
-
{{
|
|
23
|
+
{{ quoteMessageSender }}
|
|
24
24
|
</div>
|
|
25
25
|
<div
|
|
26
26
|
class="max-double-line"
|
|
27
27
|
>
|
|
28
|
-
{{ isPC ?
|
|
28
|
+
{{ isPC ? quoteMessageSender + ": "+ transformTextWithKeysToEmojiNames(messageQuoteText) : transformTextWithKeysToEmojiNames(messageQuoteText)}}
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
31
31
|
|
|
@@ -77,6 +77,7 @@ let selfAddValue = 0;
|
|
|
77
77
|
const messageQuoteText = ref<string>('');
|
|
78
78
|
const hasQuoteContent = ref(false);
|
|
79
79
|
const messageQuoteContent = ref<IQuoteContent>({} as IQuoteContent);
|
|
80
|
+
const quoteMessageSender = ref<string>('');
|
|
80
81
|
|
|
81
82
|
const isMessageRevoked = computed<boolean>(() => {
|
|
82
83
|
try {
|
|
@@ -110,6 +111,7 @@ onMounted(() => {
|
|
|
110
111
|
function performQuoteContent(params: IQuoteContent) {
|
|
111
112
|
let messageKey: string = '';
|
|
112
113
|
let quoteContent: string = '';
|
|
114
|
+
const quoteMessage = getQuoteMessage(params.messageID);
|
|
113
115
|
switch (params.messageType) {
|
|
114
116
|
case MessageQuoteTypeEnum.TYPE_TEXT:
|
|
115
117
|
messageKey = '[文本]';
|
|
@@ -145,18 +147,25 @@ function performQuoteContent(params: IQuoteContent) {
|
|
|
145
147
|
messageKey = '[消息]';
|
|
146
148
|
break;
|
|
147
149
|
}
|
|
148
|
-
if (
|
|
149
|
-
|
|
150
|
-
params.messageType
|
|
151
|
-
)
|
|
152
|
-
) {
|
|
150
|
+
if (params.messageType === MessageQuoteTypeEnum.TYPE_CUSTOM ||
|
|
151
|
+
params.messageType === MessageQuoteTypeEnum.TYPE_TEXT ||
|
|
152
|
+
params.messageType === MessageQuoteTypeEnum.TYPE_MERGER) {
|
|
153
153
|
quoteContent = params.messageAbstract;
|
|
154
154
|
}
|
|
155
|
+
quoteMessageSender.value = !quoteMessage ? messageQuoteContent.value.messageSender : (quoteMessage.nick || quoteMessage.from);
|
|
155
156
|
return quoteContent
|
|
156
157
|
? quoteContent
|
|
157
158
|
: TUITranslateService.t(`TUIChat.${messageKey}`);
|
|
158
159
|
}
|
|
159
160
|
|
|
161
|
+
function getQuoteMessage(messageID: string) {
|
|
162
|
+
const currentMessageList = TUIStore.getData(StoreName.CHAT, 'messageList');
|
|
163
|
+
let quoteMessage = currentMessageList.find(
|
|
164
|
+
message => message.ID === messageID,
|
|
165
|
+
);
|
|
166
|
+
return quoteMessage;
|
|
167
|
+
}
|
|
168
|
+
|
|
160
169
|
async function scrollToOriginalMessage() {
|
|
161
170
|
if (isMessageRevoked.value) {
|
|
162
171
|
return;
|
|
@@ -164,7 +173,7 @@ async function scrollToOriginalMessage() {
|
|
|
164
173
|
const originMessageID = messageQuoteContent.value?.messageID;
|
|
165
174
|
const currentMessageList = TUIStore.getData(StoreName.CHAT, 'messageList');
|
|
166
175
|
const isOriginalMessageInScreen = currentMessageList.some(
|
|
167
|
-
|
|
176
|
+
message => message.ID === originMessageID,
|
|
168
177
|
);
|
|
169
178
|
if (originMessageID && isOriginalMessageInScreen) {
|
|
170
179
|
try {
|
|
@@ -53,6 +53,7 @@ export const createOfflinePushInfo = (conversation: IConversationModel) => {
|
|
|
53
53
|
export const sendMessages = async (
|
|
54
54
|
messageList: ITipTapEditorContent[],
|
|
55
55
|
currentConversation: IConversationModel,
|
|
56
|
+
quoteMessageCloudCustomData?: string,
|
|
56
57
|
) => {
|
|
57
58
|
// In case of messageJumping, the sent message is automatically cleared and returns to the bottom
|
|
58
59
|
if (TUIStore.getData(StoreName.CHAT, 'messageSource')) {
|
|
@@ -71,6 +72,10 @@ export const sendMessages = async (
|
|
|
71
72
|
const sendMessageOptions = {
|
|
72
73
|
offlinePushInfo: {},
|
|
73
74
|
};
|
|
75
|
+
// handle quote message
|
|
76
|
+
if (quoteMessageCloudCustomData) {
|
|
77
|
+
options.cloudCustomData = quoteMessageCloudCustomData;
|
|
78
|
+
}
|
|
74
79
|
switch (content?.type) {
|
|
75
80
|
case 'text':
|
|
76
81
|
textMessageContent = JSON.parse(JSON.stringify(content.payload?.text));
|
package/interface.ts
CHANGED
package/locales/en/TUIChat.ts
CHANGED
|
@@ -88,7 +88,7 @@ const TUIChat = {
|
|
|
88
88
|
'已接听': 'Answered',
|
|
89
89
|
'已拒绝': 'Rejected',
|
|
90
90
|
'已同意': 'Approved',
|
|
91
|
-
'引用': '
|
|
91
|
+
'引用': 'Quote',
|
|
92
92
|
'引用失败': 'quote failed',
|
|
93
93
|
'语音': '[Voice]',
|
|
94
94
|
'语音通话': 'Voice Call',
|
|
@@ -153,6 +153,7 @@ const TUIChat = {
|
|
|
153
153
|
'您已被禁止聊天': 'you have been forbidden to speak',
|
|
154
154
|
'账号被强制下线': 'Account forcibly logged out',
|
|
155
155
|
'登录失败': 'Login failed',
|
|
156
|
+
'链接':'[Link]',
|
|
156
157
|
};
|
|
157
158
|
|
|
158
159
|
export default TUIChat;
|
package/locales/fil/TUIChat.ts
CHANGED
|
@@ -155,6 +155,7 @@ const TUIChat = {
|
|
|
155
155
|
'按Enter发送,Ctrl+Enter换行': 'Pindutin ang Enter upang ipadala, Ctrl+Enter upang pumunta ng bara',
|
|
156
156
|
'账号被强制下线': 'Ang account ay pina-force log out',
|
|
157
157
|
'登录失败': 'Hindi makapag-login',
|
|
158
|
+
'链接':'[Link]',
|
|
158
159
|
};
|
|
159
160
|
|
|
160
161
|
export default TUIChat;
|
package/locales/id/TUIChat.ts
CHANGED
|
@@ -1,164 +1,165 @@
|
|
|
1
1
|
const TUIChat = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
2
|
+
"查看内容": "Lihat konten",
|
|
3
|
+
"立即填写": "Isi sekarang",
|
|
4
|
+
"已提交": "Terkirim",
|
|
5
|
+
"不能为空": "Tidak boleh kosong",
|
|
6
|
+
"提交": "Kirim",
|
|
7
|
+
"撤回": "Tarik kembali",
|
|
8
|
+
"删除": "Hapus",
|
|
9
|
+
"复制": "Salin",
|
|
10
|
+
"重新发送": "Kirim ulang",
|
|
11
|
+
"转发": "Teruskan",
|
|
12
|
+
"引用": "Kutip",
|
|
13
|
+
"打开": "Buka",
|
|
14
|
+
"已读": "Dibaca",
|
|
15
|
+
"全部已读": "Semua dibaca",
|
|
16
|
+
"人已读": " dibaca",
|
|
17
|
+
"人未读": " belum dibaca",
|
|
18
|
+
"人关闭阅读状态": " status baca ditutup",
|
|
19
|
+
"消息详情": "Detail Pesan",
|
|
20
|
+
"关闭阅读状态": "Status baca ditutup",
|
|
21
|
+
"该消息不存在": "Pesan tidak ada",
|
|
22
|
+
"无法定位到原消息": "Tidak dapat menavigasi ke pesan asli",
|
|
23
|
+
"未读": "Belum dibaca",
|
|
24
|
+
"您": "Anda",
|
|
25
|
+
"撤回了一条消息": "menarik kembali pesan",
|
|
26
|
+
"重新编辑": "Edit ulang",
|
|
27
|
+
"我": "Saya",
|
|
28
|
+
"查看更多": "Lihat lebih banyak",
|
|
29
|
+
"转发给": "Teruskan ke",
|
|
30
|
+
"请输入消息": "Masukkan pesan",
|
|
31
|
+
"描述": "Deskripsi",
|
|
32
|
+
"经度": "Garis bujur",
|
|
33
|
+
"纬度": "Garis lintang",
|
|
34
|
+
"自定义消息": "Pesan kustom",
|
|
35
|
+
"图片": "[foto]",
|
|
36
|
+
"语音": "[suara]",
|
|
37
|
+
"视频": "[rekaman video]",
|
|
38
|
+
"表情": "[wajah]",
|
|
39
|
+
"文件": "[dokumen]",
|
|
40
|
+
"自定义": "[pesan kustom]",
|
|
41
|
+
"管理员开启全员禁言": "Admin mengaktifkan Bisukan Semua",
|
|
42
|
+
"您已被管理员禁言": "Anda telah dibisukan oleh admin",
|
|
43
|
+
"按Enter发送": "Tekan Enter untuk mengirim pesan",
|
|
44
|
+
"单击下载": "Klik untuk mengunduh",
|
|
45
|
+
'下载': 'Unduh',
|
|
46
|
+
"确认重发该消息?": "Konfirmasi untuk mengirim ulang pesan?",
|
|
47
|
+
"取消": "Batal",
|
|
48
|
+
"确定": "Kirim",
|
|
49
|
+
"对方正在输入": "Sedang mengetik...",
|
|
50
|
+
"回到最新位置": "Kembali ke lokasi terbaru",
|
|
51
|
+
"条新消息": " pesan baru",
|
|
52
|
+
"点此投诉": "Keluhan",
|
|
53
|
+
"语音通话": "Panggilan Suara",
|
|
54
|
+
"视频通话": "Panggilan Video",
|
|
55
|
+
"发起群语音": "Mulai panggilan suara grup",
|
|
56
|
+
"发起群视频": "Mulai panggilan video grup",
|
|
57
|
+
"已接听": "Dijawab",
|
|
58
|
+
"拒绝通话": "Tolak Panggilan",
|
|
59
|
+
"无应答": "Tidak Ada Jawaban",
|
|
60
|
+
"取消通话": "Batalkan Panggilan",
|
|
61
|
+
"发起通话": "Mulai Panggilan",
|
|
62
|
+
"结束群聊": "Akhiri Panggilan Grup",
|
|
63
|
+
"通话时长": "Durasi",
|
|
64
|
+
"欢迎使用TUICallKit": "Selamat datang di TUICallKit",
|
|
65
|
+
"检测到您暂未集成TUICallKit,无法体验音视频通话功能": "Terdeteksi bahwa Anda belum mengintegrasikan TUI CallKit, sehingga Anda tidak dapat merasakan panggilan audio dan video.",
|
|
66
|
+
"请点击": "Silakan klik",
|
|
67
|
+
"集成TUICallKit": " Integrasikan TUICallKit ",
|
|
68
|
+
"开通腾讯实时音视频服务": "Integrasi Komunikasi Real-Time Tencent",
|
|
69
|
+
"进行体验": "untuk merasakan.",
|
|
70
|
+
"您当前购买使用的套餐包暂未开通此功能": "Paket yang Anda beli tidak mendukung kemampuan ini.",
|
|
71
|
+
"系统消息": "Bot",
|
|
72
|
+
"转人工服务": "layanan manusia",
|
|
73
|
+
'点击处理': 'Klik Proses',
|
|
74
|
+
'发送失败': 'Gagal mengirim',
|
|
75
|
+
'复制成功': 'Berhasil disalin ke clipboard',
|
|
76
|
+
'回复': 'Balas',
|
|
77
|
+
'回复详情': 'Detail Balasan',
|
|
78
|
+
'拒绝': 'Tolak',
|
|
79
|
+
'聊天记录': 'Riwayat Obrolan',
|
|
80
|
+
'内容包含敏感词汇': 'Konten mengandung kata-kata sensitif',
|
|
81
|
+
'您当前购买使用的套餐包暂未开通群消息已读回执功能': 'Paket yang Anda beli saat ini belum mengaktifkan fungsi resi baca pesan grup',
|
|
82
|
+
'您当前购买使用的套餐包暂未开通在线用户列表功能': 'Paket yang Anda beli saat ini belum mengaktifkan fungsi daftar pengguna online',
|
|
83
|
+
'您有': 'Anda memiliki',
|
|
84
|
+
'涉及敏感内容': 'Melibatkan konten sensitif',
|
|
85
|
+
'申请加入': 'Ajukan untuk bergabung',
|
|
86
|
+
'条回复': 'balasan',
|
|
87
|
+
'条入群申请': 'permintaan untuk bergabung dengan grup',
|
|
88
|
+
'同意': 'Setuju',
|
|
89
|
+
'图片消息失败,无效的图片格式': 'Gagal mengirim pesan gambar, format gambar tidak valid',
|
|
90
|
+
'位置': 'Lokasi',
|
|
91
|
+
'文件不存在,请检查文件路径是否正确': 'File tidak ada, silakan periksa apakah jalur file benar',
|
|
92
|
+
'文件大小超出了限制,如果上传文件,最大限制是100MB': 'Ukuran file melebihi batas, jika mengunggah file, batas maksimum adalah 100MB',
|
|
93
|
+
'文件消息失败,禁止发送违规封禁的文件': 'Gagal mengirim pesan file, dilarang mengirim file yang dilarang',
|
|
94
|
+
'无法查看': 'Tidak dapat dilihat',
|
|
95
|
+
'无法收听': 'Tidak dapat didengar',
|
|
96
|
+
'正在加载': 'Sedang memuat...',
|
|
97
|
+
'加载结束': 'Pemuatan selesai',
|
|
98
|
+
'消息': 'Pesan',
|
|
99
|
+
'消息或者资料中文本存在敏感内容,发送失败': 'Ada konten sensitif dalam teks pesan atau informasi, gagal mengirim',
|
|
100
|
+
'消息长度超出限制,消息长度不要超过12K': 'Panjang pesan melebihi batas, panjang pesan tidak boleh lebih dari 12K',
|
|
101
|
+
'消息中图片存在敏感内容,发送失败': 'Ada konten sensitif dalam gambar pesan, gagal mengirim',
|
|
102
|
+
'选择提醒的人': 'Pilih orang yang akan diingatkan',
|
|
103
|
+
'已过撤回时限': 'Batas waktu penarikan telah berlalu',
|
|
104
|
+
'已拒绝': 'Sudah ditolak',
|
|
105
|
+
'已同意': 'Sudah disetujui',
|
|
106
|
+
'引用失败': 'Gagal mengutip',
|
|
107
|
+
'翻译': 'menerjemahkan',
|
|
108
|
+
'隐藏': 'bersembunyi',
|
|
109
|
+
'腾讯云 IM': 'Tencent Cloud Chat',
|
|
110
|
+
'空': 'Kosong',
|
|
111
|
+
'文本包含本地审核拦截词': 'Teks mengandung kata-kata yang dicegah oleh peninjauan lokal',
|
|
112
|
+
'按住说话': 'Tahan dan bicara',
|
|
113
|
+
'抬起发送': 'Lepaskan untuk mengirim',
|
|
114
|
+
'抬起取消': 'Lepaskan untuk membatalkan',
|
|
115
|
+
'正在录音': 'Sedang merekam',
|
|
116
|
+
'继续上滑可取消': 'Lanjutkan menggeser ke atas untuk membatalkan',
|
|
117
|
+
'松开手指 取消发送': 'Lepaskan jari untuk membatalkan',
|
|
118
|
+
'此机型暂不支持复制功能': 'Fungsi menyalin tidak didukung oleh model ini',
|
|
119
|
+
'请开通翻译功能': 'Harap aktifkan fitur terjemahan',
|
|
120
|
+
'请开通语音转文字功能': 'Harap aktifkan fitur konversi suara ke teks',
|
|
121
|
+
'翻译中': 'Menerjemahkan',
|
|
122
|
+
'转换中': 'Mengonversi',
|
|
123
|
+
'由IM提供翻译支持': 'Didukung oleh IM untuk terjemahan',
|
|
124
|
+
'所有人': 'Semua orang',
|
|
125
|
+
'已达到表情回应上限数量': 'Telah mencapai batas maksimum respons emoji',
|
|
126
|
+
'等': 'dll',
|
|
127
|
+
'人': 'orang',
|
|
128
|
+
'返回': 'Kembali',
|
|
129
|
+
'关闭': 'Tutup',
|
|
130
|
+
'多选': 'Pilih banyak',
|
|
131
|
+
'合并转发': 'Gabungkan dan teruskan',
|
|
132
|
+
'逐条转发': 'Teruskan satu per satu',
|
|
133
|
+
'未选择消息': 'Tidak ada pesan yang dipilih',
|
|
134
|
+
'[草稿]': '[Draf]',
|
|
135
|
+
'[消息]': '[Pesan]',
|
|
136
|
+
'[文本]': '[Teks]',
|
|
137
|
+
'[自定义消息]': '[Pesan Kustom]',
|
|
138
|
+
'[图片]': '[foto]',
|
|
139
|
+
'[音频]': '[Suara]',
|
|
140
|
+
'[语音]': '[Suara]',
|
|
141
|
+
'[视频]': '[Video]',
|
|
142
|
+
'[文件]': '[File]',
|
|
143
|
+
'[位置]': '[Lokasi]',
|
|
144
|
+
'[地理位置]': '[Lokasi]',
|
|
145
|
+
'[动画表情]': '[Stiker Animasi]',
|
|
146
|
+
'[群提示]': '[Petunjuk Grup]',
|
|
147
|
+
'[群提示消息]': '[Pesan Petunjuk Grup]',
|
|
148
|
+
'[聊天记录]': '[Riwayat Chat]',
|
|
149
|
+
'[机器人自定义消息]': '[Pesan Kustom Robot]',
|
|
150
|
+
'引用内容已撤回': 'Konten kutipan telah ditarik kembali',
|
|
151
|
+
'群聊的聊天记录': 'Riwayat Chat Grup',
|
|
152
|
+
'和': 'dan',
|
|
153
|
+
'的聊天记录': 'riwayat chat',
|
|
154
|
+
'请升级IMSDK到v2.10.1或更高版本查看此消息': 'Harap tingkatkan IMSDK ke versi 2.10.1 atau yang lebih tinggi untuk melihat pesan ini',
|
|
155
|
+
'该群聊已被解散': 'Grup ini telah dibubarkan',
|
|
156
|
+
'您已被管理员移出群聊': 'Anda telah dikeluarkan dari grup oleh administrator',
|
|
157
|
+
'您已退出该群聊': 'Anda telah keluar dari grup ini',
|
|
158
|
+
'您已被禁止聊天': 'Anda telah dilarang untuk mengobrol',
|
|
159
|
+
'按Enter发送,Ctrl+Enter换行': 'Tekan Enter untuk mengirim, Ctrl+Enter untuk ganti baris',
|
|
160
|
+
'账号被强制下线': 'Akun dipaksa keluar',
|
|
161
|
+
'登录失败': 'Gagal masuk',
|
|
162
|
+
'链接':'[Tautan]',
|
|
162
163
|
};
|
|
163
164
|
|
|
164
165
|
export default TUIChat;
|