@chat21/chat21-ionic 3.4.32-rc9 → 3.4.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -127
- package/angular.json +0 -1
- package/package.json +1 -1
- package/src/app/app.component.html +1 -3
- package/src/app/app.component.ts +11 -70
- package/src/app/components/canned-response/canned-response.component.html +2 -2
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +0 -23
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +0 -30
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +7 -26
- package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -2
- package/src/app/components/navbar/navbar.component.ts +5 -5
- package/src/app/components/project-item/project-item.component.ts +36 -35
- package/src/app/components/sidebar/sidebar.component.html +1 -1
- package/src/app/components/sidebar/sidebar.component.ts +5 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +15 -7
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +3 -3
- package/src/app/pages/conversation-detail/conversation-detail.page.html +1 -3
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +3 -45
- package/src/app/pages/conversations-list/conversations-list.page.ts +1 -7
- package/src/app/services/global-settings/global-settings.service.ts +3 -11
- package/src/app/services/nav-proxy.service.ts +1 -0
- package/src/app/services/projects/project.service.ts +1 -1
- package/src/app/services/tiledesk/tiledesk.service.ts +0 -17
- package/src/app/services/triggerEvents/triggerEvents.ts +0 -29
- package/src/app/services/websocket/websocket-js.ts +535 -61
- package/src/app/services/websocket/websocket.service.ts +11 -10
- package/src/app/utils/globals.ts +0 -2
- package/src/app/utils/utils.ts +0 -1
- package/src/assets/i18n/ar.json +2 -7
- package/src/assets/i18n/az.json +2 -7
- package/src/assets/i18n/de.json +2 -7
- package/src/assets/i18n/en.json +2 -7
- package/src/assets/i18n/es.json +2 -7
- package/src/assets/i18n/fr.json +2 -7
- package/src/assets/i18n/it.json +4 -9
- package/src/assets/i18n/kk.json +2 -7
- package/src/assets/i18n/pt.json +2 -7
- package/src/assets/i18n/ru.json +2 -7
- package/src/assets/i18n/sr.json +2 -7
- package/src/assets/i18n/sv.json +2 -7
- package/src/assets/i18n/tr.json +2 -7
- package/src/assets/i18n/uk.json +2 -7
- package/src/assets/i18n/uz.json +2 -8
- package/src/assets/js/chat21client.js +0 -36
- package/src/assets/test.html +2 -5
- package/src/chat-config-template.json +0 -1
- package/src/chat-config.json +0 -1
- package/src/chat21-core/models/projectUsers.ts +21 -12
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -1
- package/src/chat21-core/utils/utils.ts +2 -16
- package/src/app/services/websocket/websocket-js_old.ts +0 -578
- package/src/app/services/websocket/websocket.worker.ts +0 -242
- package/src/assets/js/agentDesktop-sdk.js +0 -55
- package/src/assets/js/mqtt-keepalive-worker.js +0 -53
- package/src/chat21-core/models/project_user.ts +0 -26
|
@@ -44,18 +44,18 @@ export class WebsocketService {
|
|
|
44
44
|
return new Promise(function (resolve, reject) {
|
|
45
45
|
|
|
46
46
|
self.webSocketJs.ref(path, 'subscriptionToWsCurrentUser_allProject',
|
|
47
|
-
function (data) {
|
|
47
|
+
function (data, notification) {
|
|
48
48
|
// console.log("[WS-SERV] SUBSCR TO WS CURRENT PROJECT-USER AVAILABILITY - CREATE - data ", data);
|
|
49
49
|
resolve(data)
|
|
50
50
|
// self.currentUserWsAvailability$.next(data.user_available);
|
|
51
51
|
self.currentProjectUserAvailability$.next(data)
|
|
52
52
|
|
|
53
|
-
}, function (data) {
|
|
53
|
+
}, function (data, notification) {
|
|
54
54
|
resolve(data)
|
|
55
55
|
// console.log("[WS-SERV] SUBSCR TO WS CURRENT PROJECT-USER AVAILABILITY - UPDATE - data ", data);
|
|
56
56
|
self.currentProjectUserAvailability$.next(data)
|
|
57
57
|
|
|
58
|
-
}, function (data) {
|
|
58
|
+
}, function (data, notification) {
|
|
59
59
|
resolve(data)
|
|
60
60
|
if (data) {
|
|
61
61
|
// console.log("[WS-SERV] SUBSCR TO WS CURRENT PROJECT-USER AVAILABILITY - UPDATE - data", data);
|
|
@@ -106,7 +106,7 @@ export class WebsocketService {
|
|
|
106
106
|
|
|
107
107
|
this.webSocketJs.ref('/' + project_id + '/requests', 'getCurrentProjectAndSubscribeTo_WsRequests_' + project_id,
|
|
108
108
|
|
|
109
|
-
function (data) {
|
|
109
|
+
function (data, notification) {
|
|
110
110
|
// console.log("[WS-SERV] - CONVS - CREATE DATA for project ", project_id, data);
|
|
111
111
|
if (data) {
|
|
112
112
|
// ------------------------------------------------
|
|
@@ -195,7 +195,7 @@ export class WebsocketService {
|
|
|
195
195
|
// }
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
}, function (data) {
|
|
198
|
+
}, function (data, notification) {
|
|
199
199
|
|
|
200
200
|
// console.log("[WS-SERV] - CONVS - UPDATE DATA ", data);
|
|
201
201
|
|
|
@@ -213,8 +213,9 @@ export class WebsocketService {
|
|
|
213
213
|
self.updateWsRequests(data)
|
|
214
214
|
|
|
215
215
|
|
|
216
|
-
}, function (data) {
|
|
217
|
-
self.logger.log("[WS-SERV] CHAT - CONVS - ON-DATA - DATA ", data);
|
|
216
|
+
}, function (data, notification) {
|
|
217
|
+
// self.logger.log("[WS-SERV] CHAT - CONVS - ON-DATA - DATA ", data);
|
|
218
|
+
// self.logger.log("[WS-SERV] CHAT - CONVS - ON-DATA - notification ", notification);
|
|
218
219
|
|
|
219
220
|
// console.log("[WS-SERV] CHAT - CONVS - ON-DATA - DATA notification > event > method ", notification.event.method);
|
|
220
221
|
// if (notification.event.method === 'CREATE') {
|
|
@@ -347,17 +348,17 @@ export class WebsocketService {
|
|
|
347
348
|
|
|
348
349
|
this.webSocketJs.ref(path, 'subscribeToWS_RequesterPresence',
|
|
349
350
|
|
|
350
|
-
function (data) {
|
|
351
|
+
function (data, notification) {
|
|
351
352
|
// this.logger.log("[WS-REQUESTS-SERV] - SUBSCRIBE TO REQUESTER-PRECENCE - CREATE data ", data);
|
|
352
353
|
|
|
353
354
|
self.wsRequesterStatus$.next(data);
|
|
354
355
|
|
|
355
|
-
}, function (data) {
|
|
356
|
+
}, function (data, notification) {
|
|
356
357
|
// this.logger.log("[WS-REQUESTS-SERV] - SUBSCRIBE TO REQUESTER-PRECENCE - UPDATE data ", data);
|
|
357
358
|
|
|
358
359
|
self.wsRequesterStatus$.next(data);
|
|
359
360
|
|
|
360
|
-
}, function (data) {
|
|
361
|
+
}, function (data, notification) {
|
|
361
362
|
|
|
362
363
|
if (data) {
|
|
363
364
|
// this.logger.log("[WS-REQUESTS-SERV] - SUBSCRIBE TO REQUESTER-PRECENCE - ON-DATA data ", data);
|
package/src/app/utils/globals.ts
CHANGED
|
@@ -15,7 +15,6 @@ export class Globals {
|
|
|
15
15
|
jwt: string;
|
|
16
16
|
fileUploadAccept: string;
|
|
17
17
|
projectID: string;
|
|
18
|
-
logOut: boolean
|
|
19
18
|
|
|
20
19
|
constructor(
|
|
21
20
|
) { }
|
|
@@ -37,7 +36,6 @@ export class Globals {
|
|
|
37
36
|
this.lang = 'en'
|
|
38
37
|
this.fileUploadAccept = 'image/*,.pdf,.txt'
|
|
39
38
|
this.projectID = null;
|
|
40
|
-
this.logOut = true;
|
|
41
39
|
|
|
42
40
|
}
|
|
43
41
|
|
package/src/app/utils/utils.ts
CHANGED
|
@@ -6,7 +6,6 @@ export function getOSCode(key: string, token: string): boolean {
|
|
|
6
6
|
const keys: String[] = token.split("-");
|
|
7
7
|
|
|
8
8
|
let element = keys.find(el => el.includes(key))
|
|
9
|
-
// console.log('keys', keys)
|
|
10
9
|
if(element){
|
|
11
10
|
element = element.split(":")[1]
|
|
12
11
|
if(element && element === "F"){
|
package/src/assets/i18n/ar.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "الكتابة",
|
|
119
119
|
"LABEL_VERSION": "الإصدار",
|
|
120
120
|
"LABEL_CONTACTS": "جهات الاتصال",
|
|
121
|
+
"LABEL_WA":"بث واتساب",
|
|
121
122
|
"LABEL_PLACEHOLDER": "اكتب رسالتك ..",
|
|
122
123
|
"LABEL_START_NW_CONV": "محادثة جديدة",
|
|
123
124
|
"LABEL_FIRST_MSG": "صِف مشكلتك بعد قليل ، وسيتواصل معك أحد الوكلاء.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"تم إرسال الرسالة أيضًا عبر البريد الإلكتروني 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "الرموز التعبيرية غير مسموح بها",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "افتح تذكرة",
|
|
316
|
-
"DESCRIPTION": "هل تؤكد أنك تريد فتح تذكرة لهذه المحادثة؟",
|
|
317
|
-
"CONFIRM": "تأكيد",
|
|
318
|
-
"CLOSE": "إغلاق"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح"
|
|
320
315
|
}
|
package/src/assets/i18n/az.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "yazmaq",
|
|
119
119
|
"LABEL_VERSION": "versiya",
|
|
120
120
|
"LABEL_CONTACTS": "Əlaqələr",
|
|
121
|
+
"LABEL_WA":"Whatsapp yayımları",
|
|
121
122
|
"LABEL_PLACEHOLDER": "mesajınızı yazın..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Yeni söhbət",
|
|
123
124
|
"LABEL_FIRST_MSG": "Probleminizi qısaca təsvir edin, agent sizinlə əlaqə saxlayacaq.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mesaj e-poçt vasitəsilə də göndərilib 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji icazə verilmir",
|
|
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
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL icazə verilməyən domeni ehtiva edir"
|
|
320
315
|
}
|
package/src/assets/i18n/de.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "tippen",
|
|
119
119
|
"LABEL_VERSION": "Ausführung",
|
|
120
120
|
"LABEL_CONTACTS": "Kontakte",
|
|
121
|
+
"LABEL_WA":"WhatsApp-Übertragungen",
|
|
121
122
|
"LABEL_PLACEHOLDER": "Geben Sie Ihre Nachricht ein..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Neues Gespräch",
|
|
123
124
|
"LABEL_FIRST_MSG": "Beschreiben Sie kurz Ihr Problem, Sie werden von einem Agenten kontaktiert.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Nachricht auch per E-Mail gesendet 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji nicht erlaubt",
|
|
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
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "Die URL enthält eine nicht erlaubte Domain"
|
|
320
315
|
}
|
package/src/assets/i18n/en.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "typing",
|
|
119
119
|
"LABEL_VERSION": "version",
|
|
120
120
|
"LABEL_CONTACTS": "Contacts",
|
|
121
|
+
"LABEL_WA":"Whatsapp broadcasts",
|
|
121
122
|
"LABEL_PLACEHOLDER": "type your message..",
|
|
122
123
|
"LABEL_START_NW_CONV": "New conversation",
|
|
123
124
|
"LABEL_FIRST_MSG": "Describe shortly your problem, you will be contacted by an agent.",
|
|
@@ -318,11 +319,5 @@
|
|
|
318
319
|
"HOW_CAN_I_HELP_YOU":"How can i help you?"
|
|
319
320
|
},
|
|
320
321
|
"EMOJI_NOT_ELLOWED":"Emoji not allowed",
|
|
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
|
-
}
|
|
322
|
+
"DOMAIN_NOT_ALLOWED":"URL contains a non-allowed domain"
|
|
328
323
|
}
|
package/src/assets/i18n/es.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "escribir",
|
|
119
119
|
"LABEL_VERSION": "versión",
|
|
120
120
|
"LABEL_CONTACTS": "Contactos",
|
|
121
|
+
"LABEL_WA":"Transmisiones de Whatsapp",
|
|
121
122
|
"LABEL_PLACEHOLDER": "escribe tu mensaje..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Nueva conversación",
|
|
123
124
|
"LABEL_FIRST_MSG": "Describa en breve su problema, será contactado por un agente.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mensaje también enviado por correo electrónico 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji 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
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "La URL contiene un dominio no permitido"
|
|
320
315
|
}
|
package/src/assets/i18n/fr.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "dactylographie",
|
|
119
119
|
"LABEL_VERSION": "version",
|
|
120
120
|
"LABEL_CONTACTS": "Contacts",
|
|
121
|
+
"LABEL_WA":"Diffusions Whatsapp",
|
|
121
122
|
"LABEL_PLACEHOLDER": "tapez votre message..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Nouvelle conversation",
|
|
123
124
|
"LABEL_FIRST_MSG": "Décrivez brièvement votre problème, vous serez contacté par un agent.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Message également envoyé par mail 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji 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
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "L'URL contient un domaine non autorisé"
|
|
320
315
|
}
|
package/src/assets/i18n/it.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "sta scrivendo...",
|
|
119
119
|
"LABEL_VERSION": "versione",
|
|
120
120
|
"LABEL_CONTACTS": "Contatti",
|
|
121
|
+
"LABEL_WA":"WhatsApp Broadcasts",
|
|
121
122
|
"LABEL_PLACEHOLDER": "Scrivi la tua domanda...",
|
|
122
123
|
"LABEL_START_NW_CONV": "Nuova conversazione",
|
|
123
124
|
"LABEL_FIRST_MSG": "Descrivi sinteticamente il tuo problema, ti metteremo in contatto con un operatore specializzato.",
|
|
@@ -316,13 +317,7 @@
|
|
|
316
317
|
"NO_SUGGESTIONS_PRESENT":"Nessun suggerimento trovato",
|
|
317
318
|
"INSERT_PROMPT_HERE":"Inserisci un prompt qui",
|
|
318
319
|
"HOW_CAN_I_HELP_YOU":"Come posso aiutarti?"
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
}
|
|
320
|
+
},
|
|
321
|
+
"EMOJI_NOT_ELLOWED": "Emoji non consentite",
|
|
322
|
+
"DOMAIN_NOT_ALLOWED": "L'URL contiene un dominio non consentito"
|
|
328
323
|
}
|
package/src/assets/i18n/kk.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "теру",
|
|
119
119
|
"LABEL_VERSION": "нұсқасы",
|
|
120
120
|
"LABEL_CONTACTS": "Контактілер",
|
|
121
|
+
"LABEL_WA":"Whatsapp хабарлары",
|
|
121
122
|
"LABEL_PLACEHOLDER": "хабарламаңызды теріңіз..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Жаңа әңгіме",
|
|
123
124
|
"LABEL_FIRST_MSG": "Мәселеңізді қысқаша сипаттаңыз, сізге агент хабарласады.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Хабарлама электрондық пошта арқылы да жіберілді 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Эмодзи рұқсат етілмеген",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL рұқсат етілмеген доменді қамтиды"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Тапсырма ашу",
|
|
316
|
-
"DESCRIPTION": "Осы әңгіме үшін тапсырма ашқыңыз келетінін растайсыз ба?",
|
|
317
|
-
"CONFIRM": "Растау",
|
|
318
|
-
"CLOSE": "Жабу"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL рұқсат етілмеген доменді қамтиды"
|
|
320
315
|
}
|
package/src/assets/i18n/pt.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "digitando",
|
|
119
119
|
"LABEL_VERSION": "versão",
|
|
120
120
|
"LABEL_CONTACTS": "Contatos",
|
|
121
|
+
"LABEL_WA":"Transmissões WhatsApp",
|
|
121
122
|
"LABEL_PLACEHOLDER": "digite sua mensagem..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Nova conversa",
|
|
123
124
|
"LABEL_FIRST_MSG": "Descreva brevemente seu problema, você será contatado por um agente.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mensagem também enviada por e-mail 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji não permitido",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "O URL contém um domínio não permitido"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Abrir Ticket",
|
|
316
|
-
"DESCRIPTION": "Confirma que deseja abrir um ticket para esta conversa?",
|
|
317
|
-
"CONFIRM": "Confirmar",
|
|
318
|
-
"CLOSE": "Fechar"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "O URL contém um domínio não permitido"
|
|
320
315
|
}
|
package/src/assets/i18n/ru.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "печатание",
|
|
119
119
|
"LABEL_VERSION": "версия",
|
|
120
120
|
"LABEL_CONTACTS": "Контакты",
|
|
121
|
+
"LABEL_WA":"Трансляции Whatsapp",
|
|
121
122
|
"LABEL_PLACEHOLDER": "введите ваше сообщение..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Новый разговор",
|
|
123
124
|
"LABEL_FIRST_MSG": "Кратко опишите вашу проблему, с вами свяжется агент.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Сообщение также отправлено по электронной почте 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Эмодзи не разрешены",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL содержит недопустимый домен"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Открыть тикет",
|
|
316
|
-
"DESCRIPTION": "Вы подтверждаете, что хотите открыть тикет для этого разговора?",
|
|
317
|
-
"CONFIRM": "Подтвердить",
|
|
318
|
-
"CLOSE": "Закрыть"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL содержит недопустимый домен"
|
|
320
315
|
}
|
package/src/assets/i18n/sr.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "куцање",
|
|
119
119
|
"LABEL_VERSION": "верзија",
|
|
120
120
|
"LABEL_CONTACTS": "Kонтакти",
|
|
121
|
+
"LABEL_WA":"Whatsapp емитовања",
|
|
121
122
|
"LABEL_PLACEHOLDER": "откуцај своју поруку..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Нови разговор",
|
|
123
124
|
"LABEL_FIRST_MSG": "Опишите укратко свој проблем, контактираће вас агент.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Порука је такође послата е-поштом 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emodžiji nisu dozvoljeni",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL sadrži nedozvoljenu domenu"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Otvori tiket",
|
|
316
|
-
"DESCRIPTION": "Da li potvrđujete da želite da otvorite tiket za ovaj razgovor?",
|
|
317
|
-
"CONFIRM": "Potvrdi",
|
|
318
|
-
"CLOSE": "Zatvori"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL sadrži nedozvoljenu domenu"
|
|
320
315
|
}
|
package/src/assets/i18n/sv.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "skriver",
|
|
119
119
|
"LABEL_VERSION": "version",
|
|
120
120
|
"LABEL_CONTACTS": "Kontakter",
|
|
121
|
+
"LABEL_WA":"Whatsapp-sändningar",
|
|
121
122
|
"LABEL_PLACEHOLDER": "skriv ditt meddelande..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Ny konversation",
|
|
123
124
|
"LABEL_FIRST_MSG": "Beskriv kort ditt problem, du kommer att kontaktas av en agent.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Meddelande skickas även via mail 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji är inte tillåtna",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL:en innehåller en otillåten domän"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Öppna Ärende",
|
|
316
|
-
"DESCRIPTION": "Bekräftar du att du vill öppna ett ärende för den här konversationen?",
|
|
317
|
-
"CONFIRM": "Bekräfta",
|
|
318
|
-
"CLOSE": "Stäng"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL:en innehåller en otillåten domän"
|
|
320
315
|
}
|
package/src/assets/i18n/tr.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "yazıyor",
|
|
119
119
|
"LABEL_VERSION": "versiyon",
|
|
120
120
|
"LABEL_CONTACTS": "Kişiler",
|
|
121
|
+
"LABEL_WA":"Whatsapp Yayınları",
|
|
121
122
|
"LABEL_PLACEHOLDER": "mesajını yaz..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Yeni görüşme",
|
|
123
124
|
"LABEL_FIRST_MSG": "Sorununuzu kısaca açıklayın, bir temsilci sizinle iletişime geçecektir.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mesaj ayrıca e-posta ile gönderilir 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji'ye izin verilmiyor",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL izin verilmeyen bir alan adı içeriyor"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Bilet Aç",
|
|
316
|
-
"DESCRIPTION": "Bu görüşme için bir bilet açmak istediğinizi onaylıyor musunuz?",
|
|
317
|
-
"CONFIRM": "Onayla",
|
|
318
|
-
"CLOSE": "Kapat"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL izin verilmeyen bir alan adı içeriyor"
|
|
320
315
|
}
|
package/src/assets/i18n/uk.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "введення тексту",
|
|
119
119
|
"LABEL_VERSION": "версія",
|
|
120
120
|
"LABEL_CONTACTS": "Контакти",
|
|
121
|
+
"LABEL_WA":"Трансляції Whatsapp",
|
|
121
122
|
"LABEL_PLACEHOLDER": "введіть своє повідомлення..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Нова розмова",
|
|
123
124
|
"LABEL_FIRST_MSG": "Коротко опишіть вашу проблему, з вами зв’яжеться агент.",
|
|
@@ -310,11 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Повідомлення також надіслано електронною поштою 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Емодзі не дозволені",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL містить недозволений домен"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Відкрити тікет",
|
|
316
|
-
"DESCRIPTION": "Підтверджуєте, що хочете відкрити тікет для цієї розмови?",
|
|
317
|
-
"CONFIRM": "Підтвердити",
|
|
318
|
-
"CLOSE": "Закрити"
|
|
319
|
-
}
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL містить недозволений домен"
|
|
320
315
|
}
|
package/src/assets/i18n/uz.json
CHANGED
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"LABEL_IS_WRITING": "yozish",
|
|
119
119
|
"LABEL_VERSION": "versiya",
|
|
120
120
|
"LABEL_CONTACTS": "Kontaktlar",
|
|
121
|
+
"LABEL_WA":"Whatsapp translyatsiyalari",
|
|
121
122
|
"LABEL_PLACEHOLDER": "xabaringizni yozing..",
|
|
122
123
|
"LABEL_START_NW_CONV": "Yangi suhbat",
|
|
123
124
|
"LABEL_FIRST_MSG": "Muammoingizni qisqacha tasvirlab bering, siz bilan agent bog'lanadi.",
|
|
@@ -310,12 +311,5 @@
|
|
|
310
311
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Xabar elektron pochta orqali ham yuborildi 📩"
|
|
311
312
|
},
|
|
312
313
|
"EMOJI_NOT_ELLOWED": "Emoji'ga ruxsat berilmagan",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL ruxsat etilmagan domenni o'z ichiga oladi"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Chiptani ochish",
|
|
316
|
-
"DESCRIPTION": "Ushbu suhbat uchun chipta ochmoqchi ekanligingizni tasdiqlaysizmi?",
|
|
317
|
-
"CONFIRM": "Tasdiqlash",
|
|
318
|
-
"CLOSE": "Yopish"
|
|
319
|
-
}
|
|
320
|
-
|
|
314
|
+
"DOMAIN_NOT_ALLOWED": "URL ruxsat etilmagan domenni o'z ichiga oladi"
|
|
321
315
|
}
|
|
@@ -1010,7 +1010,6 @@ class Chat21Client {
|
|
|
1010
1010
|
this.start( () => {
|
|
1011
1011
|
// callback();
|
|
1012
1012
|
});
|
|
1013
|
-
this.initKeepAliveWorker()
|
|
1014
1013
|
}
|
|
1015
1014
|
this.client.publish(
|
|
1016
1015
|
this.presence_topic,
|
|
@@ -1028,36 +1027,6 @@ class Chat21Client {
|
|
|
1028
1027
|
console.error("Chat client error event", error);
|
|
1029
1028
|
}
|
|
1030
1029
|
);
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
initKeepAliveWorker(){
|
|
1037
|
-
this.worker= new Worker('assets/js/mqtt-keepalive-worker.js');
|
|
1038
|
-
if (this.log) {
|
|
1039
|
-
console.log("Chat21Client - initKeepAliveWorker() - worker created", this.worker);
|
|
1040
|
-
}
|
|
1041
|
-
// this.worker.postMessage({
|
|
1042
|
-
// action: 'start',
|
|
1043
|
-
// user_id: this.user_id,
|
|
1044
|
-
// client_id: this.client_id,
|
|
1045
|
-
// jwt: this.jwt,
|
|
1046
|
-
// endpoint: this.endpoint
|
|
1047
|
-
// });
|
|
1048
|
-
this.worker.onmessage = (event) => {
|
|
1049
|
-
if (event.data.action === 'ping') {
|
|
1050
|
-
if (this.client && this.client.connected) {
|
|
1051
|
-
// questo non causa refresh di niente
|
|
1052
|
-
this.client.publish(
|
|
1053
|
-
`apps/tilechat/users/${this.user_id}/keepalive`,
|
|
1054
|
-
JSON.stringify({ ts: Date.now() })
|
|
1055
|
-
);
|
|
1056
|
-
}
|
|
1057
|
-
}
|
|
1058
|
-
};
|
|
1059
|
-
|
|
1060
|
-
this.worker.postMessage({ action: 'ping' });
|
|
1061
1030
|
}
|
|
1062
1031
|
|
|
1063
1032
|
onDisconnect(callback){
|
|
@@ -1072,11 +1041,6 @@ class Chat21Client {
|
|
|
1072
1041
|
this.connected = false
|
|
1073
1042
|
if (this.log) {console.log("Chat client close event");}
|
|
1074
1043
|
callback('close')
|
|
1075
|
-
if (this.worker) {
|
|
1076
|
-
this.worker.postMessage({ action: 'stop' });
|
|
1077
|
-
this.worker.terminate();
|
|
1078
|
-
this.worker = null;
|
|
1079
|
-
}
|
|
1080
1044
|
}
|
|
1081
1045
|
);
|
|
1082
1046
|
this.client.on('offline',
|
package/src/assets/test.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<meta name="viewport" content="width=device-width">
|
|
7
|
-
<title>
|
|
7
|
+
<title>replit</title>
|
|
8
8
|
</head>
|
|
9
9
|
|
|
10
10
|
<body style="height: 100%;">
|
|
@@ -20,10 +20,7 @@
|
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
22
|
<iframe id="myIFrame" frameBorder="0" width="100%" style="display: flex; height: 95vh" onload="onLoad()"
|
|
23
|
-
|
|
24
|
-
allow="autoplay; fullscreen; geolocation; microphone; camera; display-capture; encrypted-media; clipboard-read; clipboard-write;"
|
|
25
|
-
loading="eager" importance="high">
|
|
26
|
-
</iframe>
|
|
23
|
+
src="http://localhost:8080/#/conversation-detail?tiledesk_supportMode=true&jwt=JWT eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZmQzNGU0MjQ5NjEwZTAwMzQ5ODUwNzgiLCJlbWFpbCI6ImdhYnJpZWxlLnBhbmljb0Bmcm9udGllcmUyMS5pdCIsImZpcnN0bmFtZSI6IkdhYnJpZWxlMiIsImxhc3RuYW1lIjoiUGFuaWNvIC1wcmUiLCJlbWFpbHZlcmlmaWVkIjp0cnVlLCJpYXQiOjE2OTgzMzYyMTMsImF1ZCI6Imh0dHBzOi8vdGlsZWRlc2suY29tIiwiaXNzIjoiaHR0cHM6Ly90aWxlZGVzay5jb20iLCJzdWIiOiJ1c2VyIiwianRpIjoiNjAzZGY3NDQtZWY0OS00Mjg2LWJlMWQtYWM5OGYyYTNkMTJiIn0.bof5QPQP262yCQfpeSjqyoYPkSCttg5NQFkcV8d634xzeq7wJBdhtiO7IJY6hS81a1YyXrAsxlK7RiNS-UZdYiTXR81UXurQd1fnE9jtaggB82tyNL8vmiZEOs6xh4TqO3-kkBzRxQIp74bY53fk_mu5RmNbAjIgUWEufaNDiv8"></iframe>
|
|
27
24
|
|
|
28
25
|
<script>
|
|
29
26
|
// window.addEventListener('message', event => {
|
|
@@ -37,7 +37,6 @@
|
|
|
37
37
|
"wsUrlRel": "${WS_URL_RELATIVE}",
|
|
38
38
|
"storage_prefix": "${CHAT_STORAGE_PREFIX}",
|
|
39
39
|
"emailSection": "${EMAIL_SECTION}",
|
|
40
|
-
"ticketSection": "${TICKET_SECTION}",
|
|
41
40
|
"whatsappTemplatesSection":"${WHATSAPP_TEMPLATES_SECTION}",
|
|
42
41
|
"googleMapsApiKey":"${GOOGLE_MAPS_APIKEY}"
|
|
43
42
|
}
|
package/src/chat-config.json
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
export interface ProjectUser {
|
|
2
2
|
_id?: string;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
role?: string;
|
|
3
|
+
id?: string;
|
|
4
|
+
__v?: any;
|
|
5
|
+
attributes?: any;
|
|
6
|
+
createdAt?: string | any;
|
|
8
7
|
createdBy?: string;
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
id_project?: any;
|
|
9
|
+
id_user?: any;
|
|
11
10
|
isAuthenticated?: boolean;
|
|
12
11
|
isBusy?: boolean;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
is_group_member?: boolean;
|
|
13
|
+
last_login_at?: string;
|
|
14
|
+
number_assigned_requests?: number;
|
|
15
|
+
permissions?: any;
|
|
16
|
+
presence?: { [key: string]: string } | any;
|
|
16
17
|
profileStatus?: string;
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
role?: string;
|
|
19
|
+
roleType?: number;
|
|
20
|
+
rolePermissions?: string[];
|
|
21
|
+
status?: string;
|
|
22
|
+
tags?: any;
|
|
23
|
+
trashed?: boolean;
|
|
24
|
+
updatedAt?: string | any;
|
|
25
|
+
user_available?: boolean;
|
|
26
|
+
/** Derived in UI (e.g. from getUserStatusFromProjectUser) */
|
|
27
|
+
teammateStatus?: any;
|
|
19
28
|
}
|
|
@@ -387,7 +387,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
387
387
|
} else {
|
|
388
388
|
|
|
389
389
|
if (message.attributes.messagelabel.parameters.firstname) {
|
|
390
|
-
// other user has been added to the group (and he has a
|
|
390
|
+
// other user has been added to the group (and he has a firstname)
|
|
391
391
|
subject = message.attributes.messagelabel.parameters.firstname;
|
|
392
392
|
verb = INFO_SUPPORT_USER_ADDED_VERB;
|
|
393
393
|
complement = INFO_SUPPORT_USER_ADDED_COMPLEMENT;
|
|
@@ -365,7 +365,7 @@ export class MQTTConversationHandler extends ConversationHandlerService {
|
|
|
365
365
|
complement = INFO_SUPPORT_USER_ADDED_COMPLEMENT;
|
|
366
366
|
} else {
|
|
367
367
|
if (message.attributes.messagelabel.parameters.firstname) {
|
|
368
|
-
// other user has been added to the group (and he has a
|
|
368
|
+
// other user has been added to the group (and he has a firstname)
|
|
369
369
|
subject = message.attributes.messagelabel.parameters.firstname;
|
|
370
370
|
verb = INFO_SUPPORT_USER_ADDED_VERB;
|
|
371
371
|
complement = INFO_SUPPORT_USER_ADDED_COMPLEMENT;
|
|
@@ -765,12 +765,6 @@ export function isOnMobileDevice() {
|
|
|
765
765
|
return IS_ON_MOBILE_DEVICE;
|
|
766
766
|
}
|
|
767
767
|
|
|
768
|
-
|
|
769
|
-
export function checkIfIsInIframe(){
|
|
770
|
-
const isInIframe = window.self !== window.top;
|
|
771
|
-
return isInIframe;
|
|
772
|
-
}
|
|
773
|
-
|
|
774
768
|
export function checkWindowWidthIsLessThan991px() {
|
|
775
769
|
// console.log('UTILS - checkWindowWidthIsLessThan991px:: ', window.innerWidth);
|
|
776
770
|
if (window.innerWidth < 991) {
|
|
@@ -1024,16 +1018,8 @@ export function isAllowedUrlInText(text: string, allowedUrls: string[]) {
|
|
|
1024
1018
|
}
|
|
1025
1019
|
|
|
1026
1020
|
function extractUrls(text: string): string[] {
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
const matches = text.match(urlRegex) || [];
|
|
1030
|
-
// Normalizza: aggiunge https:// se manca, così il parsing con new URL() funziona
|
|
1031
|
-
return matches.map((url) => {
|
|
1032
|
-
if (!/^https?:\/\//i.test(url)) {
|
|
1033
|
-
return 'https://' + url;
|
|
1034
|
-
}
|
|
1035
|
-
return url;
|
|
1036
|
-
});
|
|
1021
|
+
const urlRegex = /https?:\/\/[^\s]+/g;
|
|
1022
|
+
return text.match(urlRegex) || [];
|
|
1037
1023
|
}
|
|
1038
1024
|
|
|
1039
1025
|
/**
|