@tiledesk/tiledesk-server 2.3.36 → 2.3.38

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.
@@ -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
@@ -4,6 +4,12 @@
4
4
  🚀 IN PRODUCTION 🚀
5
5
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.35)
6
6
 
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
+
7
13
  # 2.3.35
8
14
  - Added user util endpoint for contact lookup from chat21
9
15
 
@@ -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.36",
4
+ "version": "2.3.38",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",