@tiledesk/tiledesk-server 2.9.5 → 2.9.7
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 +7 -0
- package/models/request.js +5 -0
- package/package.json +2 -2
- package/routes/request.js +1 -1
- package/services/operatingHoursService.js +6 -6
- package/services/requestService.js +4 -0
- package/test/requestRoute.js +66 -0
- package/websocket/webSocketServer.js +654 -640
    
        package/CHANGELOG.md
    CHANGED
    
    | @@ -5,6 +5,13 @@ | |
| 5 5 | 
             
            🚀        IN PRODUCTION                        🚀
         | 
| 6 6 | 
             
            (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77) 
         | 
| 7 7 |  | 
| 8 | 
            +
            # 2.9.7
         | 
| 9 | 
            +
            - Fix bug: draft conversation was shown in monitor
         | 
| 10 | 
            +
            - Update tybot-connector to 0.2.92
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            # 2.9.6
         | 
| 13 | 
            +
            - Fix bug: wrong timzone in startTime and andTime in operating hours service
         | 
| 14 | 
            +
             | 
| 8 15 | 
             
            # 2.9.5
         | 
| 9 16 | 
             
            - Added raw option in /users/availables
         | 
| 10 17 |  | 
    
        package/models/request.js
    CHANGED
    
    
    
        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.9. | 
| 4 | 
            +
              "version": "2.9.7",
         | 
| 5 5 | 
             
              "scripts": {
         | 
| 6 6 | 
             
                "start": "node ./bin/www",
         | 
| 7 7 | 
             
                "pretest": "mongodb-runner start",
         | 
| @@ -48,7 +48,7 @@ | |
| 48 48 | 
             
                "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
         | 
| 49 49 | 
             
                "@tiledesk/tiledesk-telegram-connector": "^0.1.14",
         | 
| 50 50 | 
             
                "@tiledesk/tiledesk-train-jobworker": "^0.0.11",
         | 
| 51 | 
            -
                "@tiledesk/tiledesk-tybot-connector": "^0.2. | 
| 51 | 
            +
                "@tiledesk/tiledesk-tybot-connector": "^0.2.92",
         | 
| 52 52 | 
             
                "@tiledesk/tiledesk-whatsapp-connector": "^0.1.72",
         | 
| 53 53 | 
             
                "@tiledesk/tiledesk-whatsapp-jobworker": "^0.0.8",
         | 
| 54 54 | 
             
                "@tiledesk/tiledesk-sms-connector": "^0.1.7",
         | 
    
        package/routes/request.js
    CHANGED
    
    | @@ -902,7 +902,7 @@ router.get('/', function (req, res, next) { | |
| 902 902 | 
             
              winston.debug('REQUEST ROUTE - SKIP PAGE ', skip);
         | 
| 903 903 |  | 
| 904 904 |  | 
| 905 | 
            -
              var query = { "id_project": req.projectid, "status": { $lt: 1000 }, preflight: false };
         | 
| 905 | 
            +
              var query = { "id_project": req.projectid, "status": { $lt: 1000 }, preflight: false, "draft": { $in: [false, null]} };
         | 
| 906 906 |  | 
| 907 907 | 
             
              var projectuser = req.projectuser;
         | 
| 908 908 |  | 
| @@ -209,7 +209,6 @@ class OperatingHoursService { | |
| 209 209 | 
             
                  }
         | 
| 210 210 |  | 
| 211 211 | 
             
                  let timeSlot = project.timeSlots[slot_id];
         | 
| 212 | 
            -
                  console.log("timeSlot: ", timeSlot);
         | 
| 213 212 |  | 
| 214 213 | 
             
                  if (!timeSlot) {
         | 
| 215 214 | 
             
                    callback(null, { errorCode: 1030, msg: 'Slot not found with id ' + slot_id })
         | 
| @@ -233,17 +232,18 @@ class OperatingHoursService { | |
| 233 232 |  | 
| 234 233 | 
             
                  // Get the current time in the specified timezone
         | 
| 235 234 | 
             
                  const currentTime = moment_tz.tz(tzname);
         | 
| 236 | 
            -
                  const currentWeekday = currentTime.isoWeekday();
         | 
| 237 235 |  | 
| 236 | 
            +
                  const currentWeekday = currentTime.isoWeekday();
         | 
| 238 237 | 
             
                  const daySlots = hours[currentWeekday];
         | 
| 239 238 | 
             
                  if (!daySlots) {
         | 
| 240 239 | 
             
                    callback(false, null)
         | 
| 240 | 
            +
                    return;
         | 
| 241 241 | 
             
                  }
         | 
| 242 242 |  | 
| 243 243 | 
             
                  let promises = [];
         | 
| 244 244 |  | 
| 245 245 | 
             
                  daySlots.forEach((slot) => {
         | 
| 246 | 
            -
                    promises.push(slotCheck(currentTime, slot))
         | 
| 246 | 
            +
                    promises.push(slotCheck(currentTime, tzname, slot))
         | 
| 247 247 | 
             
                  })
         | 
| 248 248 |  | 
| 249 249 | 
             
                  await Promise.all(promises).then((resp) => {
         | 
| @@ -258,11 +258,11 @@ class OperatingHoursService { | |
| 258 258 | 
             
              }
         | 
| 259 259 | 
             
            }
         | 
| 260 260 |  | 
| 261 | 
            -
            function slotCheck(currentTime, slot) {
         | 
| 261 | 
            +
            function slotCheck(currentTime, tzname, slot) {
         | 
| 262 262 | 
             
              return new Promise((resolve) => {
         | 
| 263 263 |  | 
| 264 | 
            -
                const startTime = moment_tz(slot.start, 'HH:mm');
         | 
| 265 | 
            -
                const endTime = moment_tz(slot.end, 'HH:mm');
         | 
| 264 | 
            +
                const startTime = moment_tz.tz(slot.start, 'HH:mm', tzname);
         | 
| 265 | 
            +
                const endTime = moment_tz.tz(slot.end, 'HH:mm', tzname);
         | 
| 266 266 |  | 
| 267 267 | 
             
                if (currentTime.isBetween(startTime, endTime, null, '[)')) {
         | 
| 268 268 | 
             
                  resolve(true)
         | 
    
        package/test/requestRoute.js
    CHANGED
    
    | @@ -22,6 +22,8 @@ var faqService = require('../services/faqService'); | |
| 22 22 |  | 
| 23 23 | 
             
            // chai.config.includeStack = true;
         | 
| 24 24 |  | 
| 25 | 
            +
            let log = false;
         | 
| 26 | 
            +
             | 
| 25 27 | 
             
            var expect = chai.expect;
         | 
| 26 28 | 
             
            var assert = chai.assert;
         | 
| 27 29 |  | 
| @@ -1160,6 +1162,70 @@ describe('RequestRoute', () => { | |
| 1160 1162 | 
             
                  });
         | 
| 1161 1163 | 
             
                });
         | 
| 1162 1164 |  | 
| 1165 | 
            +
                it('exludeDraftConversations', (done) => {
         | 
| 1166 | 
            +
             | 
| 1167 | 
            +
                  var email = "test-signup-" + Date.now() + "@email.com";
         | 
| 1168 | 
            +
                  var pwd = "pwd";
         | 
| 1169 | 
            +
             | 
| 1170 | 
            +
                  userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
         | 
| 1171 | 
            +
                    projectService.createAndReturnProjectAndProjectUser("test-draft-conversation", savedUser._id).then((savedProjectAndPU) => {
         | 
| 1172 | 
            +
                      let savedProject = savedProjectAndPU.project;
         | 
| 1173 | 
            +
                      let savedPU = savedProjectAndPU.project_user;
         | 
| 1174 | 
            +
                      leadService.createIfNotExists("Lead Fullname", "email@test.com", savedProject._id).then((createdLead) => {
         | 
| 1175 | 
            +
                        let now = Date.now();
         | 
| 1176 | 
            +
                        let request = {
         | 
| 1177 | 
            +
                          request_id: "request_id-exludeDraftConversations-" + now, 
         | 
| 1178 | 
            +
                          project_user_id: savedPU._id,
         | 
| 1179 | 
            +
                          lead_id: createdLead._id,
         | 
| 1180 | 
            +
                          id_project: savedProject._id,
         | 
| 1181 | 
            +
                          first_text: "first_text",
         | 
| 1182 | 
            +
                          lead: createdLead,
         | 
| 1183 | 
            +
                          requester: savedPU,
         | 
| 1184 | 
            +
                          attributes: { sourcePage: "https://widget-pre.tiledesk.com/v2/index.html?tiledesk_projectid=5ce3d1ceb25ad30017279999&td_draft=true" }
         | 
| 1185 | 
            +
                        }
         | 
| 1186 | 
            +
             | 
| 1187 | 
            +
                        requestService.create(request).then(async (savedRequest) => {
         | 
| 1188 | 
            +
                          
         | 
| 1189 | 
            +
                          // Case 1 - request with source page that contains td_draft
         | 
| 1190 | 
            +
                          expect(savedRequest.draft).to.equal(true);
         | 
| 1191 | 
            +
             | 
| 1192 | 
            +
                          // Case 2 - request without source page that contains td_draft
         | 
| 1193 | 
            +
                          //expect(savedRequest.draft).to.be.undefined;
         | 
| 1194 | 
            +
             | 
| 1195 | 
            +
                          // get all requests -> should be 0
         | 
| 1196 | 
            +
             | 
| 1197 | 
            +
                          chai.request(server)
         | 
| 1198 | 
            +
                              .get('/' + savedProject._id + '/requests')
         | 
| 1199 | 
            +
                              .auth(email, pwd)
         | 
| 1200 | 
            +
                              .end((err, res) => {
         | 
| 1201 | 
            +
             | 
| 1202 | 
            +
                                if (err) { console.error("err: ", err ) };
         | 
| 1203 | 
            +
                                if (log) { console.log("res.body: ", res.body) }
         | 
| 1204 | 
            +
             | 
| 1205 | 
            +
                                res.should.have.status(200);
         | 
| 1206 | 
            +
                                res.body.should.be.a('object');
         | 
| 1207 | 
            +
                                res.body.requests.should.be.a('array');
         | 
| 1208 | 
            +
             | 
| 1209 | 
            +
                                // Case 1 - request with source page that contains td_draft
         | 
| 1210 | 
            +
                                expect(res.body.requests.length).to.equal(0);
         | 
| 1211 | 
            +
             | 
| 1212 | 
            +
                                // Case 2 - request without source page that contains td_draft
         | 
| 1213 | 
            +
                                //expect(res.body.requests.length).to.equal(1);
         | 
| 1214 | 
            +
             | 
| 1215 | 
            +
                                done();
         | 
| 1216 | 
            +
                              })
         | 
| 1217 | 
            +
             | 
| 1218 | 
            +
             | 
| 1219 | 
            +
                        }).catch((err) => {
         | 
| 1220 | 
            +
                          console.error("error creating request: ", err)
         | 
| 1221 | 
            +
                        })
         | 
| 1222 | 
            +
                      })
         | 
| 1223 | 
            +
             | 
| 1224 | 
            +
                    })
         | 
| 1225 | 
            +
                  })
         | 
| 1226 | 
            +
             | 
| 1227 | 
            +
                })
         | 
| 1228 | 
            +
             | 
| 1163 1229 | 
             
                // it('assign', (done) => {
         | 
| 1164 1230 |  | 
| 1165 1231 |  |