@tiledesk/tiledesk-server 2.2.38 → 2.3.1-8.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +121 -0
- package/LICENSE +14 -657
- package/README.md +36 -21
- package/app.js +35 -62
- package/channels/chat21/chat21Handler.js +18 -3
- package/channels/chat21/chat21WebHook.js +31 -15
- package/channels/chat21/package-lock.json +663 -706
- package/channels/chat21/package.json +2 -2
- package/config/labels/widget.json +320 -0
- package/deploy.sh +2 -0
- package/event/botEvent.js +1 -1
- package/event/subscriptionEvent.js +11 -0
- package/fonts/Roboto-Italic.ttf +0 -0
- package/fonts/Roboto-Medium.ttf +0 -0
- package/fonts/Roboto-MediumItalic.ttf +0 -0
- package/fonts/Roboto-Regular.ttf +0 -0
- package/middleware/ipFilter.js +220 -0
- package/middleware/passport.js +11 -2
- package/models/lead.js +2 -0
- package/models/project.js +10 -0
- package/models/project_user.js +4 -0
- package/models/request.js +50 -12
- package/models/subscriptionLog.js +34 -0
- package/models/tagLibrary.js +42 -0
- package/package.json +6 -11
- package/pubmodules/activities/activityArchiver.js +314 -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 +55 -0
- package/pubmodules/canned/cannedResponseRoute.js +163 -0
- package/pubmodules/canned/index.js +3 -0
- package/pubmodules/emailNotification/requestNotification.js +215 -28
- package/pubmodules/events/eventRoute.js +37 -7
- package/pubmodules/messageActions/messageActionsInterceptor.js +4 -2
- package/pubmodules/pubModulesManager.js +140 -7
- package/pubmodules/rasa/index.js +8 -1
- package/pubmodules/rasa/listener.js +30 -9
- package/pubmodules/rules/conciergeBot.js +4 -4
- package/pubmodules/scheduler/tasks/closeAgentUnresponsiveRequestTask.js +3 -1
- package/pubmodules/scheduler/tasks/closeBotUnresponsiveRequestTask.js +5 -3
- package/pubmodules/tilebot/index.js +11 -0
- package/pubmodules/tilebot/listener.js +69 -0
- 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 +1181 -0
- package/pubmodules/trigger/start.js +118 -0
- package/pubmodules/trigger/triggerRoute.js +150 -0
- package/routes/auth.js +7 -2
- package/routes/department.js +51 -0
- package/routes/faq.js +7 -0
- package/routes/faq_kb.js +1 -1
- package/routes/group.js +140 -0
- package/routes/lead.js +24 -1
- package/routes/message.js +6 -3
- package/routes/project.js +118 -0
- package/routes/project_user.js +9 -0
- package/routes/public-request.js +280 -2
- package/routes/request.js +124 -17
- package/routes/subscription.js +140 -0
- package/routes/tag.js +138 -0
- package/routes/user-request.js +3 -2
- package/routes/users.js +1 -1
- package/routes/widget.js +80 -3
- package/routes/widgetLoader.js +31 -0
- package/services/banUserNotifier.js +86 -0
- package/services/emailService.js +189 -11
- package/services/faqBotHandler.js +2 -2
- package/services/faqBotSupport.js +0 -1
- package/services/faqService.js +2 -2
- package/services/geoService.js +30 -4
- package/services/leadService.js +2 -0
- package/services/modulesManager.js +16 -182
- package/services/requestService.js +364 -6
- 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/newMessageFollower.html +236 -0
- 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/test/cannedRoute.js +166 -0
- package/test/messageRoute.js +69 -0
- package/test/requestService.js +3 -1
- package/utils/orgUtil.js +3 -3
- package/views/messages.jade +2 -2
- package/websocket/webSocketServer.js +23 -5
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tiledesk/tiledesk-chat21-app",
|
3
3
|
"description": "The Tiledesk Chat21 module",
|
4
|
-
"version": "1.1.
|
4
|
+
"version": "1.1.7",
|
5
5
|
"private": false,
|
6
6
|
"author": "Andrea Leo - Frontiere21 SRL",
|
7
7
|
"license": "AGPL-3.0",
|
@@ -11,7 +11,7 @@
|
|
11
11
|
"url": "https://github.com/Tiledesk/tiledesk-server"
|
12
12
|
},
|
13
13
|
"dependencies": {
|
14
|
-
"@chat21/chat21-node-sdk": "^1.1.
|
14
|
+
"@chat21/chat21-node-sdk": "^1.1.7",
|
15
15
|
"winston": "^3.3.3",
|
16
16
|
"firebase-admin": "^9.5.0"
|
17
17
|
},
|
@@ -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/deploy.sh
CHANGED
package/event/botEvent.js
CHANGED
@@ -123,7 +123,7 @@ messageEvent.on('message.create', function(message) {
|
|
123
123
|
if (bot.type==="internal") {
|
124
124
|
botEvent.emit('bot.message.received.notify.internal', message);
|
125
125
|
|
126
|
-
}else {
|
126
|
+
}else { //external
|
127
127
|
if (bot.url) {
|
128
128
|
var botNotification = {bot: bot, message: message};
|
129
129
|
botEvent.emit('bot.message.received.notify.external', botNotification);
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,220 @@
|
|
1
|
+
const ipfilter = require('express-ipfilter').IpFilter
|
2
|
+
var winston = require('../config/winston');
|
3
|
+
var jwt = require('jsonwebtoken');
|
4
|
+
|
5
|
+
|
6
|
+
var customDetection = function (req) {
|
7
|
+
// const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
|
8
|
+
// const ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || //https://stackoverflow.com/questions/8107856/how-to-determine-a-users-ip-address-in-node
|
9
|
+
// req.socket.remoteAddress
|
10
|
+
|
11
|
+
|
12
|
+
let ip = req.socket.remoteAddress;
|
13
|
+
|
14
|
+
const xFor = req.headers['x-forwarded-for'];
|
15
|
+
if (xFor ) {
|
16
|
+
const xForArr = xFor.split(',');
|
17
|
+
if (xForArr && xForArr.length>0) {
|
18
|
+
ip = xForArr.shift();
|
19
|
+
}
|
20
|
+
}
|
21
|
+
// const ip =
|
22
|
+
// req.headers['x-forwarded-for']?.split(',').shift()
|
23
|
+
// || req.socket?.remoteAddress
|
24
|
+
|
25
|
+
winston.info("standard ip: "+ip); // ip address of the user
|
26
|
+
return ip;
|
27
|
+
}
|
28
|
+
|
29
|
+
var getToken = function (headers) {
|
30
|
+
winston.debug("getToken",headers);
|
31
|
+
if (headers && headers.authorization) {
|
32
|
+
var parted = headers.authorization.split(' ');
|
33
|
+
if (parted.length === 2) {
|
34
|
+
return parted[1];
|
35
|
+
} else {
|
36
|
+
return null;
|
37
|
+
}
|
38
|
+
} else {
|
39
|
+
return null;
|
40
|
+
}
|
41
|
+
};
|
42
|
+
|
43
|
+
|
44
|
+
class IPFilter {
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
constructor() {
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
projectIpFilter (req, res, next) {
|
60
|
+
var that = this;
|
61
|
+
// console.log("that", that)
|
62
|
+
|
63
|
+
const nextIp = function(err) {
|
64
|
+
winston.debug("projectIpFilter next",err);
|
65
|
+
|
66
|
+
if (err && err.name === "IpDeniedError") {
|
67
|
+
winston.info("IpDeniedError for projectIpFilter");
|
68
|
+
return res.status(401).json({ err: "error project ip filter" });
|
69
|
+
// next(err)
|
70
|
+
}
|
71
|
+
|
72
|
+
next();
|
73
|
+
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
if (!req.project) {
|
78
|
+
return next();
|
79
|
+
}
|
80
|
+
|
81
|
+
var projectIpFilterEnabled = req.project.ipFilterEnabled;
|
82
|
+
winston.debug("project projectIpFilterEnabled: " +projectIpFilterEnabled)
|
83
|
+
|
84
|
+
var projectIpFilter = req.project.ipFilter
|
85
|
+
winston.debug("project ipFilter: " + projectIpFilter)
|
86
|
+
|
87
|
+
if (projectIpFilterEnabled === true && projectIpFilter && projectIpFilter.length > 0) {
|
88
|
+
winston.debug("filtering project IpFilter with ", projectIpFilter );
|
89
|
+
var ip = ipfilter(projectIpFilter, { detectIp: customDetection, mode: 'allow' })
|
90
|
+
// var ip = ipfilter(projectIpFilter, { mode: 'allow' })
|
91
|
+
ip(req, res, nextIp);
|
92
|
+
} else {
|
93
|
+
next();
|
94
|
+
}
|
95
|
+
|
96
|
+
}
|
97
|
+
|
98
|
+
projectIpFilterDeny (req, res, next) {
|
99
|
+
|
100
|
+
const nextIp = function(err) {
|
101
|
+
winston.debug("projectIpFilter next",err);
|
102
|
+
|
103
|
+
if (err && err.name === "IpDeniedError") {
|
104
|
+
winston.info("IpDeniedError for projectIpFilterDeny");
|
105
|
+
return res.status(401).json({ err: "error project deny ip filter" });
|
106
|
+
// next(err)
|
107
|
+
}
|
108
|
+
|
109
|
+
next();
|
110
|
+
|
111
|
+
}
|
112
|
+
|
113
|
+
if (!req.project) {
|
114
|
+
return next();
|
115
|
+
}
|
116
|
+
|
117
|
+
var projectIpFilterDenyEnabled = req.project.ipFilterDenyEnabled;
|
118
|
+
winston.debug("project projectIpFilterDenyEnabled: " +projectIpFilterDenyEnabled)
|
119
|
+
|
120
|
+
var projectIpFilterDeny = req.project.ipFilterDeny
|
121
|
+
winston.debug("project IpFilterDeny: " + projectIpFilterDeny)
|
122
|
+
|
123
|
+
|
124
|
+
if (projectIpFilterDenyEnabled === true && projectIpFilterDeny && projectIpFilterDeny.length > 0) {
|
125
|
+
winston.debug("filtering project projectIpFilterDeny with ", projectIpFilterDeny );
|
126
|
+
var ip = ipfilter(projectIpFilterDeny, { detectIp: customDetection, mode: 'deny' })
|
127
|
+
ip(req, res, nextIp);
|
128
|
+
} else {
|
129
|
+
next();
|
130
|
+
}
|
131
|
+
|
132
|
+
}
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
projectBanUserFilter(req, res, next) {
|
137
|
+
|
138
|
+
winston.debug("projectBanUserFilter hereee*********** ")
|
139
|
+
|
140
|
+
const nextIp = function(err) {
|
141
|
+
winston.debug("projectBanUserFilter next",err);
|
142
|
+
|
143
|
+
if (err && err.name === "IpDeniedError") {
|
144
|
+
winston.info("IpDeniedError for projectBanUserFilter");
|
145
|
+
return res.status(401).json({ err: "error projectBanUserFilter" });
|
146
|
+
// next(err)
|
147
|
+
}
|
148
|
+
|
149
|
+
next();
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
if (!req.project) {
|
154
|
+
return next();
|
155
|
+
}
|
156
|
+
|
157
|
+
var bannedUsers = req.project.bannedUsers
|
158
|
+
winston.debug("project bannedUsers: " + bannedUsers)
|
159
|
+
|
160
|
+
if (bannedUsers && bannedUsers.length > 0) {
|
161
|
+
|
162
|
+
let bannedUsersArr = [];
|
163
|
+
let bannedUsersIdUserArr = [];
|
164
|
+
for (var i =0; i < bannedUsers.length; i++) {
|
165
|
+
bannedUsersArr.push(bannedUsers[i].ip);
|
166
|
+
bannedUsersIdUserArr.push(bannedUsers[i].id);
|
167
|
+
}
|
168
|
+
|
169
|
+
winston.debug("project req.preDecodedJwt: ", req.preDecodedJwt)
|
170
|
+
// winston.debug("project req.preDecodedJwt._id: "+ req.preDecodedJwt._id)
|
171
|
+
|
172
|
+
|
173
|
+
if (req.preDecodedJwt && req.preDecodedJwt._id && bannedUsersIdUserArr.indexOf(req.preDecodedJwt._id) > -1) {
|
174
|
+
winston.info("filtering project bannedUsers with id: " + req.preDecodedJwt._id)
|
175
|
+
return res.status(401).json({ err: "error projectBanUserFilter by id" });
|
176
|
+
}
|
177
|
+
|
178
|
+
|
179
|
+
// winston.debug("filtering project bannedUsers with ", bannedUsersArr );
|
180
|
+
// var ip = ipfilter(bannedUsersArr, { detectIp: customDetection, mode: 'deny' })
|
181
|
+
// ip(req, res, nextIp);
|
182
|
+
next();
|
183
|
+
} else {
|
184
|
+
next();
|
185
|
+
}
|
186
|
+
|
187
|
+
}
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
decodeJwt(req, res, next) {
|
194
|
+
|
195
|
+
let token = getToken(req.headers);
|
196
|
+
winston.debug("filtering token " + token);
|
197
|
+
|
198
|
+
if (token) {
|
199
|
+
|
200
|
+
try {
|
201
|
+
var decoded = jwt.decode(token);
|
202
|
+
winston.debug("filtering decoded ", decoded);
|
203
|
+
req.preDecodedJwt = decoded;
|
204
|
+
}catch(e) {
|
205
|
+
winston.debug("Error decoding jwt");
|
206
|
+
}
|
207
|
+
|
208
|
+
}
|
209
|
+
|
210
|
+
|
211
|
+
next();
|
212
|
+
}
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
}
|
219
|
+
var iPFilter = new IPFilter();
|
220
|
+
module.exports = iPFilter;
|
package/middleware/passport.js
CHANGED
@@ -77,15 +77,24 @@ module.exports = function(passport) {
|
|
77
77
|
// winston.info("secretOrKeyProvider: "+request.project.name );
|
78
78
|
// winston.info("secretOrKeyProvider: "+rawJwtToken );
|
79
79
|
|
80
|
-
var decoded =
|
80
|
+
var decoded = request.preDecodedJwt
|
81
81
|
winston.debug("decoded: ", decoded );
|
82
|
+
if (!decoded) { //fallback
|
83
|
+
winston.debug("load decoded after: ");
|
84
|
+
decoded = jwt.decode(rawJwtToken);
|
85
|
+
}
|
86
|
+
|
87
|
+
winston.debug("decoded after: ", decoded );
|
82
88
|
|
83
89
|
// qui arriva questo
|
84
90
|
// decoded: {"_id":"5ce3ee855c520200176c189e","updatedAt":"2019-05-31T09:50:22.949Z","createdAt":"2019-05-21T12:26:45.192Z","name":"botext","url":"https://tiledesk-v2-simple--andrealeo83.repl.co","id_project":"5ce3d1ceb25ad30017274bc5","trashed":false,"createdBy":"5ce3d1c7b25ad30017274bc2","__v":0,"external":true,"iat":1559297130,"aud":"https://tiledesk.com","iss":"https://tiledesk.com","sub":"5ce3ee855c520200176c189e@tiledesk.com/bot"}
|
85
91
|
|
86
|
-
winston.debug("decoded.aud: "+ decoded.aud );
|
87
92
|
|
88
93
|
if (decoded && decoded.aud) {
|
94
|
+
|
95
|
+
winston.debug("decoded.aud: "+ decoded.aud );
|
96
|
+
|
97
|
+
|
89
98
|
const audUrl = new URL(decoded.aud);
|
90
99
|
winston.debug("audUrl: "+ audUrl );
|
91
100
|
const path = audUrl.pathname;
|
package/models/lead.js
CHANGED
@@ -96,6 +96,8 @@ var LeadSchema = new Schema({
|
|
96
96
|
LeadSchema.index({fullname: 'text', email: 'text'},
|
97
97
|
{"name":"lead_fulltext","default_language": defaultFullTextLanguage,"language_override": "dummy"}); // schema level
|
98
98
|
|
99
|
+
// suggested by atlas
|
100
|
+
LeadSchema.index({status: 1, id_project: 1, createdAt: -1});
|
99
101
|
|
100
102
|
var lead = mongoose.model('lead', LeadSchema);
|
101
103
|
|