@tiledesk/tiledesk-server 2.14.1 → 2.14.2

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 CHANGED
@@ -5,6 +5,9 @@
5
5
  🚀 IN PRODUCTION 🚀
6
6
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
7
7
 
8
+ # 2.14.2
9
+ - Updated updateRequestSnapshotQueued.js to update the snapshot only
10
+
8
11
  # 2.14.1
9
12
  - Fixed missing snapshot parameter in event request
10
13
  - Updated twilio-connector to 0.1.28
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.14.1",
4
+ "version": "2.14.2",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -80,7 +80,10 @@ devi mandare un messaggio welcome tu altrimenti il bot inserito successivamente
80
80
  //apply only if the status is temp and no bot is available. with agent you must reroute to assign temp request to an agent
81
81
  winston.debug("rerouting");
82
82
  // reroute(request_id, id_project, nobot)
83
- requestService.reroute(message.request.request_id, message.request.id_project, false ).catch((err) => {
83
+ let t1 = Date.now();
84
+ requestService.reroute(message.request.request_id, message.request.id_project, false ).then(function() {
85
+ console.log("[Performance] (ConciergeBot) reroute time: " + (Date.now() - t1));
86
+ }).catch((err) => {
84
87
  winston.error("ConciergeBot error reroute: " + err);
85
88
  });
86
89
  }
@@ -1164,8 +1164,9 @@ class RulesTrigger {
1164
1164
  lead: createdLead, requester: puser
1165
1165
  };
1166
1166
 
1167
+ let t1 = Date.now();
1167
1168
  return requestService.create(new_request).then(function (savedRequest) {
1168
-
1169
+ console.log("[Performance] (rulesTrigger) requestService.create time: " + (Date.now() - t1));
1169
1170
  // performance console log
1170
1171
  // console.log("************* request created trigger: "+new Date().toISOString());
1171
1172
 
@@ -1176,8 +1177,11 @@ class RulesTrigger {
1176
1177
  var senderFullname = fullname || 'Guest'; // guest_here
1177
1178
 
1178
1179
  // create(sender, senderFullname, recipient, text, id_project, createdBy, status, attributes, type, metadata, language) {
1179
- return messageService.create( id_user, senderFullname , savedRequest.request_id, text,
1180
- id_project, id_user, MessageConstants.CHAT_MESSAGE_STATUS.SENDING, attributes, type, eventTrigger.event.metadata, language);
1180
+ let t2 = Date.now();
1181
+ return messageService.create( id_user, senderFullname , savedRequest.request_id, text, id_project, id_user, MessageConstants.CHAT_MESSAGE_STATUS.SENDING, attributes, type, eventTrigger.event.metadata, language).then(function(savedMessage) {
1182
+ console.log("[Performance] (rulesTrigger) messageService.create time: " + (Date.now() - t2));
1183
+ return savedMessage;
1184
+ });
1181
1185
  }).catch(function (err) {
1182
1186
  winston.error("Error trigger requestService.create", err);
1183
1187
  });
@@ -221,6 +221,8 @@ class RequestService {
221
221
  request.assigned_at = assigned_at;
222
222
  request.waiting_time = undefined //reset waiting_time on reroute
223
223
 
224
+ console.log("request.snapshot for ", request.request_id ," exists: ", request.snapshot ? "yes" : "no\n", new Date());
225
+ console.log("request.snapshot.agents for ", request.request_id ," exists: ", request.snapshot?.agents ? "yes" : "no\n", new Date());
224
226
  if (!request.snapshot) { //if used other methods than .create
225
227
  request.snapshot = {}
226
228
  }
@@ -606,8 +608,6 @@ class RequestService {
606
608
  if (dep_id) {
607
609
  snapshot.department = result.department;
608
610
  }
609
- snapshot.agents = agents;
610
-
611
611
  if (request.requester) {
612
612
  snapshot.requester = request.requester;
613
613
  }
@@ -644,7 +644,8 @@ class RequestService {
644
644
  priority,
645
645
  auto_close,
646
646
  followers,
647
- createdAt
647
+ createdAt,
648
+ snapshot
648
649
  })
649
650
 
650
651
  if (isTestConversation) {
@@ -669,6 +670,8 @@ class RequestService {
669
670
  }
670
671
  await q.exec();
671
672
 
673
+ snapshot.agents = agents;
674
+ snapshot.availableAgentsCount = this.getAvailableAgentsCount(agents);
672
675
  requestEvent.emit("request.create.simple", savedRequest, snapshot);
673
676
 
674
677
  if (isStandardConversation) {
@@ -16,7 +16,7 @@ class UpdateRequestSnapshotQueued {
16
16
  }
17
17
 
18
18
  updateRequestSnapshot() {
19
- var snapshotUpdateKey = 'request.snapshot.update';
19
+ let snapshotUpdateKey = 'request.snapshot.update';
20
20
  if (requestEvent.queueEnabled) {
21
21
  snapshotUpdateKey = 'request.snapshot.update.queue';
22
22
  }
@@ -25,35 +25,40 @@ class UpdateRequestSnapshotQueued {
25
25
  requestEvent.on(snapshotUpdateKey, function (data) {
26
26
  setImmediate(() => {
27
27
  winston.debug("updateRequestSnapshot on request.snapshot.update ", data);
28
+ console.log("updateRequestSnapshot on request.snapshot.update ", data);
28
29
 
29
- var request = data.request;
30
- var snapshot = data.snapshot;
30
+ const request = data.request;
31
+ const snapshot = data.snapshot;
32
+ const agentsArray = snapshot?.agents || [];
33
+ console.log("(queue) updateRequestSnapshot snapshot agents length: ", agentsArray.length);
31
34
 
32
35
  if (!request || !request.request_id || !request.id_project) {
33
36
  winston.error("updateRequestSnapshot: Invalid request data", data);
34
37
  return;
35
38
  }
36
39
 
37
- if (!snapshot || Object.keys(snapshot).length === 0) {
38
- winston.debug("updateRequestSnapshot: Empty snapshot, skipping update");
40
+ // If there is no agents array in snapshot or it's not actually an array, skip the update
41
+ if (!Array.isArray(agentsArray)) {
42
+ winston.error("updateRequestSnapshot: snapshot.agents is not an array.", snapshot);
39
43
  return;
40
44
  }
41
45
 
42
- var query = { request_id: request.request_id, id_project: request.id_project };
46
+ const query = { request_id: request.request_id, id_project: request.id_project };
43
47
  winston.debug("updateRequestSnapshot query ", query);
44
48
 
49
+ // Update ONLY the snapshot.agents field, presupposing 'snapshot' document already exists
45
50
  Request.findOneAndUpdate(
46
51
  query,
47
- { "$set": { "snapshot": snapshot } },
52
+ { "$set": { "snapshot.agents": agentsArray } },
48
53
  { new: true },
49
54
  function (err, updatedRequest) {
50
55
  if (err) {
51
- winston.error("Error updating request snapshot updateRequestSnapshot", err);
56
+ winston.error("Error updating request snapshot.agents in updateRequestSnapshot", err);
52
57
  return;
53
58
  }
54
59
  if (updatedRequest) {
55
- winston.debug("updateRequestSnapshot updated request " + updatedRequest.request_id);
56
- requestEvent.emit('request.update.snapshot', { request: updatedRequest, snapshot: snapshot });
60
+ console.log("updateRequestSnapshot updated snapshot.agents for request " + updatedRequest.request_id, new Date());
61
+ winston.debug("updateRequestSnapshot updated snapshot.agents for request " + updatedRequest.request_id);
57
62
  } else {
58
63
  winston.warn("updateRequestSnapshot: Request not found for " + request.request_id);
59
64
  }