@tiledesk/tiledesk-server 2.2.21 → 2.2.24

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,15 @@
1
- # 2.2.21 -> PROD
1
+
2
+ # 2.2.24
3
+ - webhook subscription can fetch temmates endpoint
4
+ - Added hasBot and createdAt index to the request model
5
+
6
+ # 2.2.23 -> PROD
7
+ - Increased list answers limit from 1000 to 3000
8
+
9
+ # 2.2.22
10
+ - Increased list answers limit from 300 to 1000
11
+
12
+ # 2.2.21
2
13
  - Increased list answers limit from 100 to 300
3
14
  - enabled again waiting time in widgets endpoint unused
4
15
 
package/app.js CHANGED
@@ -286,7 +286,7 @@ var projectSetter = function (req, res, next) {
286
286
 
287
287
  if (projectid) {
288
288
  Project.findOne({_id: projectid, status: 100})
289
- .cache(cacheUtil.defaultTTL, "projects:id:"+projectid)
289
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "projects:id:"+projectid)
290
290
  .exec(function(err, project){
291
291
  if (err) {
292
292
  winston.warn("Problem getting project with id: " + projectid + " req.originalUrl: " + req.originalUrl);
@@ -375,7 +375,7 @@ router.post('/', function (req, res) {
375
375
  winston.debug('query:'+ projectId);
376
376
 
377
377
  return Request.findOne(query)
378
- .cache(cacheUtil.defaultTTL, projectId+":requests:request_id:"+recipient_id)
378
+ //@DISABLED_CACHE cacheUtil.defaultTTL, projectId+":requests:request_id:"+recipient_id)
379
379
  .exec(function(err, request) {
380
380
 
381
381
  if (err) {
@@ -0,0 +1,624 @@
1
+ [
2
+ {
3
+ "lang": "EN",
4
+ "data":{
5
+ "LABEL_PLACEHOLDER": "type your message..",
6
+ "LABEL_START_NW_CONV": "New conversation",
7
+ "LABEL_FIRST_MSG": "Describe shortly your problem, you will be contacted by an agent.",
8
+ "LABEL_FIRST_MSG_NO_AGENTS": "🤔 All operators are offline at the moment. You can anyway describe your problem. It will be assigned to the support team who will get back to you as soon as possible.",
9
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED": "🤔 Our offices are closed. You can anyway describe your problem. It will be assigned to the support team who will get back to you as soon as possible.",
10
+ "LABEL_SELECT_TOPIC": "Select a topic",
11
+ "LABEL_COMPLETE_FORM": "Complete the form to start a conversation with the next available agent.",
12
+ "LABEL_FIELD_NAME": "Name",
13
+ "LABEL_ERROR_FIELD_NAME": "Required field (minimum 5 characters).",
14
+ "LABEL_FIELD_EMAIL": "Email",
15
+ "LABEL_ERROR_FIELD_EMAIL": "Enter a valid email address.",
16
+ "LABEL_WRITING": "is writing...",
17
+ "AGENT_NOT_AVAILABLE": " Offline",
18
+ "AGENT_AVAILABLE": " Online",
19
+ "GUEST_LABEL": "Guest",
20
+ "ALL_AGENTS_OFFLINE_LABEL": "All operators are offline at the moment",
21
+ "LABEL_LOADING": "Loading...",
22
+ "CALLOUT_TITLE_PLACEHOLDER": "🖐 Need Help?",
23
+ "CALLOUT_MSG_PLACEHOLDER": "Click here and start chatting with us!",
24
+ "CUSTOMER_SATISFACTION": "Customer satisfaction",
25
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "Your opinion on our customer service",
26
+ "DOWNLOAD_TRANSCRIPT": "Download transcript",
27
+ "BACK": "Back",
28
+ "YOUR_RATING": "your rating",
29
+ "WRITE_YOUR_OPINION": "Write your opinion ... (optional)",
30
+ "SUBMIT": "Submit",
31
+ "THANK_YOU_FOR_YOUR_EVALUATION": "Thank you for your evaluation",
32
+ "YOUR_RATING_HAS_BEEN_RECEIVED": "your rating has been received",
33
+ "ALERT_LEAVE_CHAT": "Do you want to leave the chat?",
34
+ "YES": "Yes",
35
+ "NO": "No",
36
+ "BUTTON_CLOSE_TO_ICON": "Minimize chat",
37
+ "BUTTON_EDIT_PROFILE": "Update profile",
38
+ "BUTTON_DOWNLOAD_TRANSCRIPT": "Download transcript",
39
+ "RATE_CHAT": "Rate chat",
40
+
41
+ "WELLCOME_TITLE": "Hi, welcome to Tiledesk 👋",
42
+ "WELLCOME_MSG": "How can we help?",
43
+ "WELLCOME": "Welcome",
44
+
45
+ "WELCOME_TITLE": "Hi, welcome to Tiledesk 👋",
46
+ "WELCOME_MSG": "How can we help?",
47
+ "WELCOME": "Welcome",
48
+
49
+ "OPTIONS": "options",
50
+ "SOUND_OFF": "sound off",
51
+ "SOUND_ON": "sound on",
52
+ "LOGOUT": "logout",
53
+ "CLOSE": "Close",
54
+ "PREV_CONVERSATIONS": "Your conversations",
55
+ "YOU": "You",
56
+ "SHOW_ALL_CONV": "show all",
57
+ "START_A_CONVERSATION": "Start a conversation",
58
+ "NO_CONVERSATION": "No conversation",
59
+ "SEE_PREVIOUS": "see previous",
60
+ "WAITING_TIME_FOUND": "The team typically replies in $reply_time",
61
+ "WAITING_TIME_NOT_FOUND": "The team will reply as soon as possible",
62
+ "CLOSED": "Closed",
63
+
64
+ "INFO_SUPPORT_USER_ADDED_SUBJECT":"you",
65
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB":"you have been added ",
66
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT":"the chat",
67
+ "INFO_SUPPORT_USER_ADDED_VERB":"joined",
68
+ "INFO_SUPPORT_CHAT_REOPENED":"Chat reopened",
69
+ "INFO_SUPPORT_CHAT_CLOSED":"Chat closed",
70
+
71
+ "TICKET_TAKING":"The request has been received and the assistance staff is dealing with it.\nTo add more comments, reply to this email.",
72
+
73
+ "LABEL_ERROR_FIELD_REQUIRED": "Required field",
74
+ "SENT_AN_ATTACHMENT": "sent an attachment",
75
+ "SENT_AN_IMAGE": "sent an image",
76
+
77
+
78
+ "LABEL_PRECHAT_USER_FULLNAME": "Full name",
79
+ "LABEL_PRECHAT_USER_FULLNAME_ERROR": "Full name is required",
80
+ "LABEL_PRECHAT_USER_EMAIL": "Email",
81
+ "LABEL_PRECHAT_USER_EMAIL_ERROR": "Invalid email address",
82
+ "LABEL_PRECHAT_USER_PHONE": "Phone",
83
+ "LABEL_PRECHAT_USER_PHONE_ERROR": "Phone is required",
84
+ "LABEL_PRECHAT_FIRST_MESSAGE": "Your message for the support team",
85
+ "LABEL_PRECHAT_STATIC_TERMS_PRIVACY": "Before proceeding in the conversation please agree to our <a href='https://tiledesk.com/termsofservice/' target='_blank'>Terms</a> and <a href='https://tiledesk.com/privacy.html' target='_blank'>Privacy Policy</a>",
86
+ "LABEL_PRECHAT_ACCEPT_TERMS_PRIVACY": "I agree",
87
+ "LABEL_PRECHAT_ACCEPT_TERMS_PRIVACY_ERROR": "Please agree to terms and conditions"
88
+
89
+ fai per altre lingue
90
+ }
91
+ },
92
+ {
93
+ "lang": "IT",
94
+ "data":{
95
+ "LABEL_PLACEHOLDER": "Scrivi la tua domanda...",
96
+ "LABEL_START_NW_CONV": "Nuova conversazione",
97
+ "LABEL_FIRST_MSG": "Descrivi sinteticamente il tuo problema, ti metteremo in contatto con un operatore specializzato.",
98
+ "LABEL_FIRST_MSG_NO_AGENTS": "🤔 Tutti gli operatori sono offline al momento.Puoi comunque descrivere il tuo problema. Sarà assegnato al team di supporto che ti risponderà appena possibile.",
99
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED": "🤔 I nostri uffici sono chiusi. Puoi comunque descrivere il tuo problema. Sarà assegnato al team di supporto che ti risponderà appena possibile.",
100
+ "LABEL_SELECT_TOPIC": "Seleziona un argomento",
101
+ "LABEL_COMPLETE_FORM": "Completa il form per iniziare una conversazione con il prossimo agente disponibile.",
102
+ "LABEL_FIELD_NAME": "Nome",
103
+ "LABEL_ERROR_FIELD_NAME": "Nome richiesto (minimo 2 caratteri).",
104
+ "LABEL_FIELD_EMAIL": "Email",
105
+ "LABEL_ERROR_FIELD_EMAIL": "Inserisci un indirizzo email valido.",
106
+ "LABEL_WRITING": "sta scrivendo...",
107
+ "AGENT_NOT_AVAILABLE": " Offline",
108
+ "AGENT_AVAILABLE": " Online",
109
+ "GUEST_LABEL": "Ospite",
110
+ "ALL_AGENTS_OFFLINE_LABEL": "Tutti gli operatori sono offline al momento",
111
+ "LABEL_LOADING": "Caricamento...",
112
+ "CALLOUT_TITLE_PLACEHOLDER": "🖐 Bisogno di aiuto?",
113
+ "CALLOUT_MSG_PLACEHOLDER": "Clicca qui e inizia a chattare con noi!",
114
+ "CUSTOMER_SATISFACTION": "Valutazione servizio",
115
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "Il tuo giudizio sul nostro servizio clienti",
116
+ "DOWNLOAD_TRANSCRIPT": "Scarica transcript",
117
+ "BACK": "Indietro",
118
+ "YOUR_RATING": "il tuo voto",
119
+ "WRITE_YOUR_OPINION": "Scrivi la tua opinione...(opzionale)",
120
+ "SUBMIT": "Invia",
121
+ "THANK_YOU_FOR_YOUR_EVALUATION": "Grazie per la tua valutazione",
122
+ "YOUR_RATING_HAS_BEEN_RECEIVED": "il tuo voto è stato ricevuto",
123
+ "ALERT_LEAVE_CHAT": "Vuoi abbandonare la conversazione?",
124
+ "YES": "Si",
125
+ "NO": "No",
126
+ "BUTTON_CLOSE_TO_ICON": "Riduci a icona la chat",
127
+ "BUTTON_EDIT_PROFILE": "Modifica profilo",
128
+ "BUTTON_DOWNLOAD_TRANSCRIPT": "Scarica transcript",
129
+ "RATE_CHAT": "Valuta chat",
130
+
131
+ "WELLCOME_TITLE": "Ciao, benvenuto su Tiledesk 👋",
132
+ "WELLCOME_MSG": "Come possiamo aiutarti?",
133
+ "WELLCOME": "Benvenuto",
134
+
135
+ "WELCOME_TITLE": "Ciao, benvenuto su Tiledesk 👋",
136
+ "WELCOME_MSG": "Come possiamo aiutarti?",
137
+ "WELCOME": "Benvenuto",
138
+
139
+ "OPTIONS": "opzioni",
140
+ "SOUND_OFF": "suono spento",
141
+ "SOUND_ON": "suono acceso",
142
+ "LOGOUT": "disconnetti",
143
+ "CLOSE": "Chiudi",
144
+ "PREV_CONVERSATIONS": "Le tue conversazioni",
145
+ "YOU": "Tu",
146
+ "SHOW_ALL_CONV": "vedi tutte",
147
+ "START_A_CONVERSATION": "Inizia una conversazione",
148
+ "NO_CONVERSATION": "Nessuna conversazione attiva",
149
+ "SEE_PREVIOUS": "vedi precedenti",
150
+ "WAITING_TIME_FOUND": "Il team tipicamente risponde in $reply_time",
151
+ "WAITING_TIME_NOT_FOUND": "Vi risponderemo appena possibile",
152
+ "CLOSED": "Chiusa",
153
+
154
+ "INFO_SUPPORT_USER_ADDED_SUBJECT":"tu",
155
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB":"sei stato aggiunto ",
156
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT":"alla chat",
157
+ "INFO_SUPPORT_USER_ADDED_VERB":"si è unito",
158
+ "INFO_SUPPORT_CHAT_REOPENED":"Chat riaperta",
159
+ "INFO_SUPPORT_CHAT_CLOSED":"Chat chiusa",
160
+
161
+ "TICKET_TAKING":"La richiesta è stata ricevuta e il personale di assistenza se ne sta occupando.\nPer aggiungere ulteriori commenti, rispondi a questa email.",
162
+
163
+ "LABEL_ERROR_FIELD_REQUIRED": "Campo richiesto",
164
+ "SENT_AN_ATTACHMENT": "ha inviato un allegato",
165
+ "SENT_AN_IMAGE":"ha inviato un'immagine"
166
+ }
167
+ },
168
+ {
169
+ "lang": "FR",
170
+ "data":{
171
+ "LABEL_PLACEHOLDER": "Écrivez votre question ...",
172
+ "LABEL_START_NW_CONV": "Nouvelle conversation",
173
+ "LABEL_FIRST_MSG": "Décrivez brièvement votre problème, nous vous mettrons en relation avec un opérateur spécialisé.",
174
+ "LABEL_FIRST_MSG_NO_AGENTS": "🤔 Tous les opérateurs sont actuellement hors ligne. Vous pouvez toujours décrire votre problème. Il sera attribué à l'équipe d'assistance qui vous répondra dans les plus brefs délais.",
175
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED": "🤔 Nos bureaux sont fermés. Vous pouvez toujours décrire votre problème. Il sera attribué à l'équipe d'assistance qui vous répondra dans les plus brefs délais.",
176
+ "LABEL_SELECT_TOPIC": "Sélectionnez un sujet",
177
+ "LABEL_COMPLETE_FORM": "Remplissez le formulaire pour démarrer une conversation avec le prochain agent disponible.",
178
+ "LABEL_FIELD_NAME": "Prenom",
179
+ "LABEL_ERROR_FIELD_NAME": "Nom demandé (minimum 2 caractères).",
180
+ "LABEL_FIELD_EMAIL": "Email",
181
+ "LABEL_ERROR_FIELD_EMAIL": "Entrer une adresse email valide.",
182
+ "LABEL_WRITING": "en train d'écrire...",
183
+ "AGENT_NOT_AVAILABLE": " Hors ligne",
184
+ "AGENT_AVAILABLE": " En ligne",
185
+ "GUEST_LABEL": "Hôte",
186
+ "ALL_AGENTS_OFFLINE_LABEL": "Tous les opérateurs sont actuellement hors ligne",
187
+ "LABEL_LOADING": "Chargement en cours ...",
188
+ "CALLOUT_TITLE_PLACEHOLDER": "🖐 Besoin d'aide?",
189
+ "CALLOUT_MSG_PLACEHOLDER": "Cliquez ici et commencez à discuter avec nous!",
190
+ "CUSTOMER_SATISFACTION": "Évaluation des services",
191
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "Votre avis sur notre service client",
192
+ "DOWNLOAD_TRANSCRIPT": "Télécharger la transcription",
193
+ "BACK": "En arrière",
194
+ "YOUR_RATING": "votre vote",
195
+ "WRITE_YOUR_OPINION": "Écrivez votre opinion ... (facultatif)",
196
+ "SUBMIT": "Soumettre",
197
+ "THANK_YOU_FOR_YOUR_EVALUATION": "Merci pour votre évaluation",
198
+ "YOUR_RATING_HAS_BEEN_RECEIVED": "votre vote a été reçu",
199
+ "ALERT_LEAVE_CHAT": "Voulez-vous quitter la conversation?",
200
+ "YES": "Oui",
201
+ "NO": "Non",
202
+ "BUTTON_CLOSE_TO_ICON": "Minimisez le chat",
203
+ "BUTTON_EDIT_PROFILE": "Modifier le profil",
204
+ "BUTTON_DOWNLOAD_TRANSCRIPT": "Télécharger la transcription",
205
+ "RATE_CHAT": "évaluer la conversation",
206
+
207
+ "WELLCOME_TITLE": "Salut, bienvenue à Tiledesk 👋",
208
+ "WELLCOME_MSG": "Comment pouvons-nous vous aider?",
209
+ "WELLCOME": "Bienvenue",
210
+
211
+ "WELCOME_TITLE": "Salut, bienvenue à Tiledesk 👋",
212
+ "WELCOME_MSG": "Comment pouvons-nous vous aider?",
213
+ "WELCOME": "Bienvenue",
214
+
215
+ "OPTIONS": "options",
216
+ "SOUND_OFF": "Sound off",
217
+ "SOUND_ON": "Sound on",
218
+ "LOGOUT": "Connectez-out",
219
+ "CLOSE": "Fermer",
220
+ "PREV_CONVERSATIONS": "Vos conversations",
221
+ "YOU": "Vous",
222
+ "SHOW_ALL_CONV": "voir tout",
223
+ "START_A_CONVERSATION": "Démarrer une conversation",
224
+ "NO_CONVERSATION": "Aucune conversation active",
225
+ "SEE_PREVIOUS": "voir les conversations précédentes",
226
+ "WAITING_TIME_FOUND": "L'équipe répond généralement en $reply_time",
227
+ "WAITING_TIME_NOT_FOUND": "Nous vous répondrons dans les plus brefs délais",
228
+ "CLOSED": "Fermé",
229
+
230
+ "INFO_SUPPORT_USER_ADDED_SUBJECT":"toi",
231
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB":"tu as été ajouté ",
232
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT":"discuter",
233
+ "INFO_SUPPORT_USER_ADDED_VERB":"rejoint",
234
+ "INFO_SUPPORT_CHAT_REOPENED":"Chat rouvert",
235
+ "INFO_SUPPORT_CHAT_CLOSED":"Chat fermé",
236
+
237
+ "TICKET_TAKING":"La demande a été reçue et le personnel d'assistance la traite.\nPour ajouter d'autres commentaires, répondez à cet e-mail.",
238
+
239
+ "LABEL_ERROR_FIELD_REQUIRED": "Champ obligatoire",
240
+ "SENT_AN_ATTACHMENT": "envoyé une pièce jointe",
241
+ "SENT_AN_IMAGE": "envoyé une image"
242
+ }
243
+ },
244
+ {
245
+ "lang": "ES",
246
+ "data":{
247
+ "LABEL_PLACEHOLDER":"Escribe tu mensaje..",
248
+ "LABEL_START_NW_CONV":"Nueva conversación",
249
+ "LABEL_FIRST_MSG":"Describa brevemente su problema, un agente lo contactará.",
250
+ "LABEL_FIRST_MSG_NO_AGENTS":"🤔 Todos los operadores están desconectados en este momento. En todo caso, puedes describir tu problema que se asignará al equipo de soporte que le responderá lo antes posible.",
251
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED":"🤔 Nuestras oficinas están cerradas. En todo caso, puedes describir tu problema que se asignará al equipo de soporte que le responderá lo antes posible.",
252
+ "LABEL_SELECT_TOPIC":"Elige un tema",
253
+ "LABEL_COMPLETE_FORM":"Complete el formulario para iniciar una conversación con el próximo agente disponible.",
254
+ "LABEL_FIELD_NAME":"Nombre",
255
+ "LABEL_ERROR_FIELD_NAME":"Campo obligatorio (mínimo 2 caracteres).",
256
+ "LABEL_FIELD_EMAIL":"Correo electrónico",
257
+ "LABEL_ERROR_FIELD_EMAIL":"Introduzca una dirección de correo electrónico válida.",
258
+ "LABEL_WRITING":"esta escribiendo...",
259
+ "AGENT_NOT_AVAILABLE":"Offline",
260
+ "AGENT_AVAILABLE":"En línea",
261
+ "GUEST_LABEL":"Invitado",
262
+ "ALL_AGENTS_OFFLINE_LABEL":"Todos los operadores están desconectados en este momento.",
263
+ "LABEL_LOADING":"Cargando...",
264
+ "CALLOUT_TITLE_PLACEHOLDER":"🖐 ¿Necesitas ayuda?",
265
+ "CALLOUT_MSG_PLACEHOLDER":"¡Haz clic aquí y comienza a chatear con nosotros!",
266
+ "CUSTOMER_SATISFACTION":"La satisfacción del cliente",
267
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE":"Su opinión sobre nuestro servicio al cliente",
268
+ "DOWNLOAD_TRANSCRIPT":"Descargar transcripción",
269
+ "BACK":"Atrás",
270
+ "YOUR_RATING":"Tu clasificación",
271
+ "WRITE_YOUR_OPINION":"Escribe tu opinión ... (opcional)",
272
+ "SUBMIT":"Enviar",
273
+ "THANK_YOU_FOR_YOUR_EVALUATION":"Gracias por tu evaluación",
274
+ "YOUR_RATING_HAS_BEEN_RECEIVED":"Su voto ha sido recibido",
275
+ "ALERT_LEAVE_CHAT":"¿Quieres salir del chat?",
276
+ "YES":"Si",
277
+ "NO":"No",
278
+ "BUTTON_CLOSE_TO_ICON":"Minimiza el chat",
279
+ "BUTTON_EDIT_PROFILE":"Actualización del perfil",
280
+ "BUTTON_DOWNLOAD_TRANSCRIPT":"Download transcript",
281
+ "RATE_CHAT":"Califica el chat",
282
+
283
+ "WELLCOME_TITLE":"Hola, bienvenido a tiledesk 👋",
284
+ "WELLCOME_MSG":"¿Cómo podemos ayudar?",
285
+ "WELLCOME":"¡Bienvenido!",
286
+
287
+ "WELCOME_TITLE":"Hola, bienvenido a tiledesk 👋",
288
+ "WELCOME_MSG":"¿Cómo podemos ayudar?",
289
+ "WELCOME":"¡Bienvenido!",
290
+
291
+ "OPTIONS":"Opciones",
292
+ "SOUND_OFF":"Sonido apagado",
293
+ "SOUND_ON":"Sonido encendido",
294
+ "LOGOUT":"Cerrar sesión",
295
+ "CLOSE":"Cerrar",
296
+ "PREV_CONVERSATIONS":"Tus conversaciones",
297
+ "YOU":"Tú",
298
+ "SHOW_ALL_CONV":"Mostrar todo",
299
+ "START_A_CONVERSATION":"Iniciar una conversación",
300
+ "NO_CONVERSATION":"Sin conversación",
301
+ "SEE_PREVIOUS":"Ver anterior",
302
+ "WAITING_TIME_FOUND":"El equipo típicamente responde en $reply_time",
303
+ "WAITING_TIME_NOT_FOUND":"El equipo responderá lo antes posible.",
304
+ "CLOSED":"Cerrado",
305
+
306
+ "INFO_SUPPORT_USER_ADDED_SUBJECT":"usted",
307
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB":"usted ha sido agregado ",
308
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT":"para charlar",
309
+ "INFO_SUPPORT_USER_ADDED_VERB":"unido",
310
+ "INFO_SUPPORT_CHAT_REOPENED":"Chat reabierto",
311
+ "INFO_SUPPORT_CHAT_CLOSED":"Chat cerrado",
312
+
313
+ "TICKET_TAKING":"La solicitud ha sido recibida y el personal de asistencia está tratando con ella. \nPara agregar más comentarios, responda a este correo electrónico.",
314
+
315
+ "LABEL_ERROR_FIELD_REQUIRED": "Campo obligatorio",
316
+ "SENT_AN_ATTACHMENT": "envió un archivo adjunto",
317
+ "SENT_AN_IMAGE": "envió una imagen"
318
+
319
+ }
320
+ },
321
+ {
322
+ "lang":"DE",
323
+ "data":{
324
+ "LABEL_PLACEHOLDER":"Geben Sie Ihre Nachricht ein ...",
325
+ "LABEL_START_NW_CONV":"Neues Gespräch",
326
+ "LABEL_FIRST_MSG":"Beschreiben Sie in Kürze Ihr Problem. Sie werden von einem Agenten kontaktiert.",
327
+ "LABEL_FIRST_MSG_NO_AGENTS":"🤔 Alle Betreiber sind derzeit offline. Sie können Ihr Problem trotzdem beschreiben. Es wird dem Support-Team zugewiesen, das Ihnen so schnell wie möglich antwortet.",
328
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED":"🤔 Unsere Büros sind geschlossen. Sie können Ihr Problem trotzdem beschreiben. Es wird dem Support-Team zugewiesen, das Ihnen so schnell wie möglich antwortet.",
329
+ "LABEL_SELECT_TOPIC":"Wähle ein Thema",
330
+ "LABEL_COMPLETE_FORM":"Füllen Sie das Formular aus, um ein Gespräch mit dem nächsten verfügbaren Agenten zu beginnen.",
331
+ "LABEL_FIELD_NAME":"Name",
332
+ "LABEL_ERROR_FIELD_NAME":"Erforderliches Feld (mindestens 5 Zeichen).",
333
+ "LABEL_FIELD_EMAIL":"Email",
334
+ "LABEL_ERROR_FIELD_EMAIL":"Geben sie eine gültige E-Mail-Adresse an.",
335
+ "LABEL_WRITING":"schreibt...",
336
+ "AGENT_NOT_AVAILABLE":" Offline",
337
+ "AGENT_AVAILABLE":" Online",
338
+ "GUEST_LABEL":"Gast",
339
+ "ALL_AGENTS_OFFLINE_LABEL":"Alle Betreiber sind derzeit offline",
340
+ "LABEL_LOADING":"Wird geladen...",
341
+ "CALLOUT_TITLE_PLACEHOLDER":"🖐 Brauchen Sie Hilfe?",
342
+ "CALLOUT_MSG_PLACEHOLDER":"Klicken Sie hier und beginnen Sie mit uns zu chatten!",
343
+ "CUSTOMER_SATISFACTION":"Kundenzufriedenheit",
344
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE":"Ihre Meinung zu unserem Kundenservice",
345
+ "DOWNLOAD_TRANSCRIPT":"Transkript herunterladen",
346
+ "BACK":"Zurück",
347
+ "YOUR_RATING":"Deine Bewertung",
348
+ "WRITE_YOUR_OPINION":"Schreiben Sie Ihre Meinung ... (optional)",
349
+ "SUBMIT":"Einreichen",
350
+ "THANK_YOU_FOR_YOUR_EVALUATION":"Vielen Dank für Ihre Bewertung",
351
+ "YOUR_RATING_HAS_BEEN_RECEIVED":"Ihre Bewertung wurde erhalten",
352
+ "ALERT_LEAVE_CHAT":"Möchten Sie den Chat verlassen?",
353
+ "YES":"Ja",
354
+ "NO":"Nein",
355
+ "BUTTON_CLOSE_TO_ICON":"Chat minimieren",
356
+ "BUTTON_EDIT_PROFILE":"Profil aktualisieren",
357
+ "BUTTON_DOWNLOAD_TRANSCRIPT":"Download transcript",
358
+ "RATE_CHAT":"Chat bewerten",
359
+
360
+ "WELLCOME_TITLE":"Hallo, willkommen in Tiledesk 👋",
361
+ "WELLCOME_MSG":"Wie können wir helfen?",
362
+ "WELLCOME":"Herzlich willkommen",
363
+
364
+ "WELCOME_TITLE":"Hallo, willkommen in Tiledesk 👋",
365
+ "WELCOME_MSG":"Wie können wir helfen?",
366
+ "WELCOME":"Herzlich willkommen",
367
+
368
+ "OPTIONS":"Optionen",
369
+ "SOUND_OFF":"Ton aus",
370
+ "SOUND_ON":"Ton an",
371
+ "LOGOUT":"Ausloggen",
372
+ "CLOSE":"Schließen",
373
+ "PREV_CONVERSATIONS":"Ihre Gespräche",
374
+ "YOU":"Du",
375
+ "SHOW_ALL_CONV":"zeige alles",
376
+ "START_A_CONVERSATION":"Eine Konversation beginnen",
377
+ "NO_CONVERSATION":"keine Gespräche",
378
+ "SEE_PREVIOUS":"siehe vorher",
379
+ "WAITING_TIME_FOUND":"Das Team antwortet normalerweise in $reply_time",
380
+ "WAITING_TIME_NOT_FOUND":"Das Team wird so schnell wie möglich antworten",
381
+ "CLOSED":"Geschlossen",
382
+
383
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "Sie",
384
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "Sie wurden hinzugefügt ",
385
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "zum Chatten",
386
+ "INFO_SUPPORT_USER_ADDED_VERB": "beigetreten",
387
+ "INFO_SUPPORT_CHAT_REOPENED": "Chat wieder geöffnet",
388
+ "INFO_SUPPORT_CHAT_CLOSED": "Chat geschlossen",
389
+
390
+ "TICKET_TAKING":"Die Anfrage ist eingegangen und wird vom Hilfspersonal bearbeitet.\nUm weitere Kommentare hinzuzufügen, antworten Sie auf diese E-Mail.",
391
+
392
+ "LABEL_ERROR_FIELD_REQUIRED": "Pflichtfeld",
393
+ "SENT_AN_ATTACHMENT": "Anhang gesendet",
394
+ "SENT_AN_IMAGE": "ein Bild gesendet"
395
+ }
396
+ },
397
+ {
398
+ "lang":"PT",
399
+ "data":{
400
+ "LABEL_PLACEHOLDER":"Digite sua mensagem..",
401
+ "LABEL_START_NW_CONV":"Nova conversa",
402
+ "LABEL_FIRST_MSG":"Descreva em breve o seu problema, você será contactado por um agente.",
403
+ "LABEL_FIRST_MSG_NO_AGENTS":"🤔 Todos os operadores estão offline no momento. Em qualquer caso, você pode descrever seu problema. Ele será atribuído à equipe de suporte que responderá o mais breve possível.",
404
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED":"🤔 Nossos escritórios estão fechados. Em qualquer caso, você pode descrever seu problema. Ele será atribuído à equipe de suporte que responderá o mais breve possível.",
405
+ "LABEL_SELECT_TOPIC":"Selecione um topico",
406
+ "LABEL_COMPLETE_FORM":"Preencha o formulário para iniciar uma conversa com o próximo agente disponível.",
407
+ "LABEL_FIELD_NAME":"Nome",
408
+ "LABEL_ERROR_FIELD_NAME":"Campo obrigatório (mínimo de 2 caracteres).",
409
+ "LABEL_FIELD_EMAIL":"o email",
410
+ "LABEL_ERROR_FIELD_EMAIL":"Digite um endereço de e-mail válido.",
411
+ "LABEL_WRITING":"está escrevendo...",
412
+ "AGENT_NOT_AVAILABLE":"Desligado",
413
+ "AGENT_AVAILABLE":" Ligado",
414
+ "GUEST_LABEL":"Convidado",
415
+ "ALL_AGENTS_OFFLINE_LABEL":"Todos os operadores estão offline no momento",
416
+ "LABEL_LOADING":"A carregar...",
417
+ "CALLOUT_TITLE_PLACEHOLDER":"🖐 Precisas de ajuda?",
418
+ "CALLOUT_MSG_PLACEHOLDER":"Clique aqui e comece a conversar conosco!",
419
+ "CUSTOMER_SATISFACTION":"Satisfação do cliente",
420
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE":"A sua opinião sobre o nosso serviço de cliente",
421
+ "DOWNLOAD_TRANSCRIPT":"Descarregar a transcrição",
422
+ "BACK":"Voltar",
423
+ "YOUR_RATING":"A sua avaliação",
424
+ "WRITE_YOUR_OPINION":"Escreva a sua opinião ... (opcional)",
425
+ "SUBMIT":"Enviar",
426
+ "THANK_YOU_FOR_YOUR_EVALUATION":"Obrigado pela sua avaliação",
427
+ "YOUR_RATING_HAS_BEEN_RECEIVED":"Sua classificação foi recebida",
428
+ "ALERT_LEAVE_CHAT":"Deseja sair da conversa?",
429
+ "YES":"Sim",
430
+ "NO":"Não",
431
+ "BUTTON_CLOSE_TO_ICON":"Minimizar messagem",
432
+ "BUTTON_EDIT_PROFILE":"Atualizar perfil",
433
+ "BUTTON_DOWNLOAD_TRANSCRIPT":"Download transcript",
434
+ "RATE_CHAT":"Classificar conversa",
435
+
436
+ "WELLCOME_TITLE":"Olá, seja bem-vindo ao Tiledesk 👋",
437
+ "WELLCOME_MSG":"Como podemos ajudar?",
438
+ "WELLCOME":"Bem-vinda",
439
+
440
+ "WELCOME_TITLE":"Olá, seja bem-vindo ao Tiledesk 👋",
441
+ "WELCOME_MSG":"Como podemos ajudar?",
442
+ "WELCOME":"Bem-vinda",
443
+
444
+ "OPTIONS":"Opções",
445
+ "SOUND_OFF":"som desligado",
446
+ "SOUND_ON":"som ligado",
447
+ "LOGOUT":"sair",
448
+ "CLOSE":"Fechar",
449
+ "PREV_CONVERSATIONS":"Suas conversas",
450
+ "YOU":"Você",
451
+ "SHOW_ALL_CONV":"Mostre tudo",
452
+ "START_A_CONVERSATION":"Iniciar uma conversa",
453
+ "NO_CONVERSATION":"Nenhuma conversa",
454
+ "SEE_PREVIOUS":"ver anterior",
455
+ "WAITING_TIME_FOUND":"A equipe normalmente responde em $reply_time",
456
+ "WAITING_TIME_NOT_FOUND":"A equipe responderá o mais breve possível",
457
+ "CLOSED":"Fechado",
458
+
459
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "você",
460
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "você foi adicionado ",
461
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "para conversar",
462
+ "INFO_SUPPORT_USER_ADDED_VERB": "aderiu",
463
+ "INFO_SUPPORT_CHAT_REOPENED": "Chat reaberto",
464
+ "INFO_SUPPORT_CHAT_CLOSED": "Bate-papo fechado",
465
+
466
+ "TICKET_TAKING":"A solicitação foi recebida e a equipe de assistência está tratando dela. \nPara adicionar mais comentários, responda a este e-mail.",
467
+
468
+ "LABEL_ERROR_FIELD_REQUIRED": "Campo obrigatório",
469
+ "SENT_AN_ATTACHMENT": "enviou um anexo",
470
+ "SENT_AN_IMAGE": "enviou uma imagem"
471
+ }
472
+ },
473
+ {
474
+ "lang":"RU",
475
+ "data":{
476
+ "LABEL_PLACEHOLDER":"введите ваше сообщение ..",
477
+ "LABEL_START_NW_CONV":"Новый разговор",
478
+ "LABEL_FIRST_MSG":"Опишите вкратце вашу проблему, с вами свяжется агент.",
479
+ "LABEL_FIRST_MSG_NO_AGENTS":"🤔 Все операторы на данный момент не в сети. В любом случае вы можете описать свою проблему. Он будет назначен в службу поддержки, которая ответит вам как можно скорее.",
480
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED":"🤔 Наши офисы закрыты. В любом случае вы можете описать свою проблему. Он будет назначен в службу поддержки, которая ответит вам как можно скорее.",
481
+ "LABEL_SELECT_TOPIC":"Выберите тему",
482
+ "LABEL_COMPLETE_FORM":"Заполните форму, чтобы начать разговор со следующим доступным агентом.",
483
+ "LABEL_FIELD_NAME":"имя",
484
+ "LABEL_ERROR_FIELD_NAME":"Обязательное поле (минимум 2 символов).",
485
+ "LABEL_FIELD_EMAIL":"Электронное письмо",
486
+ "LABEL_ERROR_FIELD_EMAIL":"Введите действительный адрес электронной почты.",
487
+ "LABEL_WRITING":"пишет...",
488
+ "AGENT_NOT_AVAILABLE":"Не в сети",
489
+ "AGENT_AVAILABLE":"онлайн",
490
+ "GUEST_LABEL":"гость",
491
+ "ALL_AGENTS_OFFLINE_LABEL":"Все операторы на данный момент не работают",
492
+ "LABEL_LOADING":"загрузка...",
493
+ "CALLOUT_TITLE_PLACEHOLDER":"🖐 Нужна помощь?",
494
+ "CALLOUT_MSG_PLACEHOLDER":"Нажмите здесь и начните общаться с нами!",
495
+ "CUSTOMER_SATISFACTION":"Удовлетворенность клиентов",
496
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE":"Ваше мнение о нашей службе поддержки",
497
+ "DOWNLOAD_TRANSCRIPT":"Скачать стенограмму",
498
+ "BACK":"назад",
499
+ "YOUR_RATING":"ваш рейтинг",
500
+ "WRITE_YOUR_OPINION":"Напишите свое мнение ... (необязательно)",
501
+ "SUBMIT":"Разместить",
502
+ "THANK_YOU_FOR_YOUR_EVALUATION":"Спасибо за вашу оценку",
503
+ "YOUR_RATING_HAS_BEEN_RECEIVED":"Ваша оценка была получена",
504
+ "ALERT_LEAVE_CHAT":"Вы хотите выйти из чата?",
505
+ "YES":"да",
506
+ "NO":"нет",
507
+ "BUTTON_CLOSE_TO_ICON":"Свернуть чат",
508
+ "BUTTON_EDIT_PROFILE":"Обновить профиль",
509
+ "BUTTON_DOWNLOAD_TRANSCRIPT":"Download transcript",
510
+ "RATE_CHAT":"Оценить чат",
511
+
512
+ "WELLCOME_TITLE":"Привет, добро пожаловать в Tiledesk 👋",
513
+ "WELLCOME_MSG":"Как мы можем помочь?",
514
+ "WELLCOME":"желанный",
515
+
516
+ "WELCOME_TITLE":"Привет, добро пожаловать в Tiledesk 👋",
517
+ "WELCOME_MSG":"Как мы можем помочь?",
518
+ "WELCOME":"желанный",
519
+
520
+ "OPTIONS":"опции",
521
+ "SOUND_OFF":"звук выключен",
522
+ "SOUND_ON":"звучать на",
523
+ "LOGOUT":"выйти",
524
+ "CLOSE":"Закрывать",
525
+ "PREV_CONVERSATIONS":"Ваши разговоры",
526
+ "YOU":"Вы",
527
+ "SHOW_ALL_CONV":"показать все",
528
+ "START_A_CONVERSATION":"Начать разговор",
529
+ "NO_CONVERSATION":"Нет разговоров",
530
+ "SEE_PREVIOUS":"смотри предыдущий",
531
+ "WAITING_TIME_FOUND":"Команда обычно отвечает в $reply_time",
532
+ "WAITING_TIME_NOT_FOUND":"Команда ответит как можно скорее",
533
+ "CLOSED":"Закрыто",
534
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "вы",
535
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "вы добавлены ",
536
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "присоединился",
537
+ "INFO_SUPPORT_USER_ADDED_VERB": "в чат",
538
+ "INFO_SUPPORT_CHAT_REOPENED": "Чат возобновлен",
539
+ "INFO_SUPPORT_CHAT_CLOSED": "Чат закрыт",
540
+
541
+ "TICKET_TAKING":"Запрос был получен, и обслуживающий персонал занимается им. \nЧтобы добавить больше комментариев, ответьте на это письмо.",
542
+
543
+ "LABEL_ERROR_FIELD_REQUIRED": "Обязательное поле",
544
+ "SENT_AN_ATTACHMENT": "отправлено вложение",
545
+ "SENT_AN_IMAGE": "отправил изображение"
546
+ }
547
+ },
548
+ {
549
+ "lang":"TR",
550
+ "data":{
551
+ "LABEL_PLACEHOLDER":"Mesajınızı yazınız..",
552
+ "LABEL_START_NW_CONV":"Yeni konuşma",
553
+ "LABEL_FIRST_MSG":"Sorununuzu kısaca açıklayınız, bir temsilci tarafından sizinle iletişime geçilecektir.",
554
+ "LABEL_FIRST_MSG_NO_AGENTS":"🤔 Şuan tüm operatörler çevrim dışıdır. Yine de sorununuzu tarif edebilirsiniz. Sorununuz size en kısa sürede cevap verebilecek olan destek ekibine iletilecektir.",
555
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED":"🤔 Ofislerimiz kapalıdır. Her halükarda sorununuzu tarif edebilirsiniz. Sorununuz size en kısa sürede cevap verebilecek olan destek ekibine iletilecektir.",
556
+ "LABEL_SELECT_TOPIC":"Bir konu seçiniz",
557
+ "LABEL_COMPLETE_FORM":"Sıradaki müsait temsilci ile görüşme başlatmak için formu doldurunuz.",
558
+ "LABEL_FIELD_NAME":"İsim",
559
+ "LABEL_ERROR_FIELD_NAME":"Gerekli alan (en az 2 karakter).",
560
+ "LABEL_FIELD_EMAIL":"Eposta",
561
+ "LABEL_ERROR_FIELD_EMAIL":"Geçerli bir eposta adresi giriniz",
562
+ "LABEL_WRITING":"Yazıyor…",
563
+ "AGENT_NOT_AVAILABLE":"Çevrimdışı",
564
+ "AGENT_AVAILABLE":"Çevrimiçi",
565
+ "GUEST_LABEL":"Misafir",
566
+ "ALL_AGENTS_OFFLINE_LABEL":"Tüm operatörler şuanda çevrimdışıdır",
567
+ "LABEL_LOADING":"Yükleniyor…",
568
+ "CALLOUT_TITLE_PLACEHOLDER":"🖐 yardıma mı ihtiyacınız var?",
569
+ "CALLOUT_MSG_PLACEHOLDER":"Buraya tıklayın ve bizimle sohbet etmeye başlayın!",
570
+ "CUSTOMER_SATISFACTION":"Müşteri memnuniyeti",
571
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE":"Müşteri hizmetlerimizle ilgili görüşleriniz",
572
+ "DOWNLOAD_TRANSCRIPT":"Konuşma metnini indir",
573
+ "BACK":"Konuşma metnini indir",
574
+ "YOUR_RATING":"Sizin değerlendirme notunuz",
575
+ "WRITE_YOUR_OPINION":"Düşüncenizi yazınız... (isteğe bağlı)",
576
+ "SUBMIT":"Gönder",
577
+ "THANK_YOU_FOR_YOUR_EVALUATION":"Değerlendirmeniz için teşekkür ederiz.",
578
+ "YOUR_RATING_HAS_BEEN_RECEIVED":"Değerlendirme notunuz alındı",
579
+ "ALERT_LEAVE_CHAT":"Sohbetten ayrılmak istiyor musunuz?",
580
+ "YES":"Evet",
581
+ "NO":"Hayır",
582
+ "BUTTON_CLOSE_TO_ICON":"Sohbeti küçültün",
583
+ "BUTTON_EDIT_PROFILE":"Profili güncelle",
584
+ "BUTTON_DOWNLOAD_TRANSCRIPT":"Download transcript",
585
+ "RATE_CHAT":"Sohbeti derecelendir",
586
+
587
+ "WELLCOME_TITLE":"Merhaba Tiledesk’e hoş geldiniz. 👋",
588
+ "WELLCOME_MSG":"Size nasıl yardımcı olabiliriz?",
589
+ "WELLCOME":"Hoş geldiniz.",
590
+
591
+ "WELCOME_TITLE":"Merhaba Tiledesk’e hoş geldiniz. 👋",
592
+ "WELCOME_MSG":"Size nasıl yardımcı olabiliriz?",
593
+ "WELCOME":"Hoş geldiniz.",
594
+
595
+ "OPTIONS":"Seçenekler",
596
+ "SOUND_OFF":"Ses kapalı",
597
+ "SOUND_ON":"Ses açık",
598
+ "LOGOUT":"Çıkış yap",
599
+ "CLOSE":"Kapat",
600
+ "PREV_CONVERSATIONS":"Konuşmalarınız",
601
+ "YOU":"Siz",
602
+ "SHOW_ALL_CONV":"Hepsini göster",
603
+ "START_A_CONVERSATION":"Bir konuşma başlatın",
604
+ "NO_CONVERSATION":"Konuşma yok",
605
+ "SEE_PREVIOUS":"Öncekine bak",
606
+ "WAITING_TIME_FOUND":"Ekip genellikle …… içerisinde cevaplar $reply_time",
607
+ "WAITING_TIME_NOT_FOUND":"Ekip en kısa süre içerisinde cevap verecektir.",
608
+ "CLOSED":"Kapali",
609
+
610
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "siz",
611
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "eklendiniz ",
612
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "katıldı",
613
+ "INFO_SUPPORT_USER_ADDED_VERB": "sohbet etmek",
614
+ "INFO_SUPPORT_CHAT_REOPENED": "Sohbet yeniden açıldı",
615
+ "INFO_SUPPORT_CHAT_CLOSED": "Sohbet kapatıldı",
616
+
617
+ "TICKET_TAKING":"Talep alındı ve yardım ekibi bununla ilgileniyor.\nDaha fazla yorum eklemek için bu e-postayı yanıtlayın.",
618
+
619
+ "LABEL_ERROR_FIELD_REQUIRED": "Gerekli alan",
620
+ "SENT_AN_ATTACHMENT": "bir ek gönderdi",
621
+ "SENT_AN_IMAGE": "bir resim gönderdi"
622
+ }
623
+ }
624
+ ]
@@ -60,14 +60,14 @@ function populateMessageWithRequest(message, eventPrefix) {
60
60
  populate('participatingBots').
61
61
  populate('participatingAgents').
62
62
  populate({path:'requester',populate:{path:'id_user'}}).
63
- lean().
63
+ lean()
64
64
  //perche lean?
65
65
  // TODO availableAgentsCount nn c'è per il lean problema trigger
66
66
  // request.department._id DA CORREGGERE ANCHE PER REQUEST.CREATE
67
67
  // request.department.hasBot
68
68
  // request.isOpen
69
- cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient).
70
- exec(function (err, request) {
69
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient)
70
+ .exec(function (err, request) {
71
71
 
72
72
  if (err) {
73
73
  winston.error("Error getting request on messageEvent.populateMessage",err );
@@ -83,7 +83,7 @@ function populateMessageWithRequest(message, eventPrefix) {
83
83
  if (request.department && request.department.id_bot) {
84
84
  // if (request.department) {
85
85
  Faq_kb.findById(request.department.id_bot)
86
- .cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+request.department.id_bot)
86
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+request.department.id_bot)
87
87
  .exec(function(err, bot) {
88
88
  winston.debug('bot', bot);
89
89
  requestJson.department.bot = bot
@@ -138,7 +138,7 @@ class RoleChecker {
138
138
  winston.debug("hasRoleOrType query " + JSON.stringify(query));
139
139
 
140
140
  Project_user.findOne(query)
141
- .cache(cacheUtil.defaultTTL, req.params.projectid+":project_users:id:"+req.user.id)
141
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, req.params.projectid+":project_users:id:"+req.user.id)
142
142
  .exec(function (err, project_user) {
143
143
  if (err) {
144
144
  winston.error("Error getting project_user for hasrole",err);
@@ -129,7 +129,7 @@ module.exports = function(passport) {
129
129
 
130
130
  winston.debug("project id: "+ AudienceId );
131
131
  Project.findOne({_id: AudienceId, status: 100}).select('+jwtSecret')
132
- .cache(cacheUtil.queryTTL, "projects:query:id:status:100:"+AudienceId+":select:+jwtSecret")
132
+ //@DISABLED_CACHE .cache(cacheUtil.queryTTL, "projects:query:id:status:100:"+AudienceId+":select:+jwtSecret")
133
133
  .exec(function (err, project){
134
134
  if (err) {
135
135
  winston.error("auth Project err: ", {error:err, decoded: decoded} );
@@ -317,7 +317,7 @@ module.exports = function(passport) {
317
317
  } else {
318
318
  winston.debug("Passport JWT generic user");
319
319
  User.findOne({_id: identifier, status: 100})
320
- .cache(cacheUtil.defaultTTL, "users:id:"+identifier)
320
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+identifier)
321
321
  .exec(function(err, user) {
322
322
  if (err) {
323
323
  winston.error("Passport JWT generic err ", err);
@@ -349,7 +349,7 @@ module.exports = function(passport) {
349
349
  winston.debug("email lowercase: " + email);
350
350
 
351
351
  User.findOne({ email: email, status: 100}, 'email firstname lastname password emailverified id')
352
- .cache(cacheUtil.defaultTTL, "users:email:"+email)
352
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:email:"+email)
353
353
  .exec(function (err, user) {
354
354
 
355
355
  if (err) {
package/models/request.js CHANGED
@@ -429,7 +429,7 @@ RequestSchema.index({ id_project: 1, status: 1, preflight:1, updatedAt: -1 }); /
429
429
 
430
430
  RequestSchema.index({ id_project: 1, preflight:1, updatedAt: -1 }); // used query ws (topic.endsWith('/requests'))
431
431
 
432
-
432
+ RequestSchema.index({ hasBot: 1, createdAt: 1 }); // suggested by atlas
433
433
 
434
434
 
435
435
  // cannot index parallel arrays [agents] [participants] {"driv
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiledesk/tiledesk-server",
3
3
  "description": "The Tiledesk server module",
4
- "version": "2.2.21",
4
+ "version": "2.2.24",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -376,7 +376,7 @@ sendToAgentEmailChannelEmail(projectid, message) {
376
376
  }
377
377
 
378
378
  User.findOne({_id: userid , status: 100})
379
- .cache(cacheUtil.defaultTTL, "users:id:"+userid)
379
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid)
380
380
  .exec(function (err, user) {
381
381
  if (err) {
382
382
  // winston.debug(err);
@@ -430,7 +430,7 @@ sendToAgentEmailChannelEmail(projectid, message) {
430
430
  }
431
431
 
432
432
  User.findOne({_id: assignedId, status: 100})
433
- .cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
433
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
434
434
  .exec(function (err, user) {
435
435
  if (err) {
436
436
  winston.error("Error sending email to " + savedRequest.participants[0], err);
@@ -707,7 +707,7 @@ sendAgentEmail(projectid, savedRequest) {
707
707
  }
708
708
 
709
709
  User.findOne({_id: userid , status: 100})
710
- .cache(cacheUtil.defaultTTL, "users:id:"+userid)
710
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid)
711
711
  .exec(function (err, user) {
712
712
  if (err) {
713
713
  // winston.debug(err);
@@ -769,7 +769,7 @@ sendAgentEmail(projectid, savedRequest) {
769
769
  return winston.warn("RequestNotification email notification for the user with id : " + assignedId + " not found project_user");
770
770
  }
771
771
  User.findOne({_id: assignedId, status: 100})
772
- .cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
772
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
773
773
  .exec(function (err, user) {
774
774
  if (err) {
775
775
  winston.error("Error sending email to " + savedRequest.participants[0], err);
@@ -38,9 +38,9 @@ class MessageHandlebarsTransformerInterceptor {
38
38
  populate({path:'requester',populate:{path:'id_user'}});
39
39
  // }
40
40
 
41
- var request = await q1.
42
- cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient).
43
- exec();
41
+ var request = await q1
42
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient)
43
+ .exec();
44
44
 
45
45
 
46
46
 
@@ -37,14 +37,14 @@ class MessageTransformerInterceptor {
37
37
  var language = "EN";
38
38
 
39
39
  // cacherequest // requestcachefarequi nocachepopulatereqired
40
- var request = await Request.findOne({request_id: message.recipient, id_project: message.id_project}).
40
+ var request = await Request.findOne({request_id: message.recipient, id_project: message.id_project})
41
41
  // populate('lead').
42
42
  // populate('department').
43
43
  // populate('participatingBots').
44
44
  // populate('participatingAgents').
45
45
  // populate({path:'requester',populate:{path:'id_user'}}).
46
- cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient).
47
- exec();
46
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient)
47
+ .exec();
48
48
 
49
49
  winston.debug('request mti: ', request);
50
50
 
@@ -166,7 +166,7 @@ router.get('/allstatus', [passport.authenticate(['basic', 'jwt'], { session: fal
166
166
  winston.debug("## GET ALL DEPTS QUERY (1)", query)
167
167
  // return Department.find({ "id_project": req.projectid }, function (err, departments) {
168
168
  return Department.find(query)
169
- .cache(cacheUtil.defaultTTL, req.projectid+":departments:query:allstatus")
169
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, req.projectid+":departments:query:allstatus")
170
170
  .exec(function (err, departments) {
171
171
  if (err) {
172
172
  winston.error('Error getting the departments.', err);
package/routes/faq.js CHANGED
@@ -273,7 +273,7 @@ router.get('/', function (req, res, next) {
273
273
  query.id_faq_kb = req.query.id_faq_kb;
274
274
  }
275
275
 
276
- var limit = 300; // Number of request per page
276
+ var limit = 3000; // Number of request per page
277
277
 
278
278
  if (req.query.limit) {
279
279
  limit = parseInt(req.query.limit);
package/routes/message.js CHANGED
@@ -66,7 +66,7 @@ async (req, res) => {
66
66
  // .populate('participatingBots')
67
67
  // .populate('participatingAgents')
68
68
  // .populate({path:'requester',populate:{path:'id_user'}})
69
- .cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+req.params.request_id)
69
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+req.params.request_id)
70
70
  .exec(async(err, request) => {
71
71
 
72
72
  if (err) {
package/routes/project.js CHANGED
@@ -313,7 +313,7 @@ router.patch('/:projectid', [passport.authenticate(['basic', 'jwt'], { session:
313
313
  router.get('/:projectid', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['subscription'])], function (req, res) {
314
314
  winston.debug(req.body);
315
315
  Project.findOne({_id: req.params.projectid, status:100})
316
- .cache(cacheUtil.defaultTTL, "projects:id:"+req.params.projectid)
316
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "projects:id:"+req.params.projectid)
317
317
  .exec(function (err, project) {
318
318
  if (err) {
319
319
  winston.error('Error getting project ', err);
@@ -462,8 +462,8 @@ router.get('/users/:user_id', [passport.authenticate(['basic', 'jwt'], { session
462
462
  * RETURN THE PROJECT-USERS OBJECTS FILTERD BY PROJECT-ID AND WITH NESTED THE USER OBJECT
463
463
  * WF: 1. GET PROJECT-USER by the passed project ID
464
464
  * 2. POPULATE THE user_id OF THE PROJECT-USER object WITH THE USER OBJECT
465
- */
466
- router.get('/', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], function (req, res) {
465
+ */
466
+ router.get('/', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['subscription'])], function (req, res) {
467
467
 
468
468
  var role = [RoleConstants.OWNER, RoleConstants.ADMIN, RoleConstants.SUPERVISOR, RoleConstants.AGENT];
469
469
 
package/routes/widget.js CHANGED
@@ -116,8 +116,8 @@ router.get('/', function(req, res, next) {
116
116
 
117
117
  // TOOD add labels
118
118
  Promise.all([
119
- Project.findOne({_id: req.projectid, status: 100}).select('-settings')
120
- .cache(cacheUtil.queryTTL, "projects:query:id:status:100:"+req.projectid+":select:-settings")
119
+ Project.findOne({_id: req.projectid, status: 100}).select('-settings') //--profile todo trialExpired attento user_available cambia spesso quindi magari leggerlo dal db ogni volta
120
+ //@DISABLED_CACHE .cache(cacheUtil.queryTTL, "projects:query:id:status:100:"+req.projectid+":select:-settings")
121
121
  ,
122
122
  availableUsers()
123
123
  ,
@@ -98,13 +98,13 @@ class EmailService {
98
98
  this.host = process.env.EMAIL_HOST || config.host;
99
99
  winston.info('EmailService host: ' + this.host);
100
100
 
101
- this.secure = process.env.EMAIL_SECURE || false;
101
+ this.secure = process.env.EMAIL_SECURE || false; //gestire bene il parsing da stringa per kube
102
102
  winston.info('EmailService secure: ' + this.secure);
103
103
 
104
104
  this.user = process.env.EMAIL_USERNAME || config.username;
105
105
  winston.info('EmailService username: ' + this.user);
106
106
 
107
- this.port = process.env.EMAIL_PORT;
107
+ this.port = process.env.EMAIL_PORT; //default is 587
108
108
  winston.info('EmailService port: ' + this.port);
109
109
 
110
110
 
@@ -88,7 +88,7 @@ class FaqBotHandler {
88
88
 
89
89
 
90
90
  Faq_kb.findById(botId)
91
- .cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+botId)
91
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+botId)
92
92
  .exec(function(err, faq_kb) {
93
93
  if (err) {
94
94
  return winston.error("Error getting bot object.",err);
@@ -122,7 +122,7 @@ getAllMerged(id_project) {
122
122
 
123
123
 
124
124
  return Label.findOne(query).lean()
125
- .cache(cacheUtil.longTTL, id_project+":labels:query:all")
125
+ //@DISABLED_CACHE .cache(cacheUtil.longTTL, id_project+":labels:query:all")
126
126
  .exec(function (err, labels) {
127
127
  if (err) {
128
128
  winston.error('Label ROUTE - REQUEST FIND ERR ', err)
@@ -167,7 +167,7 @@ getAll(id_project) {
167
167
 
168
168
 
169
169
  return Label.findOne(query).lean()
170
- .cache(cacheUtil.longTTL, id_project+":labels:query:all")
170
+ //@DISABLED_CACHE .cache(cacheUtil.longTTL, id_project+":labels:query:all")
171
171
  .exec(function (err, labels) {
172
172
  if (err) {
173
173
  winston.error('Label ROUTE - REQUEST FIND ERR ', err)
@@ -74,7 +74,7 @@ getAll(id_project) {
74
74
 
75
75
 
76
76
  return Label.findOne(query).lean()
77
- .cache(cacheUtil.longTTL, id_project+":labels:query:all")
77
+ //@DISABLED_CACHE .cache(cacheUtil.longTTL, id_project+":labels:query:all")
78
78
  .exec(function (err, labels) {
79
79
  if (err) {
80
80
  winston.error('Label ROUTE - REQUEST FIND ERR ', err)
@@ -14,7 +14,7 @@ class LeadService {
14
14
  var that = this;
15
15
  return new Promise(function (resolve, reject) {
16
16
  return Lead.findOne({email: email, id_project: id_project})
17
- .cache(cacheUtil.defaultTTL, id_project+":leads:email:"+email)
17
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, id_project+":leads:email:"+email)
18
18
  .exec(function(err, lead) {
19
19
  if (err) {
20
20
  return reject(err);
@@ -58,7 +58,7 @@ class LeadService {
58
58
  var that = this;
59
59
  return new Promise(function (resolve, reject) {
60
60
  return Lead.findOne({lead_id: lead_id, id_project: id_project})
61
- .cache(cacheUtil.defaultTTL, id_project+":leads:lead_id:"+lead_id)
61
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, id_project+":leads:lead_id:"+lead_id)
62
62
  .exec(function(err, lead) {
63
63
  if (err) {
64
64
  winston.error("Error createIfNotExistsWithLeadId", err);
@@ -12,7 +12,7 @@ class OperatingHoursService {
12
12
 
13
13
  // winston.debug('O ---> [ OHS ] -> PROJECT ID ', projectId)
14
14
  Project.findOne({_id: projectId, status: 100})
15
- .cache(cacheUtil.defaultTTL, "projects:id:"+projectId)
15
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "projects:id:"+projectId)
16
16
  .exec(function (err, project) {
17
17
  // winston.debug("XXXXXXXX project", project);
18
18
  if (err) {
@@ -170,7 +170,7 @@ class RequestService {
170
170
 
171
171
  return Request
172
172
  .findOne({request_id: request_id, id_project: id_project})
173
- .cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id)
173
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id)
174
174
  .exec( function(err, request) {
175
175
 
176
176
  if (err) {
@@ -322,7 +322,7 @@ class RequestService {
322
322
 
323
323
  return Request
324
324
  .findOne({request_id: request_id, id_project: id_project})
325
- .cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id)
325
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id)
326
326
  .exec( function(err, request) {
327
327
 
328
328
  if (err) {
@@ -901,7 +901,7 @@ class RequestService {
901
901
  .populate('participatingBots')
902
902
  .populate('participatingAgents')
903
903
  .populate({path:'requester',populate:{path:'id_user'}})
904
- .cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id)
904
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id)
905
905
  .exec(function(err, request) {
906
906
  if (err) {
907
907
  winston.error(err);
@@ -23,14 +23,14 @@ async send(sender, senderFullname, recipient, text, id_project, createdBy, attri
23
23
  winston.debug("bot id: "+id);
24
24
  sender = id; //change sender removing bot_
25
25
  var bot = await Faq_kb.findById(id)
26
- .cache(cacheUtil.defaultTTL, id_project+":faq_kbs:id:"+id)
26
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, id_project+":faq_kbs:id:"+id)
27
27
  .exec();
28
28
  winston.debug("bot",bot);
29
29
  senderFullname = bot.name;
30
30
  } else {
31
31
  winston.debug("user id: "+sender);
32
32
  var user = await User.findById(sender)
33
- .cache(cacheUtil.defaultTTL, "users:id:"+sender)
33
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+sender)
34
34
  .exec()
35
35
  winston.debug("user", user);
36
36
  senderFullname = user.fullName;
@@ -93,7 +93,7 @@ class WebSocketServer {
93
93
  // winston.debug('ok websocket');
94
94
 
95
95
  User.findOne({_id: identifier, status: 100}, 'email firstname lastname emailverified id')
96
- .cache(cacheUtil.defaultTTL, "users:id:"+identifier)
96
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+identifier)
97
97
  .exec(function (err, user) {
98
98
 
99
99
 
@@ -176,7 +176,7 @@ class WebSocketServer {
176
176
 
177
177
 
178
178
  return Project.findOne({ _id: projectId, status: 100})
179
- .cache(cacheUtil.defaultTTL, "projects:id:"+projectId)
179
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "projects:id:"+projectId)
180
180
  .exec(function(err, project) {
181
181
  if (err) {
182
182
  winston.error('WebSocket - Error getting Project', err);
@@ -197,7 +197,7 @@ class WebSocketServer {
197
197
 
198
198
 
199
199
  Project_user.findOne({ id_project: projectId, id_user: req.user._id, $or:[ {"role": "agent"}, {"role": "admin"}, {"role": "owner"}], status: "active" })
200
- .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
200
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
201
201
  .exec(function (err, projectuser) {
202
202
  if (err) {
203
203
  winston.error('WebSocket error getting Project_user', err);
@@ -266,7 +266,7 @@ class WebSocketServer {
266
266
 
267
267
 
268
268
  Project_user.findOne({ id_project: projectId, id_user: req.user._id, $or:[ {"role": "agent"}, {"role": "admin"}, {"role": "owner"}], status: "active"})
269
- .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
269
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
270
270
  .exec(function (err, projectuser) {
271
271
  if (err) {
272
272
  winston.error('WebSocket error getting Project_user', err);
@@ -315,7 +315,7 @@ class WebSocketServer {
315
315
  .limit(lastRequestsLimit)
316
316
  // DISABLED 23Marzo2021 per problema request.snapshot.requester.isAuthenticated = undefined
317
317
  .lean() //https://www.tothenew.com/blog/high-performance-find-query-using-lean-in-mongoose-2/ https://stackoverflow.com/questions/33104136/mongodb-mongoose-slow-query-when-fetching-10k-documents
318
- .cache(cacheUtil.queryTTL, projectId+":requests:query:status-50-1000:preflight-false:select_snapshot_agents:"+cacheUserId)
318
+ //@DISABLED_CACHE .cache(cacheUtil.queryTTL, projectId+":requests:query:status-50-1000:preflight-false:select_snapshot_agents:"+cacheUserId)
319
319
  .exec(function(err, requests) {
320
320
 
321
321
  if (err) {
@@ -381,7 +381,7 @@ class WebSocketServer {
381
381
 
382
382
  //check if current user can see the data
383
383
  Project_user.findOne({ id_project: projectId, id_user: req.user._id, $or:[ {"role": "agent"}, {"role": "admin"}, {"role": "owner"}], status: "active"})
384
- .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
384
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
385
385
  .exec(function (err, currentProjectuser) {
386
386
  if (err) {
387
387
  winston.error('WebSocket error getting Project_user', err);
@@ -407,7 +407,7 @@ class WebSocketServer {
407
407
  }
408
408
 
409
409
  Project_user.findOne(query)
410
- .cache(cacheUtil.defaultTTL, projectId+":project_users:users:"+userId)
410
+ // @DISABLED_CACHE .cache(cacheUtil.defaultTTL, projectId+":project_users:users:"+userId)
411
411
  .exec(function (err, projectuser) {
412
412
  if (err) {
413
413
  winston.error('WebSocket error getting Project_user', err);
@@ -451,7 +451,7 @@ class WebSocketServer {
451
451
  winston.debug(' query: ',query);
452
452
 
453
453
  Project_user.findOne(query)
454
- .cache(cacheUtil.defaultTTL, projectId+":project_users:"+puId)
454
+ // @DISABLED_CACHE .cache(cacheUtil.defaultTTL, projectId+":project_users:"+puId)
455
455
  .exec(function (err, projectuser) {
456
456
  if (err) {
457
457
  winston.error('WebSocket error getting Project_user', err);
@@ -491,7 +491,7 @@ class WebSocketServer {
491
491
  winston.debug(' query: ',query);
492
492
 
493
493
  EventModel.find(query)
494
- .cache(cacheUtil.defaultTTL, projectId+":events:"+puId)
494
+ // @DISABLED_CACHE .cache(cacheUtil.defaultTTL, projectId+":events:"+puId)
495
495
  .sort({createdAt: 'desc'})
496
496
  .limit(lastEventsLimit)
497
497
  .exec(function(err, events) {
@@ -518,7 +518,7 @@ class WebSocketServer {
518
518
  winston.debug('recipientId: '+recipientId);
519
519
 
520
520
  Project_user.findOne({ id_project: projectId, id_user: req.user._id, $or:[ {"role": "agent"}, {"role": "admin"}, {"role": "owner"}], status: "active" })
521
- .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
521
+ // @DISABLED_CACHE .cache(cacheUtil.defaultTTL, projectId+":project_users:role:teammate:"+req.user._id)
522
522
  .exec(function (err, projectuser) {
523
523
  if (err) {
524
524
  winston.error('WebSocket error getting Project_user', err);