@tiledesk/tiledesk-server 2.3.35 → 2.3.37

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,23 @@
1
+ name: Docker Image Community latest CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ push_to_registry:
11
+ name: Push Docker image to Docker Hub
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ name: Check out the repo
17
+ - uses: docker/build-push-action@v1
18
+ with:
19
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
20
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
21
+ repository: tiledesk/tiledesk-server-worker
22
+ dockerfile: Dockerfile-jobs
23
+ tags: latest
@@ -0,0 +1,22 @@
1
+ name: Publish Docker Community image tags
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - '**' # Push events to every tag including hierarchical tags like
7
+ jobs:
8
+
9
+ push_to_registry:
10
+ name: Push Docker image to Docker Hub
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Check out the repo
14
+ uses: actions/checkout@v2
15
+ - name: Push to Docker Hub
16
+ uses: docker/build-push-action@v1
17
+ with:
18
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
19
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
20
+ dockerfile: Dockerfile-jobs
21
+ repository: tiledesk/tiledesk-server-worker
22
+ tag_with_ref: true
package/CHANGELOG.md CHANGED
@@ -1,10 +1,19 @@
1
1
 
2
- 💥 TILEDESK SERVER v2.3.32 💥
2
+ 💥 TILEDESK SERVER v2.3.35 💥
3
3
  🚀 TAGGED AND PUBLISHED ON NPM 🚀
4
4
  🚀 IN PRODUCTION 🚀
5
- (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.32)
5
+ (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.35)
6
6
 
7
- # 2.3.33
7
+ # Untagged
8
+ - Created a job worker for geo db, activities and email notification
9
+
10
+ # 2.3.36
11
+ - BugFix email secure with false value. https://tiledesk.discourse.group/t/error-sending-email/180
12
+
13
+ # 2.3.35
14
+ - Added user util endpoint for contact lookup from chat21
15
+
16
+ # 2.3.34
8
17
  - aqmp depenency fix
9
18
 
10
19
  # 2.3.32
@@ -0,0 +1,31 @@
1
+ FROM node:12
2
+
3
+ RUN apt-get update
4
+
5
+ # Create app directory
6
+ WORKDIR /usr/src/app
7
+
8
+ ARG NPM_TOKEN
9
+
10
+ RUN if [ "$NPM_TOKEN" ]; \
11
+ then RUN COPY .npmrc_ .npmrc \
12
+ else export SOMEVAR=world; \
13
+ fi
14
+
15
+
16
+ # Install app dependencies
17
+ # A wildcard is used to ensure both package.json AND package-lock.json are copied
18
+ # where available (npm@5+)
19
+ COPY package*.json ./
20
+
21
+ RUN npm install --production
22
+
23
+ RUN rm -f .npmrc
24
+
25
+ # Bundle app source
26
+ COPY . .
27
+
28
+ EXPOSE 3000
29
+
30
+ CMD [ "node", "jobs.js" ]
31
+
package/app.js CHANGED
@@ -144,8 +144,18 @@ botSubscriptionNotifier.start();
144
144
 
145
145
 
146
146
  var geoService = require('./services/geoService');
147
- geoService.listen();
147
+ // geoService.listen();
148
148
 
149
+ let JobsManager = require('./jobsManager');
150
+
151
+ let jobWorkerEnabled = false;
152
+ if (process.env.JOB_WORKER_ENABLED=="true" || process.env.JOB_WORKER_ENABLED == true) {
153
+ jobWorkerEnabled = true;
154
+ }
155
+ winston.info("JobsManager jobWorkerEnabled: "+ jobWorkerEnabled);
156
+
157
+ let jobsManager = new JobsManager(jobWorkerEnabled,geoService);
158
+ jobsManager.listen();
149
159
 
150
160
 
151
161
 
@@ -153,7 +163,7 @@ var faqBotHandler = require('./services/faqBotHandler');
153
163
  faqBotHandler.listen();
154
164
 
155
165
  var pubModulesManager = require('./pubmodules/pubModulesManager');
156
- pubModulesManager.init({express:express, mongoose:mongoose, passport:passport, databaseUri:databaseUri, routes:{}});
166
+ pubModulesManager.init({express:express, mongoose:mongoose, passport:passport, databaseUri:databaseUri, routes:{}, jobsManager:jobsManager});
157
167
 
158
168
  var channelManager = require('./channels/channelManager');
159
169
  channelManager.listen();
@@ -266,7 +266,8 @@ class Chat21Handler {
266
266
  // TODO perche nn c'è setImmedite? per performace
267
267
 
268
268
 
269
- winston.verbose("Chat21Sender on message.sending ", message);
269
+ winston.verbose("Chat21Sender on message.sending: "+ message.text);
270
+ winston.debug("Chat21Sender on message.sending ", message);
270
271
 
271
272
  if (message &&
272
273
  message.status === MessageConstants.CHAT_MESSAGE_STATUS.SENDING &&
@@ -293,7 +294,8 @@ class Chat21Handler {
293
294
 
294
295
 
295
296
 
296
- winston.verbose("Chat21Sender sending message.sending ", message);
297
+ winston.verbose("Chat21Sender sending message.sending: "+ message.text);
298
+ winston.debug("Chat21Sender sending message.sending ", message);
297
299
 
298
300
  // chat21Util.getParsedMessage().then(function(messageData) {
299
301
  // message = messageData;
@@ -344,6 +346,8 @@ class Chat21Handler {
344
346
  }
345
347
  */
346
348
 
349
+ // performance console log
350
+ // console.log("************* send message chat21: "+new Date().toISOString(), message.text );
347
351
 
348
352
  return chat21.messages.sendToGroup(message.senderFullname, message.recipient,
349
353
  recipient_fullname, message.text, message.sender, attributes, message.type, message.metadata, timestamp)
@@ -352,6 +356,10 @@ class Chat21Handler {
352
356
 
353
357
 
354
358
  // chat21.conversations.stopTyping(message.recipient,message.sender);
359
+
360
+
361
+ // performance console log
362
+ // console.log("************* senttt message chat21: "+new Date().toISOString(), message.text );
355
363
 
356
364
  chat21Event.emit('message.sent', data);
357
365
 
@@ -379,6 +387,7 @@ class Chat21Handler {
379
387
 
380
388
  chat21.auth.setAdminToken(adminToken);
381
389
 
390
+ winston.debug("Chat21Sender");
382
391
  // send: function(sender_fullname, recipient_id, recipient_fullname, text, sender_id, attributes, type, metadata){
383
392
  return chat21.messages.send(message.senderFullname, message.recipient,
384
393
  message.recipientFullname, message.text, message.sender, message.attributes, message.type, message.metadata)
@@ -584,10 +593,17 @@ class Chat21Handler {
584
593
  if (request.subject) {
585
594
  group_name = request.subject;
586
595
  }
596
+
597
+ // performance console log
598
+ // console.log("************* before request.support_group.created: "+new Date().toISOString());
587
599
 
588
600
  //TODO racecondition?
589
601
  return chat21.groups.create(group_name, members, gAttributes, groupId).then(function(data) {
590
- winston.verbose("Chat21 group created: " + JSON.stringify(data));
602
+ winston.verbose("Chat21 group created: " + JSON.stringify(data));
603
+
604
+ // performance console log
605
+ // console.log("************* after request.support_group.created: "+new Date().toISOString());
606
+
591
607
  requestEvent.emit('request.support_group.created', request);
592
608
 
593
609
  chat21Event.emit('group.create', data);
package/jobs.js ADDED
@@ -0,0 +1,80 @@
1
+
2
+ var dotenvPath = undefined;
3
+
4
+ if (process.env.DOTENV_PATH) {
5
+ dotenvPath = process.env.DOTENV_PATH;
6
+ console.log("load dotenv form DOTENV_PATH", dotenvPath);
7
+ }
8
+
9
+ if (process.env.LOAD_DOTENV_SUBFOLDER ) {
10
+ console.log("load dotenv form LOAD_DOTENV_SUBFOLDER");
11
+ dotenvPath = __dirname+'/confenv/.env';
12
+ }
13
+
14
+ require('dotenv').config({ path: dotenvPath});
15
+
16
+
17
+ var mongoose = require('mongoose');
18
+
19
+ let winston = require('./config/winston');
20
+ let JobsManager = require('./JobsManager');
21
+
22
+
23
+ let geoService = require('./services/geoService');
24
+ var config = require('./config/database');
25
+
26
+
27
+ //override JOB_WORKER_ENABLED to false when you start jobs.js
28
+ process.env.JOB_WORKER_ENABLED=false
29
+
30
+ var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI || config.database;
31
+ var autoIndex = true;
32
+
33
+ if (!databaseUri) { //TODO??
34
+ winston.warn('DATABASE_URI not specified, falling back to localhost.');
35
+ }
36
+
37
+ var connection = mongoose.connect(databaseUri, { "useNewUrlParser": true, "autoIndex": autoIndex }, function(err) {
38
+ if (err) {
39
+ winston.error('Failed to connect to MongoDB on ' + databaseUri + " ", err);
40
+ process.exit(1);
41
+ }
42
+ });
43
+
44
+ // winston.info("mongoose.connection",mongoose.connection);
45
+ // module.exports = jobsManager;
46
+
47
+
48
+
49
+ async function main()
50
+ {
51
+
52
+ require('./pubmodules/queue');
53
+ // require('@tiledesk-ent/tiledesk-server-queue');
54
+
55
+ let jobsManager = new JobsManager(undefined, geoService);
56
+
57
+ jobsManager.listen();
58
+
59
+
60
+ let emailNotification = require('./pubmodules/emailNotification');
61
+ jobsManager.listenEmailNotification(emailNotification);
62
+
63
+
64
+ let activityArchiver = require('./pubmodules/activities').activityArchiver;
65
+ jobsManager.listenActivityArchiver(activityArchiver);
66
+
67
+ winston.info("Jobs started");
68
+
69
+ await new Promise(function () {});
70
+ console.log('This text will never be printed');
71
+ }
72
+
73
+ function panic(error)
74
+ {
75
+ console.error(error);
76
+ process.exit(1);
77
+ }
78
+
79
+ // https://stackoverflow.com/a/46916601/1478566
80
+ main().catch(panic).finally(clearInterval.bind(null, setInterval(a=>a, 1E9)));
package/jobsManager.js ADDED
@@ -0,0 +1,47 @@
1
+
2
+ var winston = require('./config/winston');
3
+
4
+ class JobsManager {
5
+ constructor(jobWorkerEnabled, geoService) {
6
+ this.geoService = geoService;
7
+ this.emailNotificatio = undefined;
8
+ this.activityArchiver = undefined;
9
+
10
+ this.jobWorkerEnabled = jobWorkerEnabled;
11
+ // this.jobWorkerEnabled = false;
12
+ // if (process.env.JOB_WORKER_ENABLED=="true" || process.env.JOB_WORKER_ENABLED == true) {
13
+ // this.jobWorkerEnabled = true;
14
+ // }
15
+ // winston.info("JobsManager jobWorkerEnabled: "+ this.jobWorkerEnabled);
16
+ }
17
+
18
+
19
+ listen() {
20
+ winston.info("JobsManager listener started");
21
+ if ( this.jobWorkerEnabled == true) {
22
+ return winston.info("JobsManager jobWorkerEnabled is enabled. Skipping listeners");
23
+ }
24
+ this.geoService.listen();
25
+ }
26
+
27
+ listenEmailNotification(emailNotification) {
28
+ winston.info("JobsManager listenEmailNotification started");
29
+ if ( this.jobWorkerEnabled == true) {
30
+ return winston.info("JobsManager jobWorkerEnabled is enabled. Skipping listener for Email Notification");
31
+ }
32
+ this.emailNotification = emailNotification;
33
+ this.emailNotification.requestNotification.listen();
34
+ }
35
+
36
+ listenActivityArchiver(activityArchiver) {
37
+ winston.info("JobsManager listenActivityArchiver started");
38
+ if ( this.jobWorkerEnabled == true) {
39
+ return winston.info("JobsManager jobWorkerEnabled is enabled. Skipping listener for Activity Archiver");
40
+ }
41
+ this.activityArchiver = activityArchiver;
42
+ this.activityArchiver.listen();
43
+ }
44
+ }
45
+
46
+
47
+ module.exports = JobsManager;
package/models/faq.js CHANGED
@@ -29,7 +29,7 @@ var FaqSchema = new Schema({
29
29
  },
30
30
  question: {
31
31
  type: String,
32
- required: true
32
+ required: false
33
33
  },
34
34
 
35
35
  webhook_enabled: { //usa questo
@@ -83,6 +83,10 @@ var FaqSchema = new Schema({
83
83
  createdBy: {
84
84
  type: String,
85
85
  required: true
86
+ },
87
+ form: {
88
+ type: Object,
89
+ required: false
86
90
  }
87
91
  },{
88
92
  timestamps: true,
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.3.35",
4
+ "version": "2.3.37",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",