@tiledesk/tiledesk-server 2.2.36 → 2.2.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md 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);