@chat21/chat21-ionic 3.4.27-rc1 → 3.4.27-rc10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/angular.json +1 -0
  3. package/package.json +1 -1
  4. package/src/app/app.component.ts +46 -2
  5. package/src/app/components/canned-response/canned-response.component.scss +0 -2
  6. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +23 -0
  7. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +30 -0
  8. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +26 -7
  9. package/src/app/components/conversation-info/info-group/info-group.component.ts +23 -21
  10. package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.html +1 -1
  11. package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.ts +5 -1
  12. package/src/app/components/navbar/navbar.component.html +3 -3
  13. package/src/app/components/navbar/navbar.component.ts +29 -38
  14. package/src/app/components/project-item/project-item.component.ts +11 -11
  15. package/src/app/components/sidebar/sidebar.component.html +65 -45
  16. package/src/app/components/sidebar/sidebar.component.ts +92 -117
  17. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +2 -2
  18. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +9 -7
  19. package/src/app/pages/conversation-detail/conversation-detail.page.html +3 -1
  20. package/src/app/pages/conversation-detail/conversation-detail.page.ts +47 -5
  21. package/src/app/pages/conversations-list/conversations-list.page.html +2 -0
  22. package/src/app/pages/conversations-list/conversations-list.page.ts +36 -3
  23. package/src/app/services/global-settings/global-settings.service.ts +5 -2
  24. package/src/app/shared/shared.module.ts +11 -0
  25. package/src/app/utils/permissions.constants.ts +14 -11
  26. package/src/assets/i18n/ar.json +11 -1
  27. package/src/assets/i18n/az.json +11 -1
  28. package/src/assets/i18n/de.json +11 -1
  29. package/src/assets/i18n/en.json +11 -1
  30. package/src/assets/i18n/es.json +11 -1
  31. package/src/assets/i18n/fr.json +11 -1
  32. package/src/assets/i18n/it.json +13 -3
  33. package/src/assets/i18n/kk.json +11 -1
  34. package/src/assets/i18n/pt.json +11 -1
  35. package/src/assets/i18n/ru.json +11 -1
  36. package/src/assets/i18n/sr.json +11 -1
  37. package/src/assets/i18n/sv.json +11 -1
  38. package/src/assets/i18n/tr.json +11 -1
  39. package/src/assets/i18n/uk.json +11 -1
  40. package/src/assets/i18n/uz.json +12 -1
  41. package/src/assets/js/agentDesktop-sdk.js +47 -0
  42. package/src/chat-config-template.json +1 -0
  43. package/src/chat-config.json +1 -0
  44. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +3 -0
  45. package/src/chat21-core/utils/utils.ts +10 -2
@@ -176,6 +176,10 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
176
176
  copilotQuestion: string = '';
177
177
  /**COPILOT : end */
178
178
 
179
+ /** TICKET: start */
180
+ isTicketEnabled: boolean = false;
181
+ /** TICKET: end */
182
+
179
183
  isMine = isMine
180
184
  isInfo = isInfo
181
185
  isFirstMessage = isFirstMessage
@@ -424,6 +428,8 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
424
428
  ionViewDidEnter() {
425
429
  this.logger.log('[CONVS-DETAIL] > ionViewDidEnter')
426
430
  // this.info_content_child_enabled = true;
431
+ // Scroll to bottom to show the last message without animation
432
+ this.scrollToLastMessage()
427
433
  }
428
434
 
429
435
  // Unsubscibe when new page transition end
@@ -483,6 +489,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
483
489
  this.messages = [] // list messages of conversation
484
490
  this.isFileSelected = false // indicates if a file has been selected (image to upload)
485
491
  this.isEmailEnabled = (this.appConfigProvider.getConfig().emailSection === 'true' || this.appConfigProvider.getConfig().emailSection === true) ? true : false;
492
+ this.isTicketEnabled = (this.appConfigProvider.getConfig().ticketSection === 'true' || this.appConfigProvider.getConfig().ticketSection === true) ? true : false;
486
493
  this.isWhatsappTemplatesEnabled = (this.appConfigProvider.getConfig().whatsappTemplatesSection === 'true' || this.appConfigProvider.getConfig().whatsappTemplatesSection === true) ? true : false;
487
494
 
488
495
  this.cannedResponsesService.initialize(appconfig.apiUrl)
@@ -554,9 +561,9 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
554
561
  this.offlineMsgEmail = this.checkOfflineMsgEmailIsEnabled(project)
555
562
  this.isCopilotEnabled = this.projectPlanUtils.checkProjectProfileFeature(project, 'copilot');
556
563
  this.fileUploadAccept = this.checkAcceptedUploadFile(project)
557
- this.rolesCanned = this.checkCannedResponsesRoles(project)
564
+ this.rolesCanned = this.checkCannedResponsesRoles()
558
565
  this.canShowCanned = this.checkCannedResponses(project)
559
- console.log('[CONVS-DETAIL] this.rolesCanned ', this.rolesCanned)
566
+ this.logger.log('[CONVS-DETAIL] this.rolesCanned ', this.canShowCanned)
560
567
  }
561
568
  }, (error) => {
562
569
  this.logger.error('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT - ERROR ', error)
@@ -603,14 +610,14 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
603
610
 
604
611
  let hasRoleToShowCanned = this.rolesCanned[PERMISSIONS.CANNED_RESPONSES_READ]
605
612
  this.logger.log('[CONVS-DETAIL] checkCannedResponses hasRoleToShowCanned ', hasRoleToShowCanned)
606
- if(hasRoleToShowCanned){
607
- return true
613
+ if(!hasRoleToShowCanned){
614
+ return false
608
615
  }
609
616
 
610
617
  return true
611
618
  }
612
619
 
613
- checkCannedResponsesRoles(project: Project): { [key: string]: boolean } {
620
+ checkCannedResponsesRoles(): { [key: string]: boolean } {
614
621
  const permissionKeys = [
615
622
  'CANNED_RESPONSES_CREATE',
616
623
  'CANNED_RESPONSES_READ',
@@ -711,6 +718,11 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
711
718
  "WHATSAPP.ERROR_WHATSAPP_NOT_INSTALLED",
712
719
  "WHATSAPP.ERROR_WHATSAPP_GENERIC_ERROR",
713
720
 
721
+ "TICKET.OPEN_TICKET",
722
+ "TICKET.DESCRIPTION",
723
+ "TICKET.CONFIRM",
724
+ "TICKET.CLOSE",
725
+
714
726
  "COPILOT.ASK_AI",
715
727
  "COPILOT.NO_SUGGESTIONS_PRESENT",
716
728
 
@@ -1926,6 +1938,13 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
1926
1938
  }
1927
1939
 
1928
1940
 
1941
+ onOpenTicket() {
1942
+ this.logger.debug('[CONVS-DETAIL] openTicketOnExternalService - conversationWith ', this.conversationWith)
1943
+ if(window['openTicketOnHDA']){
1944
+ window['openTicketOnHDA'](this.conversationWith)
1945
+ }
1946
+
1947
+ }
1929
1948
  // -------------- START SCROLL/RESIZE -------------- //
1930
1949
  /** */
1931
1950
  resizeTextArea() {
@@ -1969,6 +1988,29 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
1969
1988
  }
1970
1989
  }
1971
1990
 
1991
+ /**
1992
+ * Scroll to last message without animation using requestAnimationFrame
1993
+ * This is a best practice alternative to setTimeout
1994
+ */
1995
+ private scrollToLastMessage() {
1996
+ this.showIonContent = true
1997
+ if (this.ionContentChatArea) {
1998
+ // Use requestAnimationFrame for better performance
1999
+ requestAnimationFrame(() => {
2000
+ requestAnimationFrame(() => {
2001
+ // Double RAF ensures DOM is fully rendered
2002
+ this.ionContentChatArea.scrollToBottom(0).then(() => {
2003
+ this.logger.log('[CONVS-DETAIL] scroll posizionato all\'ultimo messaggio')
2004
+ }).catch((error) => {
2005
+ this.logger.error('[CONVS-DETAIL] errore durante lo scroll:', error)
2006
+ })
2007
+ })
2008
+ })
2009
+ } else {
2010
+ this.logger.warn('[CONVS-DETAIL] ionContentChatArea non disponibile')
2011
+ }
2012
+ }
2013
+
1972
2014
  /**
1973
2015
  * detectBottom
1974
2016
  */
@@ -7,6 +7,8 @@
7
7
  [sound_btn]="sound_btn"
8
8
  [isMobile]="isMobile"
9
9
  [isVisibleTKT]="isVisibleTKT"
10
+ [isVisibleCNT]="isVisibleCNT"
11
+ [roles]="rolesHeader"
10
12
  (onSoundChange)="onSoundChange($event)"
11
13
  (openContactsDirectory)=openContactsDirectory($event)
12
14
  (openProfileInfo)=openProfileInfo($event)>
@@ -53,7 +53,10 @@ import { Globals } from 'src/app/utils/globals';
53
53
  import { TriggerEvents } from 'src/app/services/triggerEvents/triggerEvents';
54
54
  import { MessageModel } from 'src/chat21-core/models/message';
55
55
  import { Project } from 'src/chat21-core/models/projects';
56
- import { getOSCode } from 'src/app/utils/utils';
56
+ import { getOSCode, hasRole } from 'src/app/utils/utils';
57
+ import { PERMISSIONS } from 'src/app/utils/permissions.constants';
58
+ import { ProjectUser } from 'src/chat21-core/models/projectUsers';
59
+ import { ProjectUsersService } from 'src/app/services/project_users/project-users.service';
57
60
 
58
61
  @Component({
59
62
  selector: 'app-conversations-list',
@@ -82,6 +85,7 @@ export class ConversationListPage implements OnInit {
82
85
  public archived_btn: boolean
83
86
  public sound_btn: string
84
87
  public isVisibleTKT: boolean = true;
88
+ public isVisibleCNT: boolean = true;;
85
89
  public convertMessage = convertMessage
86
90
  private isShowMenuPage = false
87
91
  private logger: LoggerService = LoggerInstance.getInstance()
@@ -104,6 +108,9 @@ export class ConversationListPage implements OnInit {
104
108
  public isMobile: boolean = false;
105
109
  public isInitialized: boolean = false;
106
110
 
111
+ public projectUser: ProjectUser;
112
+ public rolesHeader: { [key: string]: boolean }
113
+
107
114
  // PROJECT AVAILABILITY INFO: start
108
115
  project: Project
109
116
  profile_name_translated: string;
@@ -130,6 +137,7 @@ export class ConversationListPage implements OnInit {
130
137
  private translateService: CustomTranslateService,
131
138
  public tiledeskService: TiledeskService,
132
139
  public tiledeskAuthService: TiledeskAuthService,
140
+ public projectUsersService: ProjectUsersService,
133
141
  public appConfigProvider: AppConfigProvider,
134
142
  public platform: Platform,
135
143
  public wsService: WebsocketService,
@@ -371,6 +379,11 @@ export class ConversationListPage implements OnInit {
371
379
  // save conversationHandler in chatManager
372
380
  this.chatManager.setConversationsHandler(this.conversationsHandlerService)
373
381
  this.showPlaceholder = false
382
+
383
+ // Hide loading spinner if there are no conversations
384
+ if (this.conversations.length === 0) {
385
+ this.loadingIsActive = false
386
+ }
374
387
  }
375
388
 
376
389
  // private manageStoredConversations() {
@@ -471,9 +484,9 @@ export class ConversationListPage implements OnInit {
471
484
  }
472
485
 
473
486
  listenToCurrentStoredProject() {
474
- this.events.subscribe('storage:last_project', projectObjct => {
487
+ this.events.subscribe('storage:last_project', async(projectObjct) => {
475
488
  if (projectObjct && projectObjct !== 'undefined') {
476
- // console.log('[CONVS-LIST-PAGE] - GET STORED PROJECT ', projectObjct)
489
+ console.log('[CONVS-LIST-PAGE] - GET STORED PROJECT ', projectObjct)
477
490
 
478
491
  //TODO: recuperare info da root e non da id_project
479
492
  this.project = {
@@ -496,6 +509,10 @@ export class ConversationListPage implements OnInit {
496
509
  } else if (this.project.profile.type === 'payment' && this.project.profile.name === 'enterprise') {
497
510
  this.profile_name_translated = this.translationMapHeader.get('PaydPlanNameEnterprise');
498
511
  }
512
+
513
+ this.projectUser = await this.projectUsersService.getProjectUserByProjectId(this.project._id)
514
+ this.rolesHeader = this.checkCannedResponsesRoles();
515
+ this.logger.log('[CONVS-LIST-PAGE] - GET PROJECT USER ROLES ', this.rolesHeader)
499
516
  }
500
517
  })
501
518
  }
@@ -631,8 +648,24 @@ export class ConversationListPage implements OnInit {
631
648
  const public_Key = this.appConfigProvider.getConfig().t2y12PruGU9wUtEGzBJfolMIgK
632
649
  this.logger.log('[CONVS-LIST-PAGE] AppConfigService getAppConfig public_Key', public_Key)
633
650
  this.isVisibleTKT = getOSCode("TKT", public_Key);
651
+ this.isVisibleCNT = getOSCode("CNT", public_Key);
634
652
  }
635
653
 
654
+ checkCannedResponsesRoles(): { [key: string]: boolean } {
655
+ const permissionKeys = [
656
+ 'LEADS_READ',
657
+ ] as const;
658
+
659
+ const roles: { [key: string]: boolean } = {};
660
+ for (const key of permissionKeys) {
661
+ const permission = PERMISSIONS[key];
662
+ roles[permission] = hasRole(this.projectUser, permission);
663
+ }
664
+
665
+ return roles;
666
+
667
+ }
668
+
636
669
  onBackButtonFN(event) {
637
670
  this.conversationType = 'active'
638
671
 
@@ -88,8 +88,8 @@ export class GlobalSettingsService {
88
88
  this.logger.debug('[GLOBAL-SET] setVariableFromStorage :::::::: SET VARIABLE ---------->', Object.keys(globals));
89
89
  for (const key of Object.keys(globals)) {
90
90
  const val = this.appStorageService.getItem(key);
91
- // this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals KEY ---------->', key);
92
- // this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals VAL ---------->', val);
91
+ this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals KEY ---------->', key);
92
+ this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals VAL ---------->', val);
93
93
  if (val && val !== null) {
94
94
  // globals.setParameter(key, val);
95
95
  globals[key] = stringToBoolean(val);
@@ -111,8 +111,10 @@ export class GlobalSettingsService {
111
111
  }
112
112
 
113
113
  TEMP = getParameterByName(windowContext, 'tiledesk_supportMode');
114
+ console.log('TEMP supportMode', TEMP);
114
115
  if (TEMP) {
115
116
  globals.supportMode = stringToBoolean(TEMP);
117
+ this.appStorageService.setItem('supportMode', String(globals.supportMode))
116
118
  }
117
119
 
118
120
  TEMP = getParameterByName(windowContext, 'tiledesk_lang');
@@ -138,6 +140,7 @@ export class GlobalSettingsService {
138
140
  TEMP = getParameterByName(windowContext, 'tiledesk_projectID');
139
141
  if (TEMP) {
140
142
  globals.projectID = TEMP;
143
+ this.appStorageService.setItem('projectID', TEMP)
141
144
  }
142
145
 
143
146
  }
@@ -22,6 +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
+ import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
26
+ import { createTranslateLoader } from 'src/chat21-core/utils/utils';
27
+ import { HttpClient } from '@angular/common/http';
25
28
 
26
29
  // import { MessageTextAreaComponent } from '../components/conversation-detail/message-text-area/message-text-area.component'; // MessageTextAreaComponent is part of the declarations ConversationDetailPageModule
27
30
 
@@ -140,6 +143,14 @@ import { SafeHtmlPipe } from '../directives/safe-html.pipe';
140
143
  NgSelectModule,
141
144
  FormsModule,
142
145
 
146
+ TranslateModule.forChild({
147
+ loader: {
148
+ provide: TranslateLoader,
149
+ useFactory: (createTranslateLoader),
150
+ deps: [HttpClient]
151
+ }
152
+ })
153
+
143
154
  ],
144
155
  schemas: [
145
156
  CUSTOM_ELEMENTS_SCHEMA,
@@ -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
- TEAMMATES_DETAILS_READ: 'teammates_detail_read',
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
- TEAMMATE_STATUS_UPDATE: 'teammate_status_update',
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
  };
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
- "EMOJI_NOT_ELLOWED": "Emoji non consentite",
317
- "DOMAIN_NOT_ALLOWED": "L'URL contiene un dominio non consentito"
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
  }
@@ -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": "URL рұқсат етілмеген доменді қамтиды"
313
+ "DOMAIN_NOT_ALLOWED": "URL рұқсат етілмеген доменді қамтиды",
314
+ "TICKET": {
315
+ "OPEN_TICKET": "Тапсырма ашу",
316
+ "DESCRIPTION": "Осы әңгіме үшін тапсырма ашқыңыз келетінін растайсыз ба?",
317
+ "CONFIRM": "Растау",
318
+ "CLOSE": "Жабу"
319
+ }
310
320
  }
@@ -225,6 +225,10 @@
225
225
  "admin": "Administrador",
226
226
  "agent": "Agente",
227
227
  "Conversations": "Conversas",
228
+ "Monitor": "Monitor",
229
+ "Flows": "Fluxos",
230
+ "Knowledgebases": "Bases de Conhecimento",
231
+ "Whatsappbroadcasts": "Transmissões do WhatsApp",
228
232
  "Apps":"Aplicativos",
229
233
  "Analytics":"Análise",
230
234
  "Activities": "Atividades",
@@ -306,5 +310,11 @@
306
310
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mensagem também enviada por e-mail 📩"
307
311
  },
308
312
  "EMOJI_NOT_ELLOWED": "Emoji não permitido",
309
- "DOMAIN_NOT_ALLOWED": "O URL contém um domínio 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
+ }
310
320
  }
@@ -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": "URL содержит недопустимый домен"
313
+ "DOMAIN_NOT_ALLOWED": "URL содержит недопустимый домен",
314
+ "TICKET": {
315
+ "OPEN_TICKET": "Открыть тикет",
316
+ "DESCRIPTION": "Вы подтверждаете, что хотите открыть тикет для этого разговора?",
317
+ "CONFIRM": "Подтвердить",
318
+ "CLOSE": "Закрыть"
319
+ }
310
320
  }
@@ -225,6 +225,10 @@
225
225
  "admin": "Aдминистратор",
226
226
  "agent": "Агент",
227
227
  "Conversations": "Разговори",
228
+ "Monitor": "Монитор",
229
+ "Flows": "Токови",
230
+ "Knowledgebases": "Baze znanja",
231
+ "Whatsappbroadcasts": "WhatsApp emitovanja",
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": "Emodžiji nisu dozvoljeni",
309
- "DOMAIN_NOT_ALLOWED": "URL sadrži nedozvoljenu domenu"
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
+ }
310
320
  }
@@ -225,6 +225,10 @@
225
225
  "admin": "Administratör",
226
226
  "agent": "Ombud",
227
227
  "Conversations": "Samtal",
228
+ "Monitor": "Monitor",
229
+ "Flows": "Flöden",
230
+ "Knowledgebases": "Kunskapsbaser",
231
+ "Whatsappbroadcasts": "WhatsApp-sändningar",
228
232
  "Apps": "Appar",
229
233
  "Analytics": "Analytics",
230
234
  "Activities": "Aktiviteter",
@@ -306,5 +310,11 @@
306
310
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Meddelande skickas även via mail 📩"
307
311
  },
308
312
  "EMOJI_NOT_ELLOWED": "Emoji är inte tillåtna",
309
- "DOMAIN_NOT_ALLOWED": "URL:en innehåller en otillåten domän"
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
+ }
310
320
  }