@tiledesk/tiledesk-server 2.14.1 → 2.14.3

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,12 @@
5
5
  🚀 IN PRODUCTION 🚀
6
6
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
7
7
 
8
+ # 2.14.3
9
+ - Fixed bug: first message not sent from default chatbot. Refactored availableAgentsCount handling in requestService to ensure accurate snapshot updates during request creation.
10
+
11
+ # 2.14.2
12
+ - Updated updateRequestSnapshotQueued.js to update the snapshot only
13
+
8
14
  # 2.14.1
9
15
  - Fixed missing snapshot parameter in event request
10
16
  - 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.3",
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,9 @@ class RequestService {
606
608
  if (dep_id) {
607
609
  snapshot.department = result.department;
608
610
  }
609
- snapshot.agents = agents;
610
-
611
+
612
+ snapshot.availableAgentsCount = this.getAvailableAgentsCount(agents);
613
+
611
614
  if (request.requester) {
612
615
  snapshot.requester = request.requester;
613
616
  }
@@ -644,7 +647,8 @@ class RequestService {
644
647
  priority,
645
648
  auto_close,
646
649
  followers,
647
- createdAt
650
+ createdAt,
651
+ snapshot
648
652
  })
649
653
 
650
654
  if (isTestConversation) {
@@ -669,6 +673,7 @@ class RequestService {
669
673
  }
670
674
  await q.exec();
671
675
 
676
+ snapshot.agents = agents;
672
677
  requestEvent.emit("request.create.simple", savedRequest, snapshot);
673
678
 
674
679
  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
  }