@tiledesk/tiledesk-server 2.2.38 → 2.2.39
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +19 -18
- package/app.js +15 -3
- package/config/labels/widget.json +320 -0
- package/package.json +2 -1
- package/pubmodules/pubModulesManager.js +11 -2
- package/pubmodules/rasa/index.js +8 -1
- package/pubmodules/rasa/listener.js +28 -7
- package/pubmodules/scheduler/tasks/closeBotUnresponsiveRequestTask.js +2 -2
- package/routes/request.js +3 -2
- package/services/faqBotHandler.js +2 -2
- package/services/faqBotSupport.js +0 -1
- package/services/modulesManager.js +15 -0
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
|
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
|
-
|
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
|
-
|
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');
|
@@ -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.
|
4
|
+
"version": "2.2.39",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -51,6 +51,7 @@
|
|
51
51
|
"dependencies": {
|
52
52
|
"@tiledesk/tiledesk-chat21-app": "^1.1.4",
|
53
53
|
"@tiledesk/tiledesk-chatbot-util": "^0.8.33",
|
54
|
+
"@tiledesk/tiledesk-rasa-connector": "^1.0.5",
|
54
55
|
"app-root-path": "^3.0.0",
|
55
56
|
"bcrypt-nodejs": "0.0.3",
|
56
57
|
"body-parser": "^1.20.0",
|
@@ -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') {
|
package/pubmodules/rasa/index.js
CHANGED
@@ -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
|
-
|
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
|
-
|
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.
|
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.
|
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.
|
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.
|
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().
|
@@ -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);
|