@tiledesk/tiledesk-server 2.2.37 → 2.3.1
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 +8 -1
- package/LICENSE +14 -657
- package/README.md +21 -18
- package/app.js +27 -3
- package/config/labels/widget.json +320 -0
- package/event/subscriptionEvent.js +11 -0
- package/models/subscriptionEvent.js +11 -0
- package/models/subscriptionLog.js +34 -0
- package/models/tagLibrary.js +42 -0
- package/package.json +5 -11
- package/pubmodules/activities/activityArchiver.js +295 -0
- package/pubmodules/activities/index.js +3 -0
- package/pubmodules/activities/models/activity.js +88 -0
- package/pubmodules/activities/routes/activity.js +710 -0
- package/pubmodules/activities/test/activityRoute.js +85 -0
- package/pubmodules/analytics/analytics.js +1719 -0
- package/pubmodules/analytics/index.js +3 -0
- package/pubmodules/canned/cannedResponse.js +51 -0
- package/pubmodules/canned/cannedResponseRoute.js +157 -0
- package/pubmodules/canned/index.js +3 -0
- package/pubmodules/pubModulesManager.js +115 -7
- package/pubmodules/rasa/index.js +8 -1
- package/pubmodules/rasa/listener.js +28 -7
- package/pubmodules/scheduler/tasks/closeBotUnresponsiveRequestTask.js +2 -2
- package/pubmodules/trigger/default.js +271 -0
- package/pubmodules/trigger/event/actionEventEmitter.js +10 -0
- package/pubmodules/trigger/event/flowEventEmitter.js +10 -0
- package/pubmodules/trigger/event/triggerEventEmitter.js +10 -0
- package/pubmodules/trigger/index.js +3 -0
- package/pubmodules/trigger/models/trigger.js +149 -0
- package/pubmodules/trigger/rulesTrigger.js +1180 -0
- package/pubmodules/trigger/start.js +114 -0
- package/pubmodules/trigger/triggerRoute.js +150 -0
- package/routes/department.js +51 -0
- package/routes/group.js +140 -0
- package/routes/project.js +52 -0
- package/routes/request.js +3 -2
- package/routes/subscription.js +140 -0
- package/routes/tag.js +138 -0
- package/services/faqBotHandler.js +2 -2
- package/services/faqBotSupport.js +0 -1
- package/services/faqService.js +1 -1
- package/services/modulesManager.js +16 -182
- package/services/subscriptionNotifier.js +485 -0
- package/template/email/assignedEmailMessage.html +1 -1
- package/template/email/assignedRequest.html +1 -1
- package/template/email/newMessage.html +1 -1
- package/template/email/passwordChanged.html +1 -1
- package/template/email/pooledEmailMessage.html +1 -1
- package/template/email/pooledRequest.html +1 -1
- package/template/email/resetPassword.html +2 -2
- package/template/email/ticket.html +1 -1
- package/views/messages.jade +1 -1
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
|
@@ -79,6 +80,8 @@ Deploy with button:
|
|
79
80
|
|
80
81
|
[](https://heroku.com/deploy?template=https://github.com/Tiledesk/tiledesk-server)
|
81
82
|
|
83
|
+
# Community? Questions? Support ?
|
84
|
+
If you need help or just want to hang out, come, say hi on our [Discord](https://discord.gg/WQPfqShJ) server.
|
82
85
|
|
83
86
|
# REST API
|
84
87
|
|
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) {
|
@@ -75,6 +87,9 @@ var lead = require('./routes/lead');
|
|
75
87
|
var message = require('./routes/message');
|
76
88
|
var messagesRootRoute = require('./routes/messagesRoot');
|
77
89
|
var department = require('./routes/department');
|
90
|
+
var group = require('./routes/group');
|
91
|
+
var resthook = require('./routes/subscription');
|
92
|
+
var tag = require('./routes/tag');
|
78
93
|
var faq = require('./routes/faq');
|
79
94
|
var faq_kb = require('./routes/faq_kb');
|
80
95
|
var project = require('./routes/project');
|
@@ -112,6 +127,9 @@ var RouterLogger = require('./models/routerLogger');
|
|
112
127
|
|
113
128
|
require('./services/mongoose-cache-fn')(mongoose);
|
114
129
|
|
130
|
+
var subscriptionNotifier = require('./services/subscriptionNotifier');
|
131
|
+
subscriptionNotifier.start();
|
132
|
+
|
115
133
|
var botSubscriptionNotifier = require('./services/BotSubscriptionNotifier');
|
116
134
|
botSubscriptionNotifier.start();
|
117
135
|
|
@@ -123,8 +141,7 @@ var faqBotHandler = require('./services/faqBotHandler');
|
|
123
141
|
faqBotHandler.listen();
|
124
142
|
|
125
143
|
var pubModulesManager = require('./pubmodules/pubModulesManager');
|
126
|
-
|
127
|
-
|
144
|
+
pubModulesManager.init({express:express, mongoose:mongoose, passport:passport, databaseUri:databaseUri, routes:{}});
|
128
145
|
|
129
146
|
var channelManager = require('./channels/channelManager');
|
130
147
|
channelManager.listen();
|
@@ -133,6 +150,7 @@ const ipfilter = require('express-ipfilter').IpFilter
|
|
133
150
|
// const IpDeniedError = require('express-ipfilter').IpDeniedError;
|
134
151
|
|
135
152
|
|
153
|
+
|
136
154
|
var modulesManager = undefined;
|
137
155
|
try {
|
138
156
|
modulesManager = require('./services/modulesManager');
|
@@ -429,8 +447,14 @@ app.use('/:projectid/departments', department);
|
|
429
447
|
|
430
448
|
|
431
449
|
|
450
|
+
|
451
|
+
|
432
452
|
channelManager.useUnderProjects(app);
|
433
453
|
|
454
|
+
app.use('/:projectid/groups', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('admin')], group);
|
455
|
+
app.use('/:projectid/tags', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], tag);
|
456
|
+
app.use('/:projectid/subscriptions', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('admin')], resthook);
|
457
|
+
|
434
458
|
//deprecated
|
435
459
|
app.use('/:projectid/faq', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], faq);
|
436
460
|
app.use('/:projectid/intents', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], faq);
|
@@ -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
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
var mongoose = require('mongoose');
|
2
|
+
var Schema = mongoose.Schema;
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
var SubscriptionLogSchema = new Schema({
|
7
|
+
event: {
|
8
|
+
type: String,
|
9
|
+
required: true
|
10
|
+
},
|
11
|
+
target: {
|
12
|
+
type: String,
|
13
|
+
required: true
|
14
|
+
},
|
15
|
+
response: {
|
16
|
+
type: String,
|
17
|
+
},
|
18
|
+
body: {
|
19
|
+
type: String,
|
20
|
+
},
|
21
|
+
err: {
|
22
|
+
type: String,
|
23
|
+
},
|
24
|
+
id_project: {
|
25
|
+
type: String,
|
26
|
+
required: true,
|
27
|
+
index:true
|
28
|
+
}
|
29
|
+
}, {
|
30
|
+
timestamps: true
|
31
|
+
}
|
32
|
+
);
|
33
|
+
|
34
|
+
module.exports = mongoose.model('subscriptionLog', SubscriptionLogSchema);
|
@@ -0,0 +1,42 @@
|
|
1
|
+
var mongoose = require('mongoose');
|
2
|
+
var Schema = mongoose.Schema;
|
3
|
+
var TagSchema = require('./tag');
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
var TagLibrarySchema = new Schema({
|
8
|
+
...TagSchema.obj,
|
9
|
+
// tag: {
|
10
|
+
// type: String,
|
11
|
+
// required: true,
|
12
|
+
// index: true
|
13
|
+
// },
|
14
|
+
// color: {
|
15
|
+
// type: String,
|
16
|
+
// required: false,
|
17
|
+
// index: false
|
18
|
+
// },
|
19
|
+
// attributes: {
|
20
|
+
// type: Object,
|
21
|
+
// },
|
22
|
+
id_project: {
|
23
|
+
type: String,
|
24
|
+
required: true,
|
25
|
+
index: true
|
26
|
+
},
|
27
|
+
createdBy: {
|
28
|
+
type: String,
|
29
|
+
required: true
|
30
|
+
}
|
31
|
+
},{
|
32
|
+
timestamps: true
|
33
|
+
}
|
34
|
+
);
|
35
|
+
|
36
|
+
TagLibrarySchema.index({ id_project: 1, tag: 1 }, { unique: true });
|
37
|
+
|
38
|
+
|
39
|
+
var Tag = mongoose.model('tag', TagLibrarySchema);
|
40
|
+
|
41
|
+
|
42
|
+
module.exports = Tag;
|
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.
|
4
|
+
"version": "2.3.1",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -29,27 +29,21 @@
|
|
29
29
|
"tiledesk-server": "./bin/www"
|
30
30
|
},
|
31
31
|
"optionalDependencies": {
|
32
|
-
"@tiledesk-ent/tiledesk-server-activities": "^1.1.18",
|
33
|
-
"@tiledesk-ent/tiledesk-server-analytics": "^1.1.12",
|
34
32
|
"@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",
|
37
33
|
"@tiledesk-ent/tiledesk-server-dialogflow": "^1.1.6",
|
38
|
-
"@tiledesk-ent/tiledesk-server-groups": "^1.1.2",
|
39
34
|
"@tiledesk-ent/tiledesk-server-jwthistory": "^1.1.9",
|
40
|
-
"@tiledesk-ent/tiledesk-server-mt": "^1.1.7",
|
41
35
|
"@tiledesk-ent/tiledesk-server-payments": "^1.1.6",
|
42
36
|
"@tiledesk-ent/tiledesk-server-queue": "^1.1.11",
|
43
37
|
"@tiledesk-ent/tiledesk-server-request-history": "^1.1.5",
|
44
|
-
"@tiledesk-ent/tiledesk-server-resthook": "^1.1.53",
|
45
38
|
"@tiledesk-ent/tiledesk-server-routing-queue": "^1.1.11",
|
46
|
-
"@tiledesk-ent/tiledesk-server-
|
47
|
-
"@tiledesk-ent/tiledesk-server-
|
48
|
-
"@tiledesk-ent/tiledesk-server-visitorcounter": "^1.1.1"
|
39
|
+
"@tiledesk-ent/tiledesk-server-visitorcounter": "^1.1.1",
|
40
|
+
"@tiledesk-ent/tiledesk-server-enterprise": "^1.0.0"
|
49
41
|
},
|
50
42
|
"dependencies": {
|
51
43
|
"@tiledesk/tiledesk-chat21-app": "^1.1.4",
|
52
44
|
"@tiledesk/tiledesk-chatbot-util": "^0.8.33",
|
45
|
+
"@tiledesk/tiledesk-rasa-connector": "^1.0.5",
|
46
|
+
"@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
|
53
47
|
"app-root-path": "^3.0.0",
|
54
48
|
"bcrypt-nodejs": "0.0.3",
|
55
49
|
"body-parser": "^1.20.0",
|