@tiledesk/tiledesk-server 2.2.37 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](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",
|