@tiledesk/tiledesk-server 2.2.36 → 2.2.39

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
 
2
- # 2.2.36 -> PROD
2
+
3
+ # 2.2.38
4
+ - Unlocked departments, groups, multi-tenant, tags and canned resposes modules
5
+
6
+ # 2.2.37 -> PROD
7
+ - skip subtype private message for notification
8
+
9
+ # 2.2.36
3
10
  - Ukraine translations
4
11
 
5
12
  # 2.2.35
package/README.md CHANGED
@@ -25,23 +25,6 @@ Use [Docker Compose Tiledesk installation guide](https://github.com/Tiledesk/til
25
25
 
26
26
  # Running Tiledesk Server
27
27
 
28
- ## Run locally with npm
29
-
30
- Steps to run with npm:
31
-
32
- ```
33
- npm install -g @tiledesk/tiledesk-server mongodb-runner
34
- mongodb-runner start
35
- curl https://raw.githubusercontent.com/Tiledesk/tiledesk-server/master/.env.sample --output .env
36
- nano .env #configure .env file properly
37
- tiledesk-server
38
- ```
39
-
40
- If you want to load .env file from another path: `DOTENV_PATH=/MY/ABSOLUTE/PATH/.env tiledesk-server`
41
-
42
- Note: If installation with -g fails due to permission problems (npm ERR! code 'EACCES'), please refer to this [link](https://docs.npmjs.com/getting-started/fixing-npm-permissions).
43
-
44
-
45
28
  ## Using Docker
46
29
 
47
30
 
@@ -65,12 +48,30 @@ Otherwise if you want to run tiledesk only with docker run :
65
48
  docker run -p 3000:3000 --env DATABASE_URI="mongodb://YOUR_MONGO_INSTALLATION_ENDPOINT/tiledesk-server" --env-file .env tiledesk/tiledesk-server
66
49
  ```
67
50
 
51
+
52
+
53
+ ## Run locally with npm
54
+
55
+ Steps to run with npm:
56
+
57
+ ```
58
+ npm install -g @tiledesk/tiledesk-server mongodb-runner
59
+ mongodb-runner start
60
+ curl https://raw.githubusercontent.com/Tiledesk/tiledesk-server/master/.env.sample --output .env
61
+ nano .env #configure .env file properly
62
+ tiledesk-server
63
+ ```
64
+
65
+ If you want to load .env file from another path: `DOTENV_PATH=/MY/ABSOLUTE/PATH/.env tiledesk-server`
66
+
67
+ Note: If installation with -g fails due to permission problems (npm ERR! code 'EACCES'), please refer to this [link](https://docs.npmjs.com/getting-started/fixing-npm-permissions).
68
+
68
69
  ## Install from source code
69
70
 
70
71
  * Clone this repo
71
72
  * Install dependencies with `npm install`
72
73
  * Configure the tiledesk .env file. You can see an example in the file .env.sample under the root folder. Rename it from .env.sample to .env and configure it properly.
73
- * Run the app with the command `npm start` or with `nodemon` if you want monitoring and auto reload. Install nodemon with `npm install -g nodemon`
74
+ * Run the app with the command `npm start`.
74
75
 
75
76
 
76
77
  ## Deploy on Heroku
package/app.js CHANGED
@@ -30,6 +30,7 @@ var Project = require("./models/project");
30
30
  var validtoken = require('./middleware/valid-token');
31
31
  var roleChecker = require('./middleware/has-role');
32
32
 
33
+ const MaskData = require("maskdata");
33
34
  var winston = require('./config/winston');
34
35
 
35
36
  // https://bretkikehara.wordpress.com/2013/05/02/nodejs-creating-your-first-global-module/
@@ -43,7 +44,18 @@ if (process.env.NODE_ENV == 'test') {
43
44
  databaseUri = config.databasetest;
44
45
  }
45
46
 
46
- winston.info("DatabaseUri: " + databaseUri);
47
+ const masked_databaseUri = MaskData.maskPhone(databaseUri, {
48
+ maskWith : "*",
49
+ unmaskedStartDigits: 15,
50
+ unmaskedEndDigits: 5
51
+ });
52
+
53
+ if (process.env.DISABLE_MONGO_PASSWORD_MASK ==true || process.env.DISABLE_MONGO_PASSWORD_MASK == "true") {
54
+ winston.info("DatabaseUri: " + databaseUri);
55
+ }else {
56
+ winston.info("DatabaseUri: " + masked_databaseUri);
57
+ }
58
+
47
59
 
48
60
  var autoIndex = true;
49
61
  if (process.env.MONGOOSE_AUTOINDEX) {
@@ -123,8 +135,7 @@ var faqBotHandler = require('./services/faqBotHandler');
123
135
  faqBotHandler.listen();
124
136
 
125
137
  var pubModulesManager = require('./pubmodules/pubModulesManager');
126
- pubModulesManager.init();
127
-
138
+ pubModulesManager.init({express:express, mongoose:mongoose, passport:passport, databaseUri:databaseUri, routes:{}});
128
139
 
129
140
  var channelManager = require('./channels/channelManager');
130
141
  channelManager.listen();
@@ -133,6 +144,7 @@ const ipfilter = require('express-ipfilter').IpFilter
133
144
  // const IpDeniedError = require('express-ipfilter').IpDeniedError;
134
145
 
135
146
 
147
+
136
148
  var modulesManager = undefined;
137
149
  try {
138
150
  modulesManager = require('./services/modulesManager');
@@ -56,8 +56,9 @@ class Chat21Handler {
56
56
  typing(message, timestamp) {
57
57
  return new Promise(function (resolve, reject) {
58
58
 
59
+ // if privateFor skip typing
59
60
  //no typing for subtype info
60
- if (message.attributes && message.attributes.subtype && message.attributes.subtype==='info') {
61
+ if (message.attributes && message.attributes.subtype && (message.attributes.subtype==='info' || message.attributes.subtype==='private')) {
61
62
  return resolve();
62
63
  }else {
63
64
  chat21.conversations.typing(message.recipient, message.sender, message.text, timestamp).finally(function() {
@@ -936,6 +936,326 @@
936
936
  "LABEL_PRECHAT_ACCEPT_TERMS_PRIVACY": "я згоден",
937
937
  "PRECHAT_REQUIRED_ERROR": "Це поле є обов'язковим"
938
938
  }
939
+ },
940
+ {
941
+ "lang":"SV",
942
+ "data":
943
+ {
944
+ "LABEL_PLACEHOLDER": "skriv ditt meddelande..",
945
+ "LABEL_START_NW_CONV": "Ny konversation",
946
+ "LABEL_FIRST_MSG": "Beskriv kort ditt problem, du kommer att kontaktas av en agent.",
947
+ "LABEL_FIRST_MSG_NO_AGENTS": "🤔 Alla operatörer är offline för tillfället. Du kan hur som helst beskriva ditt problem. Det kommer att tilldelas supportteamet som återkommer till dig så snart som möjligt.",
948
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED": "🤔 Våra kontor är stängda. Du kan hur som helst beskriva ditt problem. Det kommer att tilldelas supportteamet som återkommer till dig så snart som möjligt.",
949
+ "LABEL_SELECT_TOPIC": "Välj ett ämne",
950
+ "LABEL_COMPLETE_FORM": "Fyll i formuläret för att starta en konversation med nästa tillgängliga agent.",
951
+ "LABEL_FIELD_NAME": "namn",
952
+ "LABEL_ERROR_FIELD_NAME": "Obligatoriskt fält (minst 5 tecken).",
953
+ "LABEL_FIELD_EMAIL": "E-post",
954
+ "LABEL_ERROR_FIELD_EMAIL": "Ange en giltig e-postadress.",
955
+ "LABEL_WRITING": "skriver...",
956
+ "AGENT_NOT_AVAILABLE": " Off-line",
957
+ "AGENT_AVAILABLE": " Uppkopplad",
958
+ "GUEST_LABEL": "Gäst",
959
+ "ALL_AGENTS_OFFLINE_LABEL": "Alla operatörer är offline för tillfället",
960
+ "LABEL_LOADING": "Läser in...",
961
+ "CALLOUT_TITLE_PLACEHOLDER": "🖐 Behöver du hjälp?",
962
+ "CALLOUT_MSG_PLACEHOLDER": "Klicka här och börja chatta med oss!",
963
+ "CUSTOMER_SATISFACTION": "Kundnöjdhet",
964
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "Din åsikt om vår kundtjänst",
965
+ "DOWNLOAD_TRANSCRIPT": "Ladda ner avskrift",
966
+ "BACK": "Tillbaka",
967
+ "YOUR_RATING": "ditt betyg",
968
+ "WRITE_YOUR_OPINION": "Skriv din åsikt ... (valfritt)",
969
+ "SUBMIT": "Skicka in",
970
+ "THANK_YOU_FOR_YOUR_EVALUATION": "Tack för din utvärdering",
971
+ "YOUR_RATING_HAS_BEEN_RECEIVED": "ditt betyg har mottagits",
972
+ "ALERT_LEAVE_CHAT": "Vill du lämna chatten?",
973
+ "YES": "Ja",
974
+ "NO": "Nej",
975
+ "BUTTON_CLOSE_TO_ICON": "Minimera chatten",
976
+ "BUTTON_EDIT_PROFILE": "Uppdatera profil",
977
+ "BUTTON_DOWNLOAD_TRANSCRIPT": "Ladda ner avskrift",
978
+ "RATE_CHAT": "Betygsätt chatt",
979
+ "WELLCOME_TITLE": "Hej, välkommen till Tiledesk 👋",
980
+ "WELLCOME_MSG": "Hur kan vi hjälpa?",
981
+ "WELLCOME": "Välkommen",
982
+ "WELCOME_TITLE": "Hej, välkommen till Tiledesk 👋",
983
+ "WELCOME_MSG": "Hur kan vi hjälpa?",
984
+ "WELCOME": "Välkommen",
985
+ "OPTIONS": "alternativ",
986
+ "SOUND_OFF": "ljud av",
987
+ "SOUND_ON": "ljud på",
988
+ "LOGOUT": "logga ut",
989
+ "CLOSE": "Stänga",
990
+ "PREV_CONVERSATIONS": "Dina konversationer",
991
+ "YOU": "Du",
992
+ "SHOW_ALL_CONV": "visa allt",
993
+ "START_A_CONVERSATION": "Starta en konversation",
994
+ "NO_CONVERSATION": "Ingen konversation",
995
+ "SEE_PREVIOUS": "se föregående",
996
+ "WAITING_TIME_FOUND": "Teamet svarar vanligtvis med $reply_time",
997
+ "WAITING_TIME_NOT_FOUND": "Teamet kommer att svara så snart som möjligt",
998
+ "CLOSED": "Stängd",
999
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "du",
1000
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "du har lagts till ",
1001
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "chatten",
1002
+ "INFO_SUPPORT_USER_ADDED_VERB": "gick med",
1003
+ "INFO_SUPPORT_CHAT_REOPENED": "Chatten öppnades igen",
1004
+ "INFO_SUPPORT_CHAT_CLOSED": "Chatten stängd",
1005
+ "TICKET_TAKING": "Begäran har kommit in och assistanspersonalen hanterar den.\nFör att lägga till fler kommentarer, svara på det här e-postmeddelandet.",
1006
+ "LABEL_ERROR_FIELD_REQUIRED": "obligatoriskt fält",
1007
+ "SENT_AN_ATTACHMENT": "skickade en bilaga",
1008
+ "SENT_AN_IMAGE": "skickade en bild",
1009
+ "LABEL_PRECHAT_USER_FULLNAME": "Fullständiga namn",
1010
+ "LABEL_PRECHAT_USER_EMAIL": "E-post",
1011
+ "LABEL_PRECHAT_USER_EMAIL_ERROR": "Ogiltig e-postadress",
1012
+ "LABEL_PRECHAT_USER_PHONE": "Telefon",
1013
+ "LABEL_PRECHAT_USER_PHONE_ERROR": "Telefon krävs",
1014
+ "LABEL_PRECHAT_FIRST_MESSAGE": "Ditt meddelande till supportteamet",
1015
+ "LABEL_PRECHAT_STATIC_TERMS_PRIVACY": "Innan du fortsätter i konversationen, godkänn våra <a href='https://tiledesk.com/termsofservice/' target='_blank'>Villkor</a> och <a href='https://tiledesk.com/privacy.html' target='_blank'>Sekretesspolicy</a>",
1016
+ "LABEL_PRECHAT_ACCEPT_TERMS_PRIVACY": "jag håller med",
1017
+ "PRECHAT_REQUIRED_ERROR": "Detta fält är obligatoriskt"
1018
+ }
1019
+ },
1020
+ {
1021
+ "lang":"KK",
1022
+ "data":
1023
+ {
1024
+ "LABEL_PLACEHOLDER": "хабарламаңызды теріңіз..",
1025
+ "LABEL_START_NW_CONV": "Жаңа әңгіме",
1026
+ "LABEL_FIRST_MSG": "Мәселеңізді қысқаша сипаттаңыз, сізге агент хабарласады.",
1027
+ "LABEL_FIRST_MSG_NO_AGENTS": "🤔 Қазіргі уақытта барлық операторлар желіден тыс. Сіз бәрібір мәселеңізді сипаттай аласыз. Ол сізге мүмкіндігінше тезірек хабарласатын қолдау көрсету тобына тағайындалады.",
1028
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED": "🤔 Біздің кеңселер жабық. Сіз бәрібір мәселеңізді сипаттай аласыз. Ол сізге мүмкіндігінше тезірек хабарласатын қолдау көрсету тобына тағайындалады.",
1029
+ "LABEL_SELECT_TOPIC": "Тақырыпты таңдаңыз",
1030
+ "LABEL_COMPLETE_FORM": "Келесі қолжетімді агентпен сөйлесуді бастау үшін пішінді толтырыңыз.",
1031
+ "LABEL_FIELD_NAME": "Аты",
1032
+ "LABEL_ERROR_FIELD_NAME": "Міндетті өріс (кемінде 5 таңба).",
1033
+ "LABEL_FIELD_EMAIL": "Электрондық пошта",
1034
+ "LABEL_ERROR_FIELD_EMAIL": "Жарамды электрондық пошта мекенжайын енгізіңіз.",
1035
+ "LABEL_WRITING": "жазып жатыр...",
1036
+ "AGENT_NOT_AVAILABLE": " Офлайн",
1037
+ "AGENT_AVAILABLE": " Желіде",
1038
+ "GUEST_LABEL": "Қонақ",
1039
+ "ALL_AGENTS_OFFLINE_LABEL": "Қазіргі уақытта барлық операторлар желіден тыс",
1040
+ "LABEL_LOADING": "Жүктелуде...",
1041
+ "CALLOUT_TITLE_PLACEHOLDER": "🖐 Көмек керек пе?",
1042
+ "CALLOUT_MSG_PLACEHOLDER": "Мұнда басыңыз және бізбен сөйлесуді бастаңыз!",
1043
+ "CUSTOMER_SATISFACTION": "Тұтынушының қанағаттануы",
1044
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "Біздің тұтынушыларға қызмет көрсету туралы пікіріңіз",
1045
+ "DOWNLOAD_TRANSCRIPT": "Транскриптті жүктеп алыңыз",
1046
+ "BACK": "Артқа",
1047
+ "YOUR_RATING": "сіздің рейтингіңіз",
1048
+ "WRITE_YOUR_OPINION": "Өз пікіріңізді жазыңыз ... (міндетті емес)",
1049
+ "SUBMIT": "Жіберу",
1050
+ "THANK_YOU_FOR_YOUR_EVALUATION": "Бағаңыз үшін рахмет",
1051
+ "YOUR_RATING_HAS_BEEN_RECEIVED": "сіздің рейтингіңіз алынды",
1052
+ "ALERT_LEAVE_CHAT": "Чаттан кеткіңіз келе ме?",
1053
+ "YES": "Иә",
1054
+ "NO": "Жоқ",
1055
+ "BUTTON_CLOSE_TO_ICON": "Сөйлесуді азайту",
1056
+ "BUTTON_EDIT_PROFILE": "Профильді жаңарту",
1057
+ "BUTTON_DOWNLOAD_TRANSCRIPT": "Транскриптті жүктеп алыңыз",
1058
+ "RATE_CHAT": "Чатқа баға беріңіз",
1059
+ "WELLCOME_TITLE": "Сәлем, Tiledesk сайтына қош келдіңіз 👋",
1060
+ "WELLCOME_MSG": "Біз қалай көмектесе аламыз?",
1061
+ "WELLCOME": "Қош келдіңіз",
1062
+ "WELCOME_TITLE": "Сәлем, Tiledesk сайтына қош келдіңіз 👋",
1063
+ "WELCOME_MSG": "Біз қалай көмектесе аламыз?",
1064
+ "WELCOME": "Қош келдіңіз",
1065
+ "OPTIONS": "опциялар",
1066
+ "SOUND_OFF": "дыбыс өшірулі",
1067
+ "SOUND_ON": "дыбыс қосулы",
1068
+ "LOGOUT": "шығу",
1069
+ "CLOSE": "Жабық",
1070
+ "PREV_CONVERSATIONS": "Сіздің сұхбаттарыңыз",
1071
+ "YOU": "Сіз",
1072
+ "SHOW_ALL_CONV": "барлығын көрсету",
1073
+ "START_A_CONVERSATION": "Әңгіме бастаңыз",
1074
+ "NO_CONVERSATION": "Әңгіме жоқ",
1075
+ "SEE_PREVIOUS": "алдыңғы қараңыз",
1076
+ "WAITING_TIME_FOUND": "Топ әдетте $reply_time-мен жауап береді",
1077
+ "WAITING_TIME_NOT_FOUND": "Команда мүмкіндігінше тезірек жауап береді",
1078
+ "CLOSED": "Жабық",
1079
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "сен",
1080
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "сіз қосылдыңыз ",
1081
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "чат",
1082
+ "INFO_SUPPORT_USER_ADDED_VERB": "қосылды",
1083
+ "INFO_SUPPORT_CHAT_REOPENED": "Чат қайта ашылды",
1084
+ "INFO_SUPPORT_CHAT_CLOSED": "Чат жабылды",
1085
+ "TICKET_TAKING": "Өтініш қабылданды және көмек көрсету қызметкерлері онымен айналысуда.\nҚосымша пікірлер қосу үшін осы электрондық поштаға жауап беріңіз.",
1086
+ "LABEL_ERROR_FIELD_REQUIRED": "Міндетті өріс",
1087
+ "SENT_AN_ATTACHMENT": "қосымша жіберді",
1088
+ "SENT_AN_IMAGE": "сурет жіберді",
1089
+ "LABEL_PRECHAT_USER_FULLNAME": "Толық аты",
1090
+ "LABEL_PRECHAT_USER_EMAIL": "Электрондық пошта",
1091
+ "LABEL_PRECHAT_USER_EMAIL_ERROR": "Жарамсыз электрондық пошта мекенжайы",
1092
+ "LABEL_PRECHAT_USER_PHONE": "Телефон",
1093
+ "LABEL_PRECHAT_USER_PHONE_ERROR": "Телефон қажет",
1094
+ "LABEL_PRECHAT_FIRST_MESSAGE": "Қолдау көрсету тобына арналған хабарламаңыз",
1095
+ "LABEL_PRECHAT_STATIC_TERMS_PRIVACY": "Әңгімені жалғастырмас бұрын, <a href='https://tiledesk.com/termsofservice/' target='_blank'></a> және <a href='https://tiledesk.com/privacy.html' target='_blank'>-шарттар Құпиялылық саясаты</a>-пен келісесіз",
1096
+ "LABEL_PRECHAT_ACCEPT_TERMS_PRIVACY": "Мен келісемін",
1097
+ "PRECHAT_REQUIRED_ERROR": "Бұл керек аймақ"
1098
+ }
1099
+ },
1100
+ {
1101
+ "lang":"UZ",
1102
+ "data":
1103
+ {
1104
+ "LABEL_PLACEHOLDER": "xabaringizni yozing..",
1105
+ "LABEL_START_NW_CONV": "Yangi suhbat",
1106
+ "LABEL_FIRST_MSG": "Muammoingizni qisqacha tasvirlab bering, siz bilan agent bog'lanadi.",
1107
+ "LABEL_FIRST_MSG_NO_AGENTS": "🤔 Hozirda barcha operatorlar oflayn. Qanday bo'lmasin, muammoingizni tasvirlashingiz mumkin. Bu sizga imkon qadar tezroq qaytib keladigan qo'llab-quvvatlash guruhiga tayinlanadi.",
1108
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED": "🤔 Bizning ofislarimiz yopiq. Qanday bo'lmasin, muammoingizni tasvirlashingiz mumkin. Bu sizga imkon qadar tezroq qaytib keladigan qo'llab-quvvatlash guruhiga tayinlanadi.",
1109
+ "LABEL_SELECT_TOPIC": "Mavzuni tanlang",
1110
+ "LABEL_COMPLETE_FORM": "Keyingi mavjud agent bilan suhbatni boshlash uchun shaklni to'ldiring.",
1111
+ "LABEL_FIELD_NAME": "Ism",
1112
+ "LABEL_ERROR_FIELD_NAME": "Majburiy maydon (kamida 5 ta belgi).",
1113
+ "LABEL_FIELD_EMAIL": "Elektron pochta",
1114
+ "LABEL_ERROR_FIELD_EMAIL": "Yaroqli elektron pochta manzilini kiriting.",
1115
+ "LABEL_WRITING": "yozmoqda...",
1116
+ "AGENT_NOT_AVAILABLE": " Oflayn",
1117
+ "AGENT_AVAILABLE": " Onlayn",
1118
+ "GUEST_LABEL": "Mehmon",
1119
+ "ALL_AGENTS_OFFLINE_LABEL": "Ayni paytda barcha operatorlar oflayn rejimda",
1120
+ "LABEL_LOADING": "Yuklanmoqda...",
1121
+ "CALLOUT_TITLE_PLACEHOLDER": "🖐 Yordam kerakmi?",
1122
+ "CALLOUT_MSG_PLACEHOLDER": "Bu yerni bosing va biz bilan suhbatni boshlang!",
1123
+ "CUSTOMER_SATISFACTION": "Mijozlarning qoniqishi",
1124
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "Mijozlarga xizmat ko'rsatish haqidagi fikringiz",
1125
+ "DOWNLOAD_TRANSCRIPT": "Transkriptni yuklab oling",
1126
+ "BACK": "Orqaga",
1127
+ "YOUR_RATING": "sizning reytingingiz",
1128
+ "WRITE_YOUR_OPINION": "Fikringizni yozing ... (ixtiyoriy)",
1129
+ "SUBMIT": "Yuborish",
1130
+ "THANK_YOU_FOR_YOUR_EVALUATION": "Baholaganingiz uchun tashakkur",
1131
+ "YOUR_RATING_HAS_BEEN_RECEIVED": "Sizning reytingingiz olindi",
1132
+ "ALERT_LEAVE_CHAT": "Chatni tark etmoqchimisiz?",
1133
+ "YES": "Ha",
1134
+ "NO": "Yo'q",
1135
+ "BUTTON_CLOSE_TO_ICON": "Suhbatni minimallashtirish",
1136
+ "BUTTON_EDIT_PROFILE": "Profilni yangilash",
1137
+ "BUTTON_DOWNLOAD_TRANSCRIPT": "Transkriptni yuklab oling",
1138
+ "RATE_CHAT": "Suhbatni baholang",
1139
+ "WELLCOME_TITLE": "Salom, Tiledesk 👋 ga xush kelibsiz",
1140
+ "WELLCOME_MSG": "Biz qanday yordam bera olamiz?",
1141
+ "WELLCOME": "Xush kelibsiz",
1142
+ "WELCOME_TITLE": "Salom, Tiledesk 👋 ga xush kelibsiz",
1143
+ "WELCOME_MSG": "Biz qanday yordam bera olamiz?",
1144
+ "WELCOME": "Xush kelibsiz",
1145
+ "OPTIONS": "variantlari",
1146
+ "SOUND_OFF": "ovoz o'chirilgan",
1147
+ "SOUND_ON": "ovoz yoqilgan",
1148
+ "LOGOUT": "chiqish",
1149
+ "CLOSE": "Yopish",
1150
+ "PREV_CONVERSATIONS": "Sizning suhbatlaringiz",
1151
+ "YOU": "Siz",
1152
+ "SHOW_ALL_CONV": "hammasini ko'rsatish",
1153
+ "START_A_CONVERSATION": "Suhbatni boshlang",
1154
+ "NO_CONVERSATION": "Suhbat yo'q",
1155
+ "SEE_PREVIOUS": "oldingisiga qarang",
1156
+ "WAITING_TIME_FOUND": "Jamoa odatda $reply_timebilan javob beradi",
1157
+ "WAITING_TIME_NOT_FOUND": "Jamoa imkon qadar tezroq javob beradi",
1158
+ "CLOSED": "Yopiq",
1159
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "siz",
1160
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "qo'shildingiz ",
1161
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "suhbat",
1162
+ "INFO_SUPPORT_USER_ADDED_VERB": "qo'shildi",
1163
+ "INFO_SUPPORT_CHAT_REOPENED": "Chat qayta ochildi",
1164
+ "INFO_SUPPORT_CHAT_CLOSED": "Chat yopildi",
1165
+ "TICKET_TAKING": "So'rov qabul qilindi va yordam xodimlari u bilan shug'ullanmoqda.\nKo'proq izoh qo'shish uchun ushbu xatga javob yozing.",
1166
+ "LABEL_ERROR_FIELD_REQUIRED": "Majburiy maydon",
1167
+ "SENT_AN_ATTACHMENT": "ilova yubordi",
1168
+ "SENT_AN_IMAGE": "rasm yubordi",
1169
+ "LABEL_PRECHAT_USER_FULLNAME": "To'liq ismi sharif",
1170
+ "LABEL_PRECHAT_USER_EMAIL": "Elektron pochta",
1171
+ "LABEL_PRECHAT_USER_EMAIL_ERROR": "Yaroqsiz elektron pochta manzili",
1172
+ "LABEL_PRECHAT_USER_PHONE": "Telefon",
1173
+ "LABEL_PRECHAT_USER_PHONE_ERROR": "Telefon kerak",
1174
+ "LABEL_PRECHAT_FIRST_MESSAGE": "Qo'llab-quvvatlash jamoasi uchun xabaringiz",
1175
+ "LABEL_PRECHAT_STATIC_TERMS_PRIVACY": "Suhbatni davom ettirishdan oldin <a href='https://tiledesk.com/termsofservice/' target='_blank'>shartlar</a> va <a href='https://tiledesk.com/privacy.html' target='_blank'>Maxfiylik siyosati</a>rozilik bildiring",
1176
+ "LABEL_PRECHAT_ACCEPT_TERMS_PRIVACY": "Men roziman",
1177
+ "PRECHAT_REQUIRED_ERROR": "Ushbu qator to'ldirilishi shart"
1178
+ }
1179
+ },
1180
+ {
1181
+ "lang":"AZ",
1182
+ "data":
1183
+ {
1184
+ "LABEL_PLACEHOLDER": "mesajınızı yazın..",
1185
+ "LABEL_START_NW_CONV": "Yeni söhbət",
1186
+ "LABEL_FIRST_MSG": "Probleminizi qısaca təsvir edin, agent sizinlə əlaqə saxlayacaq.",
1187
+ "LABEL_FIRST_MSG_NO_AGENTS": "🤔 Hazırda bütün operatorlar oflayndır. Hər halda probleminizi təsvir edə bilərsiniz. O, sizə ən qısa zamanda qayıdacaq dəstək komandasına təyin olunacaq.",
1188
+ "LABEL_FIRST_MSG_OPERATING_HOURS_CLOSED": "🤔 Ofislərimiz bağlıdır. Hər halda probleminizi təsvir edə bilərsiniz. O, sizə ən qısa zamanda qayıdacaq dəstək komandasına təyin olunacaq.",
1189
+ "LABEL_SELECT_TOPIC": "Mövzu seçin",
1190
+ "LABEL_COMPLETE_FORM": "Növbəti mövcud agentlə söhbətə başlamaq üçün formanı doldurun.",
1191
+ "LABEL_FIELD_NAME": "ad",
1192
+ "LABEL_ERROR_FIELD_NAME": "Tələb olunan sahə (minimum 5 simvol).",
1193
+ "LABEL_FIELD_EMAIL": "E-poçt",
1194
+ "LABEL_ERROR_FIELD_EMAIL": "Etibarlı e-poçt ünvanı daxil edin.",
1195
+ "LABEL_WRITING": "yazır...",
1196
+ "AGENT_NOT_AVAILABLE": " Oflayn",
1197
+ "AGENT_AVAILABLE": " Onlayn",
1198
+ "GUEST_LABEL": "Qonaq",
1199
+ "ALL_AGENTS_OFFLINE_LABEL": "Hazırda bütün operatorlar oflayndır",
1200
+ "LABEL_LOADING": "Yüklənir...",
1201
+ "CALLOUT_TITLE_PLACEHOLDER": "🖐 Kömək lazımdır?",
1202
+ "CALLOUT_MSG_PLACEHOLDER": "Bura klikləyin və bizimlə söhbət etməyə başlayın!",
1203
+ "CUSTOMER_SATISFACTION": "Müştəri məmnuniyyəti",
1204
+ "YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "Müştəri xidmətlərimiz haqqında rəyiniz",
1205
+ "DOWNLOAD_TRANSCRIPT": "Transkript yükləyin",
1206
+ "BACK": "Geri",
1207
+ "YOUR_RATING": "sizin reytinqiniz",
1208
+ "WRITE_YOUR_OPINION": "Fikrinizi yazın... (istəyə görə)",
1209
+ "SUBMIT": "təqdim",
1210
+ "THANK_YOU_FOR_YOUR_EVALUATION": "Qiymətləndirməniz üçün təşəkkür edirik",
1211
+ "YOUR_RATING_HAS_BEEN_RECEIVED": "reytinqiniz alındı",
1212
+ "ALERT_LEAVE_CHAT": "Çatı tərk etmək istəyirsiniz?",
1213
+ "YES": "Bəli",
1214
+ "NO": "Yox",
1215
+ "BUTTON_CLOSE_TO_ICON": "Söhbəti minimuma endir",
1216
+ "BUTTON_EDIT_PROFILE": "Profili yeniləyin",
1217
+ "BUTTON_DOWNLOAD_TRANSCRIPT": "Transkript yükləyin",
1218
+ "RATE_CHAT": "Söhbəti qiymətləndirin",
1219
+ "WELLCOME_TITLE": "Salam, Tiledesk 👋-a xoş gəlmisiniz",
1220
+ "WELLCOME_MSG": "Biz necə kömək edə bilərik?",
1221
+ "WELLCOME": "Xoş gəldiniz",
1222
+ "WELCOME_TITLE": "Salam, Tiledesk 👋-a xoş gəlmisiniz",
1223
+ "WELCOME_MSG": "Biz necə kömək edə bilərik?",
1224
+ "WELCOME": "Xoş gəldiniz",
1225
+ "OPTIONS": "seçimlər",
1226
+ "SOUND_OFF": "səsi kəsilir",
1227
+ "SOUND_ON": "səsi yandırın",
1228
+ "LOGOUT": "çıxış",
1229
+ "CLOSE": "Yaxın",
1230
+ "PREV_CONVERSATIONS": "Söhbətləriniz",
1231
+ "YOU": "Sən",
1232
+ "SHOW_ALL_CONV": "hamısını göstər",
1233
+ "START_A_CONVERSATION": "Söhbətə başlayın",
1234
+ "NO_CONVERSATION": "Söhbət yoxdur",
1235
+ "SEE_PREVIOUS": "əvvəlki baxın",
1236
+ "WAITING_TIME_FOUND": "Komanda adətən $reply_timeilə cavab verir",
1237
+ "WAITING_TIME_NOT_FOUND": "Komanda mümkün qədər tez cavab verəcəkdir",
1238
+ "CLOSED": "Bağlı",
1239
+ "INFO_SUPPORT_USER_ADDED_SUBJECT": "Sən",
1240
+ "INFO_SUPPORT_USER_ADDED_YOU_VERB": "siz əlavə olundunuz ",
1241
+ "INFO_SUPPORT_USER_ADDED_COMPLEMENT": "söhbət",
1242
+ "INFO_SUPPORT_USER_ADDED_VERB": "qoşuldu",
1243
+ "INFO_SUPPORT_CHAT_REOPENED": "Çat yenidən açıldı",
1244
+ "INFO_SUPPORT_CHAT_CLOSED": "Çat bağlandı",
1245
+ "TICKET_TAKING": "Müraciət qəbul edilib və yardım işçiləri bununla məşğul olur.\nDaha çox şərh əlavə etmək üçün bu e-poçta cavab yazın.",
1246
+ "LABEL_ERROR_FIELD_REQUIRED": "tələb olunan sahə",
1247
+ "SENT_AN_ATTACHMENT": "əlavə göndərdi",
1248
+ "SENT_AN_IMAGE": "şəkil göndərdi",
1249
+ "LABEL_PRECHAT_USER_FULLNAME": "Tam adı",
1250
+ "LABEL_PRECHAT_USER_EMAIL": "E-poçt",
1251
+ "LABEL_PRECHAT_USER_EMAIL_ERROR": "E-mail ünvanı səhvdir",
1252
+ "LABEL_PRECHAT_USER_PHONE": "Telefon",
1253
+ "LABEL_PRECHAT_USER_PHONE_ERROR": "Telefon tələb olunur",
1254
+ "LABEL_PRECHAT_FIRST_MESSAGE": "Dəstək komandası üçün mesajınız",
1255
+ "LABEL_PRECHAT_STATIC_TERMS_PRIVACY": "Söhbətə davam etməzdən əvvəl <a href='https://tiledesk.com/termsofservice/' target='_blank'>Şərt</a> və <a href='https://tiledesk.com/privacy.html' target='_blank'>Məxfilik Siyasəti</a>ilə razılaşın",
1256
+ "LABEL_PRECHAT_ACCEPT_TERMS_PRIVACY": "razıyam",
1257
+ "PRECHAT_REQUIRED_ERROR": "Bu xananın doldurulması məcburidir"
1258
+ }
939
1259
  }
940
1260
  ]
941
1261
 
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.36",
4
+ "version": "2.2.39",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -32,24 +32,26 @@
32
32
  "@tiledesk-ent/tiledesk-server-activities": "^1.1.18",
33
33
  "@tiledesk-ent/tiledesk-server-analytics": "^1.1.12",
34
34
  "@tiledesk-ent/tiledesk-server-cache": "^1.1.10",
35
- "@tiledesk-ent/tiledesk-server-canned": "^1.1.1",
36
- "@tiledesk-ent/tiledesk-server-departments": "^1.1.2",
35
+ "@tiledesk-ent/tiledesk-server-canned": "^1.1.2",
36
+ "@tiledesk-ent/tiledesk-server-departments": "^1.1.3",
37
37
  "@tiledesk-ent/tiledesk-server-dialogflow": "^1.1.6",
38
- "@tiledesk-ent/tiledesk-server-groups": "^1.1.2",
38
+ "@tiledesk-ent/tiledesk-server-groups": "^1.1.3",
39
39
  "@tiledesk-ent/tiledesk-server-jwthistory": "^1.1.9",
40
- "@tiledesk-ent/tiledesk-server-mt": "^1.1.7",
40
+ "@tiledesk-ent/tiledesk-server-mt": "^1.1.8",
41
41
  "@tiledesk-ent/tiledesk-server-payments": "^1.1.6",
42
42
  "@tiledesk-ent/tiledesk-server-queue": "^1.1.11",
43
43
  "@tiledesk-ent/tiledesk-server-request-history": "^1.1.5",
44
44
  "@tiledesk-ent/tiledesk-server-resthook": "^1.1.53",
45
45
  "@tiledesk-ent/tiledesk-server-routing-queue": "^1.1.11",
46
- "@tiledesk-ent/tiledesk-server-tags": "^1.1.1",
46
+ "@tiledesk-ent/tiledesk-server-tags": "^1.1.2",
47
47
  "@tiledesk-ent/tiledesk-server-triggers": "^1.1.82",
48
- "@tiledesk-ent/tiledesk-server-visitorcounter": "^1.1.1"
48
+ "@tiledesk-ent/tiledesk-server-visitorcounter": "^1.1.1",
49
+ "@tiledesk-ent/tiledesk-server-enterprise": "^1.0.0"
49
50
  },
50
51
  "dependencies": {
51
52
  "@tiledesk/tiledesk-chat21-app": "^1.1.4",
52
53
  "@tiledesk/tiledesk-chatbot-util": "^0.8.33",
54
+ "@tiledesk/tiledesk-rasa-connector": "^1.0.5",
53
55
  "app-root-path": "^3.0.0",
54
56
  "bcrypt-nodejs": "0.0.3",
55
57
  "body-parser": "^1.20.0",
@@ -58,6 +58,10 @@ listen() {
58
58
 
59
59
  if (message.sender != message.request.lead.lead_id) {
60
60
  winston.verbose("sending sendToUserEmailChannelEmail for EMAIL or FORM channel");
61
+
62
+ if (message.attributes && message.attributes.subtype==='private') {
63
+ return winston.debug("not sending sendToUserEmailChannelEmail for attributes.subtype private messages");
64
+ }
61
65
  return that.sendToUserEmailChannelEmail(message.id_project, message);
62
66
  } else {
63
67
 
@@ -133,6 +137,9 @@ listen() {
133
137
  });
134
138
  });
135
139
 
140
+
141
+
142
+
136
143
  // requestEvent.on("request.update.preflight", function(request) {
137
144
 
138
145
  // winston.info("requestEvent request.update.preflight");
@@ -335,7 +342,10 @@ sendToAgentEmailChannelEmail(projectid, message) {
335
342
  }
336
343
 
337
344
  winston.debug("savedRequest", savedRequest);
345
+
338
346
 
347
+
348
+
339
349
  // TODO fare il controllo anche sul dipartimento con modalità assigned o pooled
340
350
  if (savedRequest.status==RequestConstants.UNASSIGNED) { //POOLED
341
351
 
@@ -20,12 +20,18 @@ class PubModulesManager {
20
20
  this.scheduler = undefined;
21
21
 
22
22
  this.rasa = undefined;
23
+ this.rasaRoute = undefined;
23
24
  }
24
25
 
25
26
 
26
27
 
27
28
  use(app) {
28
29
 
30
+ if (this.rasaRoute) {
31
+ app.use('/modules/rasa', this.rasaRoute);
32
+ winston.info("ModulesManager rasaRoute controller loaded");
33
+ }
34
+
29
35
  }
30
36
  useUnderProjects(app) {
31
37
  var that = this;
@@ -42,7 +48,7 @@ class PubModulesManager {
42
48
  }
43
49
 
44
50
 
45
- init() {
51
+ init(config) {
46
52
  winston.debug("PubModulesManager init");
47
53
 
48
54
  try {
@@ -145,7 +151,10 @@ class PubModulesManager {
145
151
  try {
146
152
  this.rasa = require('./rasa');
147
153
  winston.debug("this.rasa:"+ this.rasa);
148
- this.rasa.listener.listen();
154
+ this.rasa.listener.listen(config);
155
+
156
+ this.rasaRoute = this.rasa.rasaRoute;
157
+
149
158
  winston.info("PubModulesManager initialized rasa.");
150
159
  } catch(err) {
151
160
  if (err.code == 'MODULE_NOT_FOUND') {
@@ -1,3 +1,10 @@
1
1
  const listener = require("./listener");
2
2
 
3
- module.exports = {listener:listener };
3
+ const rasa = require("@tiledesk/tiledesk-rasa-connector");
4
+ const rasaRoute = rasa.router;
5
+
6
+
7
+
8
+
9
+
10
+ module.exports = { listener: listener, rasaRoute: rasaRoute };
@@ -1,25 +1,46 @@
1
1
  const botEvent = require('../../event/botEvent');
2
2
  var Faq_kb = require("../../models/faq_kb");
3
3
  var winston = require('../../config/winston');
4
+ const rasa = require("@tiledesk/tiledesk-rasa-connector");
5
+ var configGlobal = require('../../config/global');
4
6
 
5
- const BOT_RASA_ENDPOINT = process.env.BOT_RASA_ENDPOINT;
7
+ var port = process.env.PORT || '3000';
8
+
9
+ const BOT_RASA_ENDPOINT = "http://localhost:" + port+ "/modules/rasa/rasabot" || process.env.BOT_RASA_ENDPOINT;
6
10
  winston.debug("BOT_RASA_ENDPOINT: " + BOT_RASA_ENDPOINT);
7
11
 
8
- if (BOT_RASA_ENDPOINT) {
12
+ // if (BOT_RASA_ENDPOINT) {
9
13
  winston.info("Rasa endpoint: " + BOT_RASA_ENDPOINT);
10
- } else {
11
- winston.info("Rasa endpoint not configured");
12
- }
14
+ // } else {
15
+ // winston.info("Rasa endpoint not configured");
16
+ // }
13
17
 
18
+ const apiUrl = process.env.API_URL || configGlobal.apiUrl;
19
+ winston.info('Rasa apiUrl: '+ apiUrl);
14
20
 
15
21
  class Listener {
16
22
 
17
- listen() {
23
+ listen(config) {
18
24
 
19
- winston.debug('rasa Listener listen');
25
+ winston.info('Rasa Listener listen');
26
+ winston.debug("config databaseUri: " + config.databaseUri);
27
+
20
28
 
21
29
  var that = this;
22
30
 
31
+
32
+ rasa.startRasa(
33
+ {
34
+ KVBASE_COLLECTION : process.env.KVBASE_COLLECTION,
35
+ MONGODB_URI: config.databaseUri,
36
+ API_ENDPOINT: apiUrl,
37
+ log: true
38
+ }, () => {
39
+ winston.info("RASA proxy server successfully started.");
40
+ });
41
+
42
+
43
+
23
44
  botEvent.on('faqbot.create', function(bot) {
24
45
  if (BOT_RASA_ENDPOINT) {
25
46
 
@@ -50,8 +50,8 @@ scheduleUnresponsiveRequests() {
50
50
  //https://crontab.guru/examples.html
51
51
  var s= schedule.scheduleJob(this.cronExp, function(fireDate){ //TODO aggiungi un bias random
52
52
 
53
- let timeInMs = Math.random() * (1000); // avoid cluster concurrent jobs in multiple nodes between 0 and 1sec
54
- winston.info('timeInMs => '+ timeInMs);
53
+ let timeInMs = Math.random() * (1000); // avoid cluster concurrent jobs in multiple nodes delay between 0 and 1sec
54
+ winston.debug('timeInMs => '+ timeInMs);
55
55
 
56
56
  setTimeout(function () {
57
57
  winston.debug('CloseBotUnresponsiveRequestTask scheduleUnresponsiveRequests job was supposed to run at ' + fireDate + ', but actually ran at ' + new Date());
package/routes/request.js CHANGED
@@ -840,7 +840,7 @@ router.get('/', function (req, res, next) {
840
840
  var projection = undefined;
841
841
 
842
842
  if (req.query.full_text) {
843
- winston.info('fulltext projection');
843
+ winston.debug('fulltext projection');
844
844
 
845
845
  projection = {score: { $meta: "textScore" } };
846
846
  }
@@ -873,7 +873,7 @@ router.get('/', function (req, res, next) {
873
873
  // }
874
874
 
875
875
  if (req.query.full_text) {
876
- winston.info('fulltext sort');
876
+ winston.debug('fulltext sort');
877
877
  q1.sort( { score: { $meta: "textScore" } } ) //https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score
878
878
  } else {
879
879
  q1.sort(sortQuery);
@@ -1026,6 +1026,7 @@ router.get('/csv', function (req, res, next) {
1026
1026
 
1027
1027
 
1028
1028
 
1029
+
1029
1030
  winston.debug('REQUEST ROUTE - REQUEST FIND ', query)
1030
1031
  return Request.find(query, '-transcript -status -__v').
1031
1032
  skip(skip).limit(limit).
@@ -10,7 +10,6 @@ var BotFromParticipant = require("../utils/botFromParticipant");
10
10
  var cacheUtil = require('../utils/cacheUtil');
11
11
  var eventService = require('../pubmodules/events/eventService');
12
12
  var mongoose = require('mongoose');
13
- const { TiledeskChatbotUtil } = require('@tiledesk/tiledesk-chatbot-util');
14
13
  const ActionsConstants = require('../models/actionsConstants');
15
14
  var httpUtil = require('../utils/httpUtil');
16
15
 
@@ -138,7 +137,7 @@ class FaqBotHandler {
138
137
 
139
138
 
140
139
 
141
-
140
+ // EXACT MATCH
142
141
  Faq.find(query)
143
142
  .lean().
144
143
  exec(async (err, faqs) => {
@@ -301,6 +300,7 @@ class FaqBotHandler {
301
300
  }
302
301
 
303
302
 
303
+
304
304
  Faq.find(query, mongoproject)
305
305
  .sort(sort)
306
306
  .lean().
@@ -4,7 +4,6 @@
4
4
 
5
5
  const Faq = require('../models/faq');
6
6
  const Faq_kb = require('../models/faq_kb');
7
- const MessageConstants = require('../models/messageConstants');
8
7
  var winston = require('../config/winston');
9
8
 
10
9
  var jwt = require('jsonwebtoken');
@@ -53,6 +53,7 @@ class ModulesManager {
53
53
  this.visitorCounterRoute = undefined;
54
54
  this.visitorCounterMiddleware = undefined;
55
55
  this.widgetsRoute = undefined;
56
+ this.enterprise = undefined;
56
57
  }
57
58
 
58
59
  injectBefore(app) {
@@ -173,6 +174,20 @@ class ModulesManager {
173
174
  winston.debug("ModulesManager init");
174
175
 
175
176
 
177
+ try {
178
+ this.enterprise = require('@tiledesk-ent/tiledesk-server-enterprise');
179
+ winston.debug("this.enterprise:"+ this.enterprise);
180
+ winston.info("ModulesManager enterprise initialized");
181
+ } catch(err) {
182
+ if (err.code == 'MODULE_NOT_FOUND') {
183
+ winston.info("ModulesManager init enterprise module not found");
184
+ }else {
185
+ winston.error("ModulesManager error initializing init enterprise module", err);
186
+ }
187
+ }
188
+
189
+
190
+
176
191
  try {
177
192
  this.trigger = require('@tiledesk-ent/tiledesk-server-triggers').start;
178
193
  winston.debug("this.trigger:"+ this.trigger);