@chat21/chat21-ionic 3.4.27-rc2 → 3.4.27-rc21
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 +65 -0
- package/angular.json +1 -0
- package/package.json +1 -1
- package/src/app/app.component.html +3 -1
- package/src/app/app.component.ts +74 -24
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss +3 -3
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -1
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +1 -1
- package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.html +1 -1
- package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +4 -4
- package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss +3 -3
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +9 -9
- package/src/app/components/bubbleMessageInfo-popover/bubbleinfo-popover.component.html +1 -1
- package/src/app/components/canned-response/canned-response.component.html +2 -2
- package/src/app/components/canned-response/canned-response.component.scss +0 -2
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +8 -8
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +23 -0
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +30 -0
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +35 -7
- package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -2
- package/src/app/components/conversation-info/info-group/info-group.component.ts +23 -21
- package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.html +1 -1
- package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.ts +5 -1
- package/src/app/components/copilot-popover/copilot-popover.component.html +1 -1
- package/src/app/components/navbar/navbar.component.html +3 -3
- package/src/app/components/navbar/navbar.component.ts +29 -38
- package/src/app/components/project-item/project-item.component.ts +11 -11
- package/src/app/components/sidebar/sidebar.component.html +67 -47
- package/src/app/components/sidebar/sidebar.component.ts +110 -117
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +4 -4
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +17 -14
- package/src/app/modals/create-ticket/create-ticket.page.html +6 -6
- package/src/app/modals/create-ticket/create-ticket.page.ts +4 -4
- package/src/app/modals/loader-preview/loader-preview.page.ts +1 -1
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.scss +1 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.html +3 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.scss +1 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +47 -5
- package/src/app/pages/conversations-list/conversations-list.page.html +2 -0
- package/src/app/pages/conversations-list/conversations-list.page.ts +48 -10
- package/src/app/pages/profile-info/profile-info.page.ts +3 -3
- package/src/app/services/brand/brand.service.ts +5 -5
- package/src/app/services/global-settings/global-settings.service.ts +12 -3
- package/src/app/services/nav-proxy.service.ts +0 -1
- package/src/app/services/triggerEvents/triggerEvents.ts +28 -0
- package/src/app/services/websocket/websocket-js.ts +95 -77
- package/src/app/shared/shared.module.ts +11 -2
- package/src/app/utils/globals.ts +2 -0
- package/src/app/utils/permissions.constants.ts +14 -11
- package/src/app/utils/utils-resources.ts +8 -7
- package/src/assets/i18n/ar.json +11 -1
- package/src/assets/i18n/az.json +11 -1
- package/src/assets/i18n/de.json +11 -1
- package/src/assets/i18n/en.json +11 -1
- package/src/assets/i18n/es.json +11 -1
- package/src/assets/i18n/fr.json +11 -1
- package/src/assets/i18n/it.json +13 -3
- package/src/assets/i18n/kk.json +11 -1
- package/src/assets/i18n/pt.json +11 -1
- package/src/assets/i18n/ru.json +11 -1
- package/src/assets/i18n/sr.json +11 -1
- package/src/assets/i18n/sv.json +11 -1
- package/src/assets/i18n/tr.json +11 -1
- package/src/assets/i18n/uk.json +11 -1
- package/src/assets/i18n/uz.json +12 -1
- package/src/assets/js/agentDesktop-sdk.js +55 -0
- package/src/chat-config-template.json +1 -0
- package/src/chat-config.json +1 -0
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +3 -0
- package/src/chat21-core/utils/constants.ts +2 -2
- package/src/chat21-core/utils/utils.ts +16 -2
- /package/src/assets/{images → img}/channel_icons/chat21.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/direct.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/email-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/form-logo_v2.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/group.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/messenger-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/telegram-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/voice.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/whatsapp-logo.svg +0 -0
- /package/src/assets/{images → img}/default-avatar-x-select.png +0 -0
- /package/src/assets/{images → img}/f21ico-done.svg +0 -0
- /package/src/assets/{images → img}/f21ico-done_all.svg +0 -0
- /package/src/assets/{images → img}/f21ico-schedule.svg +0 -0
- /package/src/assets/{images → img}/file-alt-solid.png +0 -0
- /package/src/assets/{images → img}/icons/copilot.svg +0 -0
- /package/src/assets/{images → img}/json-file.svg +0 -0
- /package/src/assets/{images → img}/language_flag/ar.png +0 -0
- /package/src/assets/{images → img}/language_flag/az.png +0 -0
- /package/src/assets/{images → img}/language_flag/bg.png +0 -0
- /package/src/assets/{images → img}/language_flag/ca.png +0 -0
- /package/src/assets/{images → img}/language_flag/cs.png +0 -0
- /package/src/assets/{images → img}/language_flag/da.png +0 -0
- /package/src/assets/{images → img}/language_flag/de.png +0 -0
- /package/src/assets/{images → img}/language_flag/el.png +0 -0
- /package/src/assets/{images → img}/language_flag/en.png +0 -0
- /package/src/assets/{images → img}/language_flag/es.png +0 -0
- /package/src/assets/{images → img}/language_flag/fa.png +0 -0
- /package/src/assets/{images → img}/language_flag/fi.png +0 -0
- /package/src/assets/{images → img}/language_flag/fr.png +0 -0
- /package/src/assets/{images → img}/language_flag/he.png +0 -0
- /package/src/assets/{images → img}/language_flag/hi.png +0 -0
- /package/src/assets/{images → img}/language_flag/hr.png +0 -0
- /package/src/assets/{images → img}/language_flag/hu.png +0 -0
- /package/src/assets/{images → img}/language_flag/id.png +0 -0
- /package/src/assets/{images → img}/language_flag/it.png +0 -0
- /package/src/assets/{images → img}/language_flag/ja.png +0 -0
- /package/src/assets/{images → img}/language_flag/kk.png +0 -0
- /package/src/assets/{images → img}/language_flag/ko.png +0 -0
- /package/src/assets/{images → img}/language_flag/ml-IN.png +0 -0
- /package/src/assets/{images → img}/language_flag/ne-NP.png +0 -0
- /package/src/assets/{images → img}/language_flag/nl.png +0 -0
- /package/src/assets/{images → img}/language_flag/no.png +0 -0
- /package/src/assets/{images → img}/language_flag/pl.png +0 -0
- /package/src/assets/{images → img}/language_flag/pt-BR.png +0 -0
- /package/src/assets/{images → img}/language_flag/pt.png +0 -0
- /package/src/assets/{images → img}/language_flag/ro.png +0 -0
- /package/src/assets/{images → img}/language_flag/ru.png +0 -0
- /package/src/assets/{images → img}/language_flag/sk.png +0 -0
- /package/src/assets/{images → img}/language_flag/sl.png +0 -0
- /package/src/assets/{images → img}/language_flag/sr.png +0 -0
- /package/src/assets/{images → img}/language_flag/sv.png +0 -0
- /package/src/assets/{images → img}/language_flag/ta.png +0 -0
- /package/src/assets/{images → img}/language_flag/th.png +0 -0
- /package/src/assets/{images → img}/language_flag/tr.png +0 -0
- /package/src/assets/{images → img}/language_flag/uk.png +0 -0
- /package/src/assets/{images → img}/language_flag/uz.png +0 -0
- /package/src/assets/{images → img}/language_flag/vi.png +0 -0
- /package/src/assets/{images → img}/language_flag/zh-CN.png +0 -0
- /package/src/assets/{images → img}/language_flag/zh-TW.png +0 -0
- /package/src/assets/{logos → img/logos}/chat21-logo.png +0 -0
- /package/src/assets/{logos → img/logos}/logo.png +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk-logo_new_white.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk-solo-logo.png +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo_no_text.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo_white_small.svg +0 -0
- /package/src/assets/{images → img}/no_conversation.jpg +0 -0
- /package/src/assets/{images → img}/no_image.png +0 -0
- /package/src/assets/{images → img}/no_image_user.png +0 -0
- /package/src/assets/{images → img}/pin.svg +0 -0
- /package/src/assets/{images → img}/pinned.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/high.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/high_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/low.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/low_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/medium.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/medium_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/urgent.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/urgent_v2.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/avaible.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/inactive.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/unavaible.svg +0 -0
- /package/src/assets/{images → img}/whatsapp_background.png +0 -0
|
@@ -8,14 +8,13 @@ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
|
|
|
8
8
|
export class WebSocketJs {
|
|
9
9
|
|
|
10
10
|
public url;
|
|
11
|
-
public onCreate;
|
|
12
|
-
public onUpdate;
|
|
13
|
-
public onOpen;
|
|
14
|
-
public onData;
|
|
11
|
+
public onCreate?: Function;
|
|
12
|
+
public onUpdate?: Function;
|
|
13
|
+
public onOpen?: Function;
|
|
14
|
+
public onData?: Function;
|
|
15
15
|
public ws;
|
|
16
16
|
public topics;
|
|
17
17
|
public callbacks;
|
|
18
|
-
public readyState: number;
|
|
19
18
|
// public userHasClosed: boolean;
|
|
20
19
|
|
|
21
20
|
// HEARTBEAT https://github.com/zimv/websocket-heartbeat-js/blob/master/lib/index.js
|
|
@@ -23,13 +22,15 @@ export class WebSocketJs {
|
|
|
23
22
|
private pongTimeoutId;
|
|
24
23
|
|
|
25
24
|
public pingMsg = { action: "heartbeat", payload: { message: { text: "ping" } } }
|
|
26
|
-
|
|
27
25
|
public pongMsg = { action: "heartbeat", payload: { message: { text: "pong" } } }
|
|
28
26
|
|
|
29
|
-
|
|
30
27
|
public pongTimeout = 10000;
|
|
31
28
|
public pingTimeout = 15000;
|
|
32
29
|
|
|
30
|
+
private reconnectAttempts = 0;
|
|
31
|
+
private readonly maxReconnectDelay = 30000;
|
|
32
|
+
private manuallyClosed = false;
|
|
33
|
+
|
|
33
34
|
// nktest
|
|
34
35
|
// startTimeMS = 0;
|
|
35
36
|
|
|
@@ -78,7 +79,7 @@ export class WebSocketJs {
|
|
|
78
79
|
this.callbacks.set(topic, { onCreate: onCreate, onUpdate: onUpdate, onData: onData });
|
|
79
80
|
this.logger.log('[WEBSOCKET-JS] - CALLBACK-SET - callbacks', this.callbacks);
|
|
80
81
|
|
|
81
|
-
if (this.ws && this.ws.readyState ==
|
|
82
|
+
if (this.ws && this.ws.readyState == WebSocket.OPEN) {
|
|
82
83
|
this.logger.log('[WEBSOCKET-JS] - REF - READY STATE ', this.ws.readyState);
|
|
83
84
|
this.logger.log('[WEBSOCKET-JS] - REF - READY STATE = 1 > SUBSCRIBE TO TOPICS ');
|
|
84
85
|
|
|
@@ -126,10 +127,8 @@ export class WebSocketJs {
|
|
|
126
127
|
method: undefined
|
|
127
128
|
},
|
|
128
129
|
};
|
|
129
|
-
|
|
130
|
-
this.
|
|
131
|
-
|
|
132
|
-
this.send(str, `SUBSCRIBE to ${topic}`);
|
|
130
|
+
this.logger.log("[WEBSOCKET-JS] - SUBSCRIBE TO TOPIC - DATA TO SEND ", message, " FOR SUBSCRIBE TO TOPIC: ", topic);
|
|
131
|
+
this.send(message, `SUBSCRIBE to ${topic}`);
|
|
133
132
|
}
|
|
134
133
|
|
|
135
134
|
// -----------------------------------------------------------------------------------------------------
|
|
@@ -170,12 +169,11 @@ export class WebSocketJs {
|
|
|
170
169
|
method: undefined
|
|
171
170
|
},
|
|
172
171
|
};
|
|
173
|
-
|
|
174
|
-
this.logger.log("[WEBSOCKET-JS] - UN-SUBSCRIBE str " + str);
|
|
172
|
+
this.logger.log("[WEBSOCKET-JS] - UN-SUBSCRIBE " + message);
|
|
175
173
|
|
|
176
|
-
if (this.ws && this.ws.readyState ==
|
|
177
|
-
this.logger.log("[WEBSOCKET-JS] - UN-SUBSCRIBE TO TOPIC -
|
|
178
|
-
this.send(
|
|
174
|
+
if (this.ws && this.ws.readyState == WebSocket.OPEN) {
|
|
175
|
+
this.logger.log("[WEBSOCKET-JS] - UN-SUBSCRIBE TO TOPIC - DATA TO SEND ", message, " FOR UNSUBSCRIBE TO TOPIC: ", topic);
|
|
176
|
+
this.send(message, `UNSUSCRIBE from ${topic}`);
|
|
179
177
|
|
|
180
178
|
} else if (this.ws) {
|
|
181
179
|
this.logger.log("[WEBSOCKET-JS] - UN-SUBSCRIBE TRY 'SEND' BUT READY STASTE IS : ", this.ws.readyState);
|
|
@@ -185,10 +183,10 @@ export class WebSocketJs {
|
|
|
185
183
|
// -----------------------------------------------------------------------------------------------------
|
|
186
184
|
// @ send -
|
|
187
185
|
// -----------------------------------------------------------------------------------------------------
|
|
188
|
-
send(
|
|
186
|
+
send(data, calling_method) {
|
|
189
187
|
// this.logger.log("[WEBSOCKET-JS] - SEND - INIZIAL-MSG ", initialMessage, " CALLED BY ", calling_method);
|
|
190
188
|
|
|
191
|
-
this.ws.send(
|
|
189
|
+
this.ws.send(JSON.stringify(data));
|
|
192
190
|
}
|
|
193
191
|
|
|
194
192
|
|
|
@@ -205,6 +203,23 @@ export class WebSocketJs {
|
|
|
205
203
|
this.ws.close();
|
|
206
204
|
}
|
|
207
205
|
this.heartReset();
|
|
206
|
+
this.manuallyClosed = true;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
reconnect(url, onCreate, onUpdate, onData, onOpen = undefined, onOpenCallback = undefined, _topics = [], _callbacks = new Map()) {
|
|
210
|
+
this.reconnectAttempts++;
|
|
211
|
+
const delay = Math.min(this.reconnectAttempts * 1000, this.maxReconnectDelay);
|
|
212
|
+
|
|
213
|
+
console.log(`WebSocket reconnect in ${delay}ms`);
|
|
214
|
+
const that = this;
|
|
215
|
+
setTimeout(() => {
|
|
216
|
+
if (!that.manuallyClosed) {
|
|
217
|
+
that.init(url, onCreate, onUpdate, onData, onOpen, function () {
|
|
218
|
+
that.logger.log('[WEBSOCKET-JS] websocket IS CLOSED ... CALLING RESUSCRIBE ');
|
|
219
|
+
that.resubscribe();
|
|
220
|
+
}, that.topics, that.callbacks);
|
|
221
|
+
}
|
|
222
|
+
}, delay);
|
|
208
223
|
}
|
|
209
224
|
|
|
210
225
|
// -----------------------------------------------------------------------------------------------------
|
|
@@ -272,41 +287,45 @@ export class WebSocketJs {
|
|
|
272
287
|
// -----------------------------------------------------------------------------------------------------
|
|
273
288
|
// @ HeartStart
|
|
274
289
|
// -----------------------------------------------------------------------------------------------------
|
|
275
|
-
heartStart() {
|
|
290
|
+
private heartStart() {
|
|
276
291
|
// this.getRemainingTime();
|
|
277
|
-
this.pingTimeoutId = setTimeout(() => {
|
|
278
|
-
|
|
279
|
-
// Qui viene inviato un battito cardiaco Dopo averlo ricevuto, viene restituito un messaggio di battito cardiaco.
|
|
280
|
-
// onmessage Ottieni il battito cardiaco restituito per indicare che la connessione è normale
|
|
281
|
-
if (this.ws && this.ws.readyState == 1) {
|
|
282
|
-
|
|
283
|
-
this.logger.log("[WEBSOCKET-JS] - HEART-START - SEND PING-MSG");
|
|
284
|
-
|
|
285
|
-
this.send(JSON.stringify(this.pingMsg), 'HEART-START')
|
|
286
292
|
|
|
287
|
-
|
|
293
|
+
// usa intervallo adattivo se tab è in background (Chrome throtla i timer)
|
|
294
|
+
const adaptivePing = document.hidden ? this.pingTimeout * 3 : this.pingTimeout;
|
|
288
295
|
|
|
289
|
-
|
|
296
|
+
// pianifica invio ping
|
|
297
|
+
this.pingTimeoutId = setTimeout(() => {
|
|
298
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;
|
|
290
299
|
|
|
291
|
-
|
|
300
|
+
// Qui viene inviato un battito cardiaco. Dopo averlo ricevuto, viene restituito un messaggio di battito cardiaco.
|
|
301
|
+
// onmessage Ottieni il battito cardiaco restituito per indicare che la connessione è normale
|
|
302
|
+
this.send(this.pingMsg, 'HEART-START')
|
|
292
303
|
|
|
293
304
|
// Se non viene ripristinato dopo un determinato periodo di tempo, il backend viene attivamente disconnesso
|
|
294
305
|
this.pongTimeoutId = setTimeout(() => {
|
|
295
|
-
|
|
306
|
+
this.logger.log("[WEBSOCKET-JS] - HEART-START - PONG-TIMEOUT-ID - CLOSE WS ");
|
|
296
307
|
// se onclose Si esibirà reconnect,Eseguiamo ws.close() Bene, se lo esegui direttamente reconnect Si innescherà onclose Causa riconnessione due volte
|
|
297
308
|
this.ws.close();
|
|
298
|
-
}, this.pongTimeout);
|
|
309
|
+
}, this.pongTimeout) as unknown as number;
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
}, adaptivePing);
|
|
299
313
|
|
|
300
|
-
}, this.pingTimeout);
|
|
301
314
|
}
|
|
302
315
|
|
|
303
316
|
// -----------------------------------------------------------------------------------------------------
|
|
304
317
|
// @ heartReset
|
|
305
318
|
// -----------------------------------------------------------------------------------------------------
|
|
306
|
-
heartReset() {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
319
|
+
private heartReset() {
|
|
320
|
+
if (this.pongTimeoutId !== undefined) {
|
|
321
|
+
clearTimeout(this.pongTimeoutId);
|
|
322
|
+
this.pongTimeoutId = undefined;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (this.pingTimeoutId !== undefined) {
|
|
326
|
+
clearTimeout(this.pingTimeoutId);
|
|
327
|
+
this.pingTimeoutId = undefined;
|
|
328
|
+
}
|
|
310
329
|
}
|
|
311
330
|
|
|
312
331
|
// -----------------------------------------------------------------------------------------------------
|
|
@@ -315,7 +334,7 @@ export class WebSocketJs {
|
|
|
315
334
|
init(url, onCreate, onUpdate, onData, onOpen = undefined, onOpenCallback = undefined, _topics = [], _callbacks = new Map()) {
|
|
316
335
|
|
|
317
336
|
|
|
318
|
-
|
|
337
|
+
this.manuallyClosed = false;
|
|
319
338
|
this.url = url;
|
|
320
339
|
this.onCreate = onCreate;
|
|
321
340
|
this.onUpdate = onUpdate;
|
|
@@ -360,19 +379,12 @@ export class WebSocketJs {
|
|
|
360
379
|
that.ws.onopen = function (e) {
|
|
361
380
|
that.logger.log('[WEBSOCKET-JS] - websocket is connected ...', e);
|
|
362
381
|
|
|
363
|
-
//
|
|
364
|
-
// @ heartCheck
|
|
365
|
-
// -----------------
|
|
382
|
+
// Inizializza heartbeat
|
|
366
383
|
that.heartCheck();
|
|
384
|
+
that.reconnectAttempts = 0;
|
|
367
385
|
|
|
368
|
-
|
|
369
|
-
if (
|
|
370
|
-
onOpenCallback();
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
if (that.onOpen) {
|
|
374
|
-
that.onOpen();
|
|
375
|
-
}
|
|
386
|
+
if (onOpenCallback) { onOpenCallback(); }
|
|
387
|
+
if (that.onOpen) { that.onOpen(); }
|
|
376
388
|
|
|
377
389
|
}
|
|
378
390
|
|
|
@@ -389,13 +401,21 @@ export class WebSocketJs {
|
|
|
389
401
|
// --------------------
|
|
390
402
|
// @ init > resubscribe
|
|
391
403
|
// --------------------
|
|
404
|
+
that.heartReset();
|
|
392
405
|
|
|
393
|
-
|
|
394
|
-
that.
|
|
406
|
+
if (!that.manuallyClosed) {
|
|
407
|
+
that.reconnect(url, onCreate, onUpdate, onData, onOpen, function () {
|
|
395
408
|
that.logger.log('[WEBSOCKET-JS] websocket IS CLOSED ... CALLING RESUSCRIBE ');
|
|
396
409
|
that.resubscribe();
|
|
397
410
|
}, that.topics, that.callbacks);
|
|
398
|
-
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// setTimeout(function () {
|
|
414
|
+
// that.init(url, onCreate, onUpdate, onData, onOpen, function () {
|
|
415
|
+
// that.logger.log('[WEBSOCKET-JS] websocket IS CLOSED ... CALLING RESUSCRIBE ');
|
|
416
|
+
// that.resubscribe();
|
|
417
|
+
// }, that.topics, that.callbacks);
|
|
418
|
+
// }, 3000);
|
|
399
419
|
}
|
|
400
420
|
|
|
401
421
|
// -----------------------------------------------------------------------------------------------------
|
|
@@ -415,8 +435,9 @@ export class WebSocketJs {
|
|
|
415
435
|
// let test = '{ "action": "publish","payload": {"topic": "/5df26badde7e1c001743b63c/requests", "method": "CREATE", "message": [ { "_id": "5f29372d690e6f0034edf100", "status": 200, "preflight": false, "hasBot": true, "participants": ["bot_5df272e8de7e1c001743b645"], "participantsAgents": [], "participantsBots": ["5df272e8de7e1c001743b645"], "request_id": "support-group-MDszsSJlwqQn1_WCh6u", "requester": "5f29371b690e6f0034edf0f5", "lead": "5f29372d690e6f0034edf0ff", "first_text": "ocourse the email is valid ","department": "5df26badde7e1c001743b63e", "agents": [{"user_available": true,"online_status": "online", "number_assigned_requests": 35, "_id": "5e0f2119705a35001725714d","id_project": "5df26badde7e1c001743b63c", "id_user": "5aaa99024c3b110014b478f0", "role": "admin", "createdBy": "5df26ba1de7e1c001743b637","createdAt": "2020-01-03T11:10:17.123Z", "updatedAt": "2020-01-03T11:10:17.123Z", "__v": 0 }, { "user_available": false, "online_status": "offline", "number_assigned_requests": 0, "_id": "5e1a13824437eb0017f712b4", "id_project": "5df26badde7e1c001743b63c","id_user": "5ac7521787f6b50014e0b592", "role": "admin", "createdBy": "5df26ba1de7e1c001743b637", "createdAt": "2020-01-11T18:27:14.657Z","updatedAt": "2020-01-11T18:27:14.657Z", "__v": 0}, { "user_available": false,"online_status": "offline", "number_assigned_requests": 0, "_id": "5df26bdfde7e1c001743b640", "id_project": "5df26badde7e1c001743b63c", "id_user": "5de9200d6722370017731969","role": "admin","createdBy": "5df26ba1de7e1c001743b637", "createdAt": "2019-12-12T16:33:35.244Z", "updatedAt": "2019-12-12T16:33:35.244Z","__v": 0 }, {"user_available": true, "online_status": "online","number_assigned_requests": -11, "_id": "5eb1a3647ac005003480f54d", "id_project": "5df26badde7e1c001743b63c","id_user": "5e09d16d4d36110017506d7f","role": "owner", "createdBy": "5aaa99024c3b110014b478f0","createdAt": "2020-05-05T17:33:24.328Z", "updatedAt": "2020-05-05T17:33:24.328Z","__v": 0}], "sourcePage": "https://www.tiledesk.com/pricing-self-managed/", "language": "en","userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36","attributes": { "departmentId": "5df26badde7e1c001743b63e","departmentName": "Default Department","ipAddress": "115.96.30.154","client": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36","sourcePage": "https://www.tiledesk.com/pricing-self-managed/", "projectId": "5df26badde7e1c001743b63c", "requester_id": "ce31d3fd-a358-49c7-9b9f-5aead8330063", "subtype": "info","decoded_jwt": {"_id": "ce31d3fd-a358-49c7-9b9f-5aead8330063","firstname": "Guest", "id": "ce31d3fd-a358-49c7-9b9f-5aead8330063", "fullName": "Guest ","iat": 1596536604,"aud": "https://tiledesk.com","iss": "https://tiledesk.com","sub": "guest","jti": "702a4a7e-e56a-43cf-aadd-376f7c12f633"}},"id_project": "5df26badde7e1c001743b63c","createdBy": "ce31d3fd-a358-49c7-9b9f-5aead8330063","tags": [], "notes": [],"channel": {"name": "chat21"},"createdAt": "2020-08-04T10:23:41.641Z","updatedAt": "2021-03-25T18:01:13.371Z","__v": 3,"assigned_at": "2020-08-04T10:25:26.059Z","channelOutbound": {"name": "chat21"},"snapshot": {"agents": [{"id_user": "5aaa99024c3b110014b478f0"}, {"id_user": "5ac7521787f6b50014e0b592"}, {"id_user": "5de9200d6722370017731969"}, { "id_user": "5e09d16d4d36110017506d7f"}]},"id": "5f29372d690e6f0034edf100","requester_id": "5f29372d690e6f0034edf0ff"}]}}'
|
|
416
436
|
// let test_due = '{ "action": "publish","payload": {"topic": "/5df26badde7e1c001743b63c/requests", "method": "CREATE", "message": [ { "_id": "5f29372d690e6f0034edf100", "status": 200, "preflight": false, "hasBot": true, "participants": ["bot_5df272e8de7e1c001743b645"], "participantsAgents": [], "participantsBots": ["5df272e8de7e1c001743b645"], "request_id": "support-group-MDszsSJlwqQn1_WCh6u", "requester": "5f29371b690e6f0034edf0f5", "lead": "5f29372d690e6f0034edf0ff", "first_text": "ocourse the email is valid ","department": "5df26badde7e1c001743b63e", "agents": [{"user_available": true,"online_status": "online", "number_assigned_requests": 35, "_id": "5e0f2119705a35001725714d","id_project": "5df26badde7e1c001743b63c", "id_user": "5aaa99024c3b110014b478f0", "role": "admin", "createdBy": "5df26ba1de7e1c001743b637","createdAt": "2020-01-03T11:10:17.123Z", "updatedAt": "2020-01-03T11:10:17.123Z", "__v": 0 }, { "user_available": false, "online_status": "offline", "number_assigned_requests": 0, "_id": "5e1a13824437eb0017f712b4", "id_project": "5df26badde7e1c001743b63c","id_user": "5ac7521787f6b50014e0b592", "role": "admin", "createdBy": "5df26ba1de7e1c001743b637", "createdAt": "2020-01-11T18:27:14.657Z","updatedAt": "2020-01-11T18:27:14.657Z", "__v": 0}, { "user_available": false,"online_status": "offline", "number_assigned_requests": 0, "_id": "5df26bdfde7e1c001743b640", "id_project": "5df26badde7e1c001743b63c", "id_user": "5de9200d6722370017731969","role": "admin","createdBy": "5df26ba1de7e1c001743b637", "createdAt": "2019-12-12T16:33:35.244Z", "updatedAt": "2019-12-12T16:33:35.244Z","__v": 0 }, {"user_available": true, "online_status": "online","number_assigned_requests": -11, "_id": "5eb1a3647ac005003480f54d", "id_project": "5df26badde7e1c001743b63c","id_user": "5e09d16d4d36110017506d7f","role": "owner", "createdBy": "5aaa99024c3b110014b478f0","createdAt": "2020-05-05T17:33:24.328Z", "updatedAt": "2020-05-05T17:33:24.328Z","__v": 0}], "sourcePage": "https://www.tiledesk.com/pricing-self-managed/", "language": "en","userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36","attributes": { "departmentId": "5df26badde7e1c001743b63e","departmentName": "Default Department","ipAddress": "115.96.30.154","client": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36","sourcePage": "https://www.tiledesk.com/pricing-self-managed/", "projectId": "5df26badde7e1c001743b63c", "requester_id": "ce31d3fd-a358-49c7-9b9f-5aead8330063", "subtype": "info","decoded_jwt": {"_id": "ce31d3fd-a358-49c7-9b9f-5aead8330063","firstname": "Guest", "id": "ce31d3fd-a358-49c7-9b9f-5aead8330063", "fullName": "Guest ","iat": 1596536604,"aud": "https://tiledesk.com","iss": "https://tiledesk.com","sub": "guest","jti": "702a4a7e-e56a-43cf-aadd-376f7c12f633"}},"id_project": "5df26badde7e1c001743b63c","createdBy": "ce31d3fd-a358-49c7-9b9f-5aead8330063","tags": [], "notes": [],"channel": {"name": "chat21"},"createdAt": "2020-08-04T10:23:41.641Z","updatedAt": "2021-03-25T18:01:13.371Z","__v": 3,"assigned_at": "2020-08-04T10:25:26.059Z","channelOutbound": {"name": "chat21"},"_snapshot": {"agents": [{"id_user": "5aaa99024c3b110014b478f0"}, {"id_user": "5ac7521787f6b50014e0b592"}, {"id_user": "5de9200d6722370017731969"}, { "id_user": "5e09d16d4d36110017506d7f"}]},"id": "5f29372d690e6f0034edf100","requester_id": "5f29372d690e6f0034edf0ff"}]}}'
|
|
417
437
|
|
|
438
|
+
let json;
|
|
418
439
|
try {
|
|
419
|
-
|
|
440
|
+
json = JSON.parse(message.data);
|
|
420
441
|
// var json = JSON.parse(test_due);
|
|
421
442
|
// this.logger.log('% »»» WebSocketJs - websocket onmessage JSON.parse(message.data) json payload', json.payload);
|
|
422
443
|
// this.logger.log('% »»» WebSocketJs - websocket onmessage JSON.parse(message.data) json payload topic', json.payload.topic);
|
|
@@ -426,30 +447,27 @@ export class WebSocketJs {
|
|
|
426
447
|
return;
|
|
427
448
|
}
|
|
428
449
|
|
|
450
|
+
|
|
451
|
+
// -----------------------
|
|
452
|
+
// HEARTBEAT HANDLING
|
|
453
|
+
// @ check the action and the message's text -
|
|
454
|
+
// if action is 'heartbeat' and text is ping send the PONG message and return
|
|
455
|
+
// -----------------------
|
|
456
|
+
if (json.action === "heartbeat") {
|
|
457
|
+
const text = json?.payload?.message?.text;
|
|
458
|
+
|
|
459
|
+
// Server -> Client ping
|
|
460
|
+
if (text === "ping") {
|
|
461
|
+
that.send(that.pongMsg, 'ON-MESSAGE');
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
429
464
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
// --------------------------------------------------------------------------------------------------------------------
|
|
436
|
-
// @ check the action and the message's text - if action is 'heartbeat' and text is ping send the PONG message and return
|
|
437
|
-
// --------------------------------------------------------------------------------------------------------------------
|
|
438
|
-
|
|
439
|
-
if (json.action == "heartbeat") {
|
|
440
|
-
|
|
441
|
-
if (json.payload.message.text == "ping") {
|
|
442
|
-
// -------------------
|
|
443
|
-
// @ send PONG
|
|
444
|
-
// -------------------
|
|
445
|
-
// that.logger.log('[WEBSOCKET-JS] - RECEIVED PING -> SEND PONG MSG');
|
|
446
|
-
|
|
447
|
-
that.send(JSON.stringify(that.pongMsg), 'ON-MESSAGE')
|
|
448
|
-
|
|
449
|
-
} else {
|
|
450
|
-
// nk
|
|
451
|
-
// this.logger.log('[WEBSOCKET-JS] - NOT RECEIVED PING ');
|
|
465
|
+
// Server -> Client pong (risposta al nostro ping)
|
|
466
|
+
if (text === "pong") {
|
|
467
|
+
that.heartCheck();
|
|
468
|
+
return;
|
|
452
469
|
}
|
|
470
|
+
|
|
453
471
|
return;
|
|
454
472
|
}
|
|
455
473
|
|
|
@@ -22,8 +22,9 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
22
22
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
23
23
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
24
24
|
import { SafeHtmlPipe } from '../directives/safe-html.pipe';
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
|
26
|
+
import { createTranslateLoader } from 'src/chat21-core/utils/utils';
|
|
27
|
+
import { HttpClient } from '@angular/common/http';
|
|
27
28
|
|
|
28
29
|
@NgModule({
|
|
29
30
|
declarations: [
|
|
@@ -140,6 +141,14 @@ import { SafeHtmlPipe } from '../directives/safe-html.pipe';
|
|
|
140
141
|
NgSelectModule,
|
|
141
142
|
FormsModule,
|
|
142
143
|
|
|
144
|
+
TranslateModule.forChild({
|
|
145
|
+
loader: {
|
|
146
|
+
provide: TranslateLoader,
|
|
147
|
+
useFactory: (createTranslateLoader),
|
|
148
|
+
deps: [HttpClient]
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
|
|
143
152
|
],
|
|
144
153
|
schemas: [
|
|
145
154
|
CUSTOM_ELEMENTS_SCHEMA,
|
package/src/app/utils/globals.ts
CHANGED
|
@@ -15,6 +15,7 @@ export class Globals {
|
|
|
15
15
|
jwt: string;
|
|
16
16
|
fileUploadAccept: string;
|
|
17
17
|
projectID: string;
|
|
18
|
+
logOut: boolean
|
|
18
19
|
|
|
19
20
|
constructor(
|
|
20
21
|
) { }
|
|
@@ -36,6 +37,7 @@ export class Globals {
|
|
|
36
37
|
this.lang = 'en'
|
|
37
38
|
this.fileUploadAccept = 'image/*,.pdf,.txt'
|
|
38
39
|
this.projectID = null;
|
|
40
|
+
this.logOut = true;
|
|
39
41
|
|
|
40
42
|
}
|
|
41
43
|
|
|
@@ -4,6 +4,8 @@ export const PERMISSIONS = {
|
|
|
4
4
|
REQUEST_READ_GROUP: 'request_read_group',
|
|
5
5
|
REQUEST_READ_MY: 'request_read_my',
|
|
6
6
|
|
|
7
|
+
HOME_READ: 'home_read',
|
|
8
|
+
|
|
7
9
|
INBOX_READ: 'inbox_read',
|
|
8
10
|
REQUEST_UPDATE: 'request_update',
|
|
9
11
|
REQUEST_SEND: 'request_send',
|
|
@@ -25,6 +27,8 @@ export const PERMISSIONS = {
|
|
|
25
27
|
|
|
26
28
|
HISTORY_READ: 'history_read',
|
|
27
29
|
|
|
30
|
+
RATING_READ:'rating_read',
|
|
31
|
+
|
|
28
32
|
AUTOMATIONSLOG_READ: "automationslog_read",
|
|
29
33
|
AUTOMATIONSLOG_CREATE: "automationslog_create",
|
|
30
34
|
|
|
@@ -70,18 +74,21 @@ export const PERMISSIONS = {
|
|
|
70
74
|
WIDGETSETUP_READ: 'widgetsetup_read',
|
|
71
75
|
INSTALLATION_READ: 'installation_read',
|
|
72
76
|
TRANSLATIONS_READ: 'translations_read',
|
|
77
|
+
WIDGETSETUP_UPDATE: 'widgetsetup_update',
|
|
78
|
+
|
|
79
|
+
|
|
73
80
|
|
|
74
81
|
DEPARTMENTS_LIST_READ: 'department_list_read',
|
|
75
82
|
DEPARTMENT_DETAIL_READ: 'department_detail_read',
|
|
76
83
|
DEPARTMENT_CREATE_READ: 'department_create_read',
|
|
77
84
|
|
|
78
85
|
TEAMMATES_READ: 'teammates_read',
|
|
79
|
-
|
|
86
|
+
TEAMMATE_UPDATE: 'teammate_update',
|
|
80
87
|
TEAMMATES_CREATE: 'teammates_create',
|
|
81
88
|
ROLES_READ: 'roles_read',
|
|
82
89
|
GROUPS_READ: 'groups_read',
|
|
83
90
|
|
|
84
|
-
|
|
91
|
+
|
|
85
92
|
|
|
86
93
|
EMAIL_TICKETING_READ:'email_ticketing_read',
|
|
87
94
|
EMAIL_TICKETING_UPDATE:'email_ticketing_update',
|
|
@@ -107,29 +114,25 @@ export const PERMISSIONS = {
|
|
|
107
114
|
APPS_READ:'apps_read',
|
|
108
115
|
APPS_UPDATE:'apps_update',
|
|
109
116
|
|
|
117
|
+
SETTINGS_READ: 'settings_read',
|
|
110
118
|
PROJECTSETTINGS_GENERAL_READ: 'projectsettings_general_read',
|
|
111
119
|
PROJECTSETTINGS_GENERAL_UPDATE: 'projectsettings_general_update',
|
|
112
|
-
|
|
113
120
|
PROJECTSETTINGS_SUBSCRIPTION_READ: 'projectsettings_subscription_read',
|
|
114
|
-
|
|
115
121
|
PROJECTSETTINGS_DEVELOPER_READ: 'projectsettings_developer_read',
|
|
116
122
|
PROJECTSETTINGS_DEVELOPER_UPDATE: 'projectsettings_developer_update',
|
|
117
|
-
|
|
118
123
|
PROJECTSETTINGS_SMARTASSIGNMENT_READ: 'projectsettings_smartassignment_read',
|
|
119
124
|
PROJECTSETTINGS_SMARTASSIGNMENT_UPDATE: 'projectsettings_smartassignment_update',
|
|
120
|
-
|
|
121
125
|
PROJECTSETTINGS_NOTIFICATION_READ: 'projectsettings_notification_read',
|
|
122
|
-
|
|
123
126
|
PROJECTSETTINGS_SECURITY_READ: 'projectsettings_security_read',
|
|
124
|
-
|
|
125
127
|
PROJECTSETTINGS_BANNED_READ: 'projectsettings_banned_read',
|
|
126
|
-
|
|
127
128
|
PROJECTSETTINGS_ADVANCED_READ: 'projectsettings_advanced_read',
|
|
128
129
|
|
|
129
|
-
|
|
130
130
|
ACCESS_LISTS: 'accessLists',
|
|
131
131
|
PROFILE_PAGES: 'profilePages',
|
|
132
132
|
LEAD_DATA: 'leadData',
|
|
133
133
|
IMPORT_DATA: 'importData',
|
|
134
|
-
MANAGE_TAGS: 'manageTags'
|
|
134
|
+
MANAGE_TAGS: 'manageTags',
|
|
135
|
+
|
|
136
|
+
CHANGE_PROJECT:'change_project',
|
|
137
|
+
SIMULATE_CONV:'simulate_conv',
|
|
135
138
|
};
|
|
@@ -7,16 +7,17 @@ export const BRAND_BASE_INFO: { [key: string] : string | boolean} ={
|
|
|
7
7
|
FAVICON: "https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v13-300x300.png",
|
|
8
8
|
META_TITLE:"Tiledesk - Open Source Live Chat",
|
|
9
9
|
DOCS: true,
|
|
10
|
-
LOGOUT_ENABLED: true
|
|
10
|
+
LOGOUT_ENABLED: true,
|
|
11
|
+
DISPLAY_EDIT_PROFILE: true
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export var LOGOS_ITEMS: { [key: string] : { label: string | boolean, icon: string }} ={
|
|
14
|
-
COMPANY_LOGO: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/logos/tiledesk_logo.svg'},
|
|
15
|
-
COMPANY_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/logos/tiledesk_logo_no_text.svg'},
|
|
16
|
-
BASE_LOGO: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/logos/tiledesk_logo.svg'},
|
|
17
|
-
BASE_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/logos/tiledesk_logo_no_text.svg'},
|
|
18
|
-
BASE_LOGO_WHITE: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/logos/tiledesk-logo_new_white.svg'},
|
|
19
|
-
BASE_LOGO_WHITE_NO_TEXT: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/logos/tiledesk-logo_new_white.svg'},
|
|
15
|
+
COMPANY_LOGO: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/img/logos/tiledesk_logo.svg'},
|
|
16
|
+
COMPANY_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/img/logos/tiledesk_logo_no_text.svg'},
|
|
17
|
+
BASE_LOGO: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/img/logos/tiledesk_logo.svg'},
|
|
18
|
+
BASE_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/img/logos/tiledesk_logo_no_text.svg'},
|
|
19
|
+
BASE_LOGO_WHITE: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/img/logos/tiledesk-logo_new_white.svg'},
|
|
20
|
+
BASE_LOGO_WHITE_NO_TEXT: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/img/logos/tiledesk-logo_new_white.svg'},
|
|
20
21
|
BASE_LOGO_GRAY: { label: BRAND_BASE_INFO.BRAND_NAME, icon: 'https://support-pre.tiledesk.com/dashboard/assets/img/logos/tiledesk-logo_new_gray.svg'}
|
|
21
22
|
}
|
|
22
23
|
|
package/src/assets/i18n/ar.json
CHANGED
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
"admin": "مدير",
|
|
226
226
|
"agent": "وكيل",
|
|
227
227
|
"Conversations": "المحادثات",
|
|
228
|
+
"Monitor": "شاشة",
|
|
229
|
+
"Flows": "التدفّقات",
|
|
230
|
+
"Knowledgebases": "قواعد المعرفة",
|
|
231
|
+
"Whatsappbroadcasts": "نشرات WhatsApp",
|
|
228
232
|
"Apps": "تطبيقات",
|
|
229
233
|
"Analytics": "تحليلات",
|
|
230
234
|
"Activities": "أنشطة",
|
|
@@ -306,5 +310,11 @@
|
|
|
306
310
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"تم إرسال الرسالة أيضًا عبر البريد الإلكتروني 📩"
|
|
307
311
|
},
|
|
308
312
|
"EMOJI_NOT_ELLOWED": "الرموز التعبيرية غير مسموح بها",
|
|
309
|
-
"DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح"
|
|
313
|
+
"DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح",
|
|
314
|
+
"TICKET": {
|
|
315
|
+
"OPEN_TICKET": "افتح تذكرة",
|
|
316
|
+
"DESCRIPTION": "هل تؤكد أنك تريد فتح تذكرة لهذه المحادثة؟",
|
|
317
|
+
"CONFIRM": "تأكيد",
|
|
318
|
+
"CLOSE": "إغلاق"
|
|
319
|
+
}
|
|
310
320
|
}
|
package/src/assets/i18n/az.json
CHANGED
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
"admin": "Administrator",
|
|
226
226
|
"agent": "Agent",
|
|
227
227
|
"Conversations": "Söhbətlər",
|
|
228
|
+
"Monitor": "Monitor",
|
|
229
|
+
"Flows": "Axınlar",
|
|
230
|
+
"Knowledgebases": "Bilik bazaları",
|
|
231
|
+
"Whatsappbroadcasts": "WhatsApp Yayınları",
|
|
228
232
|
"Apps": "Proqramlar",
|
|
229
233
|
"Analytics": "Analitika",
|
|
230
234
|
"Activities": "Fəaliyyətlər",
|
|
@@ -306,5 +310,11 @@
|
|
|
306
310
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mesaj e-poçt vasitəsilə də göndərilib 📩"
|
|
307
311
|
},
|
|
308
312
|
"EMOJI_NOT_ELLOWED": "Emoji icazə verilmir",
|
|
309
|
-
"DOMAIN_NOT_ALLOWED": "URL icazə verilməyən domeni ehtiva edir"
|
|
313
|
+
"DOMAIN_NOT_ALLOWED": "URL icazə verilməyən domeni ehtiva edir",
|
|
314
|
+
"TICKET": {
|
|
315
|
+
"OPEN_TICKET": "Bilet aç",
|
|
316
|
+
"DESCRIPTION": "Bu söhbət üçün bilet açmaq istədiyinizi təsdiqləyirsinizmi?",
|
|
317
|
+
"CONFIRM": "Təsdiqlə",
|
|
318
|
+
"CLOSE": "Bağla"
|
|
319
|
+
}
|
|
310
320
|
}
|
package/src/assets/i18n/de.json
CHANGED
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
"admin": "Administrator",
|
|
226
226
|
"agent": "Agent",
|
|
227
227
|
"Conversations": "Gespräche",
|
|
228
|
+
"Monitor": "Monitor",
|
|
229
|
+
"Flows": "Flows",
|
|
230
|
+
"Knowledgebases": "Wissensdatenbanken",
|
|
231
|
+
"Whatsappbroadcasts": "WhatsApp-Broadcasts",
|
|
228
232
|
"Apps": "Anwendungen",
|
|
229
233
|
"Analytics": "Analytik",
|
|
230
234
|
"Activities": "Aktivitäten",
|
|
@@ -306,5 +310,11 @@
|
|
|
306
310
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Nachricht auch per E-Mail gesendet 📩"
|
|
307
311
|
},
|
|
308
312
|
"EMOJI_NOT_ELLOWED": "Emoji nicht erlaubt",
|
|
309
|
-
"DOMAIN_NOT_ALLOWED": "Die URL enthält eine nicht erlaubte Domain"
|
|
313
|
+
"DOMAIN_NOT_ALLOWED": "Die URL enthält eine nicht erlaubte Domain",
|
|
314
|
+
"TICKET": {
|
|
315
|
+
"OPEN_TICKET": "Ticket öffnen",
|
|
316
|
+
"DESCRIPTION": "Bestätigen Sie, dass Sie ein Ticket für dieses Gespräch eröffnen möchten?",
|
|
317
|
+
"CONFIRM": "Bestätigen",
|
|
318
|
+
"CLOSE": "Schließen"
|
|
319
|
+
}
|
|
310
320
|
}
|
package/src/assets/i18n/en.json
CHANGED
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
"admin": "Administrator",
|
|
226
226
|
"agent": "Agent",
|
|
227
227
|
"Conversations": "Conversations",
|
|
228
|
+
"Monitor":"Monitor",
|
|
229
|
+
"Flows": "Flows",
|
|
230
|
+
"Knowledgebases": "Knowledge Bases",
|
|
231
|
+
"Whatsappbroadcasts": "WhatsApp Broadcasts",
|
|
228
232
|
"Apps": "Apps",
|
|
229
233
|
"Analytics": "Analytics",
|
|
230
234
|
"Activities": "Activities",
|
|
@@ -314,5 +318,11 @@
|
|
|
314
318
|
"HOW_CAN_I_HELP_YOU":"How can i help you?"
|
|
315
319
|
},
|
|
316
320
|
"EMOJI_NOT_ELLOWED":"Emoji not allowed",
|
|
317
|
-
"DOMAIN_NOT_ALLOWED":"URL contains a non-allowed domain"
|
|
321
|
+
"DOMAIN_NOT_ALLOWED":"URL contains a non-allowed domain",
|
|
322
|
+
"TICKET": {
|
|
323
|
+
"OPEN_TICKET": "Open Ticket",
|
|
324
|
+
"DESCRIPTION": "Do you confirm you want to open a ticket for this conversation?",
|
|
325
|
+
"CONFIRM": "Confirm",
|
|
326
|
+
"CLOSE": "Close"
|
|
327
|
+
}
|
|
318
328
|
}
|
package/src/assets/i18n/es.json
CHANGED
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
"admin": "Administrador",
|
|
226
226
|
"agent": "Agente",
|
|
227
227
|
"Conversations": "Conversaciones",
|
|
228
|
+
"Monitor": "Monitor",
|
|
229
|
+
"Flows": "Flujos",
|
|
230
|
+
"Knowledgebases": "Bases de Conocimiento",
|
|
231
|
+
"Whatsappbroadcasts": "Difusiones de WhatsApp",
|
|
228
232
|
"Apps":"Aplicaciones",
|
|
229
233
|
"Analytics":"Analíticas",
|
|
230
234
|
"Activities": "Actividades",
|
|
@@ -306,5 +310,11 @@
|
|
|
306
310
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mensaje también enviado por correo electrónico 📩"
|
|
307
311
|
},
|
|
308
312
|
"EMOJI_NOT_ELLOWED": "Emoji no permitido",
|
|
309
|
-
"DOMAIN_NOT_ALLOWED": "La URL contiene un dominio no permitido"
|
|
313
|
+
"DOMAIN_NOT_ALLOWED": "La URL contiene un dominio no permitido",
|
|
314
|
+
"TICKET": {
|
|
315
|
+
"OPEN_TICKET": "Abrir Ticket",
|
|
316
|
+
"DESCRIPTION": "¿Confirmas que deseas abrir un ticket para esta conversación?",
|
|
317
|
+
"CONFIRM": "Confirmar",
|
|
318
|
+
"CLOSE": "Cerrar"
|
|
319
|
+
}
|
|
310
320
|
}
|
package/src/assets/i18n/fr.json
CHANGED
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
"admin": "Administrateur",
|
|
226
226
|
"agent": "Agent",
|
|
227
227
|
"Conversations": "Conversations",
|
|
228
|
+
"Monitor": "Moniteur",
|
|
229
|
+
"Flows": "Flux",
|
|
230
|
+
"Knowledgebases": "Bases de Connaissances",
|
|
231
|
+
"Whatsappbroadcasts": "Diffusions WhatsApp",
|
|
228
232
|
"Apps":"Applications",
|
|
229
233
|
"Analytics":"Analytique",
|
|
230
234
|
"Activities": "Activités",
|
|
@@ -306,5 +310,11 @@
|
|
|
306
310
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Message également envoyé par mail 📩"
|
|
307
311
|
},
|
|
308
312
|
"EMOJI_NOT_ELLOWED": "Emoji non autorisé",
|
|
309
|
-
"DOMAIN_NOT_ALLOWED": "L'URL contient un domaine non autorisé"
|
|
313
|
+
"DOMAIN_NOT_ALLOWED": "L'URL contient un domaine non autorisé",
|
|
314
|
+
"TICKET": {
|
|
315
|
+
"OPEN_TICKET": "Ouvrir un Ticket",
|
|
316
|
+
"DESCRIPTION": "Confirmez-vous vouloir ouvrir un ticket pour cette conversation ?",
|
|
317
|
+
"CONFIRM": "Confirmer",
|
|
318
|
+
"CLOSE": "Fermer"
|
|
319
|
+
}
|
|
310
320
|
}
|
package/src/assets/i18n/it.json
CHANGED
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
"admin": "Amministratore",
|
|
226
226
|
"agent": "Agente",
|
|
227
227
|
"Conversations": "Conversazioni",
|
|
228
|
+
"Monitor": "Monitor",
|
|
229
|
+
"Flows": "Flussi",
|
|
230
|
+
"Knowledgebases": "Basi di Conoscenza",
|
|
231
|
+
"Whatsappbroadcasts": "Trasmissioni WhatsApp",
|
|
228
232
|
"Apps":"App",
|
|
229
233
|
"Analytics":"Analitica",
|
|
230
234
|
"Activities": "Attività",
|
|
@@ -312,7 +316,13 @@
|
|
|
312
316
|
"NO_SUGGESTIONS_PRESENT":"Nessun suggerimento trovato",
|
|
313
317
|
"INSERT_PROMPT_HERE":"Inserisci un prompt qui",
|
|
314
318
|
"HOW_CAN_I_HELP_YOU":"Come posso aiutarti?"
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
319
|
+
},
|
|
320
|
+
"EMOJI_NOT_ELLOWED": "Emoji non consentite",
|
|
321
|
+
"DOMAIN_NOT_ALLOWED": "L'URL contiene un dominio non consentito",
|
|
322
|
+
"TICKET": {
|
|
323
|
+
"OPEN_TICKET": "Apri Ticket",
|
|
324
|
+
"DESCRIPTION": "Confermi di voler aprire un ticket per questa conversazione?",
|
|
325
|
+
"CONFIRM": "Conferma",
|
|
326
|
+
"CLOSE": "Chiudi"
|
|
327
|
+
}
|
|
318
328
|
}
|