185669cfe5b968e8e02f17b90ecb3290e350ebf4
[motion2.git] / server / api / whatsappMessage / whatsappMessage.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x6927=['rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappMessage.socket','jayson/promise','client','http','ValidationError','request','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','count','offset','limit','set','Content-Range','json','apply','reject','update','then','destroy','end','name','send','index','map','WhatsappMessage','rawAttributes','key','query','filters','intersection','model','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','include','findAll','rows','params','keys','fields','includeAll','merge','create','body','find','describe','../../config/logger','whatsapp-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','interaction','user','null','AcceptMessage','acceptMessage','manual','interface','SIP/%s','channel','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','event','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','type','twilio','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s'];(function(_0x2ee233,_0x25ad8f){var _0x569ed0=function(_0x30d115){while(--_0x30d115){_0x2ee233['push'](_0x2ee233['shift']());}};_0x569ed0(++_0x25ad8f);}(_0x6927,0x177));var _0x7692=function(_0x41adf4,_0x453cae){_0x41adf4=_0x41adf4-0x0;var _0x4a356f=_0x6927[_0x41adf4];return _0x4a356f;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x7692('0x0'));var zipdir=require(_0x7692('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7692('0x2'));var BPromise=require(_0x7692('0x3'));var Mustache=require(_0x7692('0x4'));var util=require(_0x7692('0x5'));var path=require(_0x7692('0x6'));var sox=require('sox');var csv=require(_0x7692('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x7692('0x8'));var squel=require('squel');var crypto=require(_0x7692('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x7692('0xa'));var toCsv=require(_0x7692('0x7'));var querystring=require(_0x7692('0xb'));var Papa=require('papaparse');var Redis=require(_0x7692('0xc'));var authService=require(_0x7692('0xd'));var qs=require(_0x7692('0xe'));var as=require(_0x7692('0xf'));var hardwareService=require(_0x7692('0x10'));var logger=require('../../config/logger')(_0x7692('0x11'));var utils=require(_0x7692('0x12'));var config=require('../../config/environment');var db=require(_0x7692('0x13'))['db'];config['redis']=_[_0x7692('0x14')](config[_0x7692('0x15')],{'host':_0x7692('0x16'),'port':0x18eb});var socket=require(_0x7692('0x17'))(new Redis(config[_0x7692('0x15')]));require(_0x7692('0x18'))['register'](socket);var jayson=require(_0x7692('0x19'));var client=jayson[_0x7692('0x1a')][_0x7692('0x1b')]({'port':0x232c});var client9002=jayson[_0x7692('0x1a')][_0x7692('0x1b')]({'port':0x232a});function checkPasswordPattern(_0x590a32,_0x1f85a4,_0x1dcb58){if(_0x1dcb58){var _0x3467fe=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x3467fe['test'](_0x1f85a4)){return _0x590a32;}else{throw new db['Sequelize'][(_0x7692('0x1c'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');}}else{return _0x590a32;}}function respondWithRpcPromise(_0x102f39,_0x6dff2c,_0x5afa03,_0x8c45da){return new BPromise(function(_0x1866ec,_0x502352){var _0x54dc32=_0x8c45da||client;return _0x54dc32[_0x7692('0x1d')](_0x102f39,_0x5afa03)['then'](function(_0x3bbb87){logger[_0x7692('0x1e')]('WhatsappMessage,\x20%s,\x20%s',_0x6dff2c,_0x7692('0x1f'));logger[_0x7692('0x20')](_0x7692('0x21'),_0x6dff2c,_0x7692('0x1f'),JSON[_0x7692('0x22')](_0x3bbb87));if(_0x3bbb87['error']){if(_0x3bbb87[_0x7692('0x23')][_0x7692('0x24')]===0x1f4){logger[_0x7692('0x23')](_0x7692('0x25'),_0x6dff2c,_0x3bbb87[_0x7692('0x23')][_0x7692('0x26')]);return _0x502352(_0x3bbb87['error'][_0x7692('0x26')]);}logger['error'](_0x7692('0x25'),_0x6dff2c,_0x3bbb87[_0x7692('0x23')][_0x7692('0x26')]);return _0x1866ec(_0x3bbb87[_0x7692('0x23')][_0x7692('0x26')]);}else{logger['info'](_0x7692('0x25'),_0x6dff2c,_0x7692('0x1f'));_0x1866ec(_0x3bbb87[_0x7692('0x27')][_0x7692('0x26')]);}})[_0x7692('0x28')](function(_0x159852){logger['error'](_0x7692('0x25'),_0x6dff2c,_0x159852);_0x502352(_0x159852);});});}function respondWithStatusCode(_0x17d8b8,_0x3413b8){_0x3413b8=_0x3413b8||0xcc;return function(_0x136f20){if(_0x136f20){return _0x17d8b8[_0x7692('0x29')](_0x3413b8);}return _0x17d8b8[_0x7692('0x2a')](_0x3413b8)['end']();};}function respondWithResult(_0x5e6025,_0x4dbd84){_0x4dbd84=_0x4dbd84||0xc8;return function(_0x20280d){if(_0x20280d){return _0x5e6025[_0x7692('0x2a')](_0x4dbd84)['json'](_0x20280d);}};}function respondWithFilteredResult(_0x5a8d7c,_0x52621a){return function(_0x3cbb04){if(_0x3cbb04){var _0x11fc25=_0x3cbb04[_0x7692('0x2b')],_0x30fc7d=_0x52621a[_0x7692('0x2c')],_0x34e317=_0x52621a[_0x7692('0x2c')]+_0x52621a[_0x7692('0x2d')],_0x35147d;if(_0x34e317>=_0x11fc25){_0x34e317=_0x11fc25;_0x35147d=0xc8;}else{_0x35147d=0xce;}_0x5a8d7c['status'](_0x35147d);return _0x5a8d7c[_0x7692('0x2e')](_0x7692('0x2f'),_0x30fc7d+'-'+_0x34e317+'/'+_0x11fc25)[_0x7692('0x30')](_0x3cbb04);}return null;};}function patchUpdates(_0x4f46a4){return function(_0x2c2df4){try{jsonpatch[_0x7692('0x31')](_0x2c2df4,_0x4f46a4,!![]);}catch(_0x95108a){return BPromise[_0x7692('0x32')](_0x95108a);}return _0x2c2df4['save']();};}function saveUpdates(_0x32ba3f,_0x251e53){return function(_0x60f97){if(_0x60f97){return _0x60f97[_0x7692('0x33')](_0x32ba3f)[_0x7692('0x34')](function(_0x5d4fc1){return _0x5d4fc1;});}return null;};}function removeEntity(_0x3e8d73,_0x2e08cf){return function(_0x26251f){if(_0x26251f){return _0x26251f[_0x7692('0x35')]()[_0x7692('0x34')](function(){_0x3e8d73[_0x7692('0x2a')](0xcc)[_0x7692('0x36')]();});}};}function handleEntityNotFound(_0xdfbb4f,_0x379d21){return function(_0xf13d9e){if(!_0xf13d9e){_0xdfbb4f[_0x7692('0x29')](0x194);}return _0xf13d9e;};}function handleError(_0x3bc601,_0x1cb705){_0x1cb705=_0x1cb705||0x1f4;return function(_0x422379){logger[_0x7692('0x23')](_0x422379['stack']);if(_0x422379[_0x7692('0x37')]){delete _0x422379['name'];}_0x3bc601[_0x7692('0x2a')](_0x1cb705)[_0x7692('0x38')](_0x422379);};}exports[_0x7692('0x39')]=function(_0x81c053,_0x55ce7a){var _0x3531c7={},_0x12dbd9={},_0x996cf3={'count':0x0,'rows':[]};var _0x2dad9a=_[_0x7692('0x3a')](db[_0x7692('0x3b')][_0x7692('0x3c')],function(_0x3b98f4){return{'name':_0x3b98f4['fieldName'],'type':_0x3b98f4['type'][_0x7692('0x3d')]};});_0x12dbd9['model']=_[_0x7692('0x3a')](_0x2dad9a,_0x7692('0x37'));_0x12dbd9[_0x7692('0x3e')]=_['keys'](_0x81c053[_0x7692('0x3e')]);_0x12dbd9[_0x7692('0x3f')]=_[_0x7692('0x40')](_0x12dbd9[_0x7692('0x41')],_0x12dbd9[_0x7692('0x3e')]);_0x3531c7[_0x7692('0x42')]=_['intersection'](_0x12dbd9[_0x7692('0x41')],qs['fields'](_0x81c053['query']['fields']));_0x3531c7[_0x7692('0x42')]=_0x3531c7[_0x7692('0x42')][_0x7692('0x43')]?_0x3531c7[_0x7692('0x42')]:_0x12dbd9['model'];if(!_0x81c053[_0x7692('0x3e')][_0x7692('0x44')]('nolimit')){_0x3531c7[_0x7692('0x2d')]=qs['limit'](_0x81c053[_0x7692('0x3e')][_0x7692('0x2d')]);_0x3531c7['offset']=qs[_0x7692('0x2c')](_0x81c053[_0x7692('0x3e')]['offset']);}_0x3531c7[_0x7692('0x45')]=qs['sort'](_0x81c053[_0x7692('0x3e')][_0x7692('0x46')]);_0x3531c7[_0x7692('0x47')]=qs[_0x7692('0x3f')](_[_0x7692('0x48')](_0x81c053[_0x7692('0x3e')],_0x12dbd9[_0x7692('0x3f')]),_0x2dad9a);if(_0x81c053[_0x7692('0x3e')][_0x7692('0x49')]){_0x3531c7[_0x7692('0x47')]=_['merge'](_0x3531c7['where'],{'$or':_[_0x7692('0x3a')](_0x2dad9a,function(_0x586722){if(_0x586722['type']!==_0x7692('0x4a')){var _0x3baeda={};_0x3baeda[_0x586722[_0x7692('0x37')]]={'$like':'%'+_0x81c053[_0x7692('0x3e')]['filter']+'%'};return _0x3baeda;}})});}_0x3531c7=_['merge']({},_0x3531c7,_0x81c053[_0x7692('0x4b')]);var _0x4c1654={'where':_0x3531c7[_0x7692('0x47')]};return db[_0x7692('0x3b')][_0x7692('0x2b')](_0x4c1654)[_0x7692('0x34')](function(_0x343b23){_0x996cf3['count']=_0x343b23;if(_0x81c053[_0x7692('0x3e')]['includeAll']){_0x3531c7[_0x7692('0x4c')]=[{'all':!![]}];}return db[_0x7692('0x3b')][_0x7692('0x4d')](_0x3531c7);})[_0x7692('0x34')](function(_0x56f6b3){_0x996cf3[_0x7692('0x4e')]=_0x56f6b3;return _0x996cf3;})['then'](respondWithFilteredResult(_0x55ce7a,_0x3531c7))[_0x7692('0x28')](handleError(_0x55ce7a,null));};exports['show']=function(_0x489cf8,_0x43e358){var _0x1d275d={'raw':!![],'where':{'id':_0x489cf8[_0x7692('0x4f')]['id']}},_0x2172ea={};_0x2172ea[_0x7692('0x41')]=_[_0x7692('0x50')](db['WhatsappMessage'][_0x7692('0x3c')]);_0x2172ea[_0x7692('0x3e')]=_[_0x7692('0x50')](_0x489cf8['query']);_0x2172ea[_0x7692('0x3f')]=_[_0x7692('0x40')](_0x2172ea['model'],_0x2172ea['query']);_0x1d275d[_0x7692('0x42')]=_['intersection'](_0x2172ea['model'],qs[_0x7692('0x51')](_0x489cf8['query']['fields']));_0x1d275d[_0x7692('0x42')]=_0x1d275d[_0x7692('0x42')][_0x7692('0x43')]?_0x1d275d['attributes']:_0x2172ea[_0x7692('0x41')];if(_0x489cf8[_0x7692('0x3e')][_0x7692('0x52')]){_0x1d275d[_0x7692('0x4c')]=[{'all':!![]}];}_0x1d275d=_[_0x7692('0x53')]({},_0x1d275d,_0x489cf8[_0x7692('0x4b')]);return db[_0x7692('0x3b')]['find'](_0x1d275d)[_0x7692('0x34')](handleEntityNotFound(_0x43e358,null))[_0x7692('0x34')](respondWithResult(_0x43e358,null))[_0x7692('0x28')](handleError(_0x43e358,null));};exports[_0x7692('0x54')]=function(_0x32da68,_0x46d616){return db[_0x7692('0x3b')][_0x7692('0x54')](_0x32da68[_0x7692('0x55')],{})[_0x7692('0x34')](respondWithResult(_0x46d616,0xc9))['catch'](handleError(_0x46d616,null));};exports[_0x7692('0x33')]=function(_0x876dd8,_0xe9c7a9){if(_0x876dd8[_0x7692('0x55')]['id']){delete _0x876dd8[_0x7692('0x55')]['id'];}return db[_0x7692('0x3b')]['find']({'where':{'id':_0x876dd8['params']['id']}})['then'](handleEntityNotFound(_0xe9c7a9,null))[_0x7692('0x34')](saveUpdates(_0x876dd8[_0x7692('0x55')],null))[_0x7692('0x34')](respondWithResult(_0xe9c7a9,null))[_0x7692('0x28')](handleError(_0xe9c7a9,null));};exports['destroy']=function(_0x34096f,_0xd87764){return db['WhatsappMessage'][_0x7692('0x56')]({'where':{'id':_0x34096f[_0x7692('0x4f')]['id']}})[_0x7692('0x34')](handleEntityNotFound(_0xd87764,null))[_0x7692('0x34')](removeEntity(_0xd87764,null))[_0x7692('0x28')](handleError(_0xd87764,null));};exports[_0x7692('0x57')]=function(_0x34e8f2,_0x26bc25){return db[_0x7692('0x3b')]['describe']()[_0x7692('0x34')](respondWithResult(_0x26bc25,null))[_0x7692('0x28')](handleError(_0x26bc25,null));};var interaction_log=require(_0x7692('0x58'))(_0x7692('0x59'));exports[_0x7692('0x5a')]=function(_0x260df0,_0xa7745,_0xd0ee8b){var _0x7c8370={'channel':'whatsapp'};if(_0x260df0[_0x7692('0x55')]['id']){delete _0x260df0[_0x7692('0x55')]['id'];}_0x260df0[_0x7692('0x55')][_0x7692('0x5b')]=!![];_0x260df0[_0x7692('0x55')][_0x7692('0x5c')]=moment()[_0x7692('0x5d')](_0x7692('0x5e'));_0x260df0[_0x7692('0x55')][_0x7692('0x5f')]=_0x260df0['body']['UserId']||_0x260df0['user']['id'];return db[_0x7692('0x3b')][_0x7692('0x56')]({'where':{'id':_0x260df0[_0x7692('0x4f')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0x7692('0x34')](handleEntityNotFound(_0xa7745,null))[_0x7692('0x34')](saveUpdates(_0x260df0[_0x7692('0x55')],null))[_0x7692('0x34')](function(_0x59d028){if(_0x59d028){_0x7c8370[_0x7692('0x26')]=_0x59d028[_0x7692('0x60')]({'plain':!![]});return db[_0x7692('0x61')][_0x7692('0x56')]({'where':{'id':_0x59d028[_0x7692('0x62')]}});}return null;})[_0x7692('0x34')](handleEntityNotFound(_0xa7745,null))[_0x7692('0x34')](function(_0x18d8ca){if(_0x18d8ca){return _0x18d8ca[_0x7692('0x33')]({'UserId':_0x260df0['body'][_0x7692('0x5f')],'read1stAt':_['isNil'](_0x18d8ca[_0x7692('0x63')])?moment()[_0x7692('0x5d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7692('0x34')](function(_0x5f5059){if(_0x5f5059){_0x7c8370[_0x7692('0x64')]=_0x5f5059[_0x7692('0x60')]({'plain':!![]});interaction_log[_0x7692('0x1e')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x260df0['user']['id'],_0x260df0[_0x7692('0x65')][_0x7692('0x37')],_0x260df0['user']['role'],_0x7c8370[_0x7692('0x64')]['id'],_0x260df0['body']?JSON[_0x7692('0x22')](_0x260df0[_0x7692('0x55')]):_0x7692('0x66'));return respondWithRpcPromise(_0x7692('0x67'),_0x7692('0x68'),_0x7c8370);}return null;})['then'](function(_0x4b5402){if(_0x4b5402){if(_0x260df0[_0x7692('0x55')][_0x7692('0x69')]){_0x7c8370[_0x7692('0x26')][_0x7692('0x6a')]=util[_0x7692('0x5d')](_0x7692('0x6b'),_0x260df0[_0x7692('0x65')][_0x7692('0x37')]);_0x7c8370['message'][_0x7692('0x6c')]=_0x7c8370[_0x7692('0x6c')];_0x7c8370[_0x7692('0x26')]['event']=_0x7692('0x5a');return respondWithRpcPromise(_0x7692('0x6d'),_0x7692('0x6d'),{'event':_0x7692('0x6e'),'message':_0x7c8370[_0x7692('0x26')]},client9002)[_0x7692('0x34')](function(){return _0x7c8370;});}return _0x7c8370;}return null;})[_0x7692('0x34')](respondWithResult(_0xa7745,null))[_0x7692('0x28')](handleError(_0xa7745,null));};var interaction_log=require(_0x7692('0x58'))('whatsapp-interactions');exports[_0x7692('0x32')]=function(_0xce79ba,_0x184d83,_0x2de952){var _0x490937={'agent':{},'channel':'whatsapp'};if(_0xce79ba[_0x7692('0x55')]['id']){delete _0xce79ba['body']['id'];}_0xce79ba[_0x7692('0x55')]['UserId']=_0xce79ba['body']['UserId']||_0xce79ba['user']['id'];_0x490937['agent']['id']=_0xce79ba[_0x7692('0x55')][_0x7692('0x5f')];return db[_0x7692('0x3b')][_0x7692('0x56')]({'where':{'id':_0xce79ba[_0x7692('0x4f')]['id'],'UserId':null}})[_0x7692('0x34')](handleEntityNotFound(_0x184d83,null))['then'](function(_0x1680d2){if(_0x1680d2){_0x490937[_0x7692('0x26')]=_0x1680d2['get']({'plain':!![]});return db[_0x7692('0x61')]['find']({'where':{'id':_0x1680d2['WhatsappInteractionId']}});}return null;})[_0x7692('0x34')](handleEntityNotFound(_0x184d83,null))[_0x7692('0x34')](function(_0x5372ff){if(_0x5372ff){_0x490937[_0x7692('0x64')]=_0x5372ff[_0x7692('0x60')]({'plain':!![]});interaction_log['info'](_0x7692('0x6f'),_0xce79ba[_0x7692('0x65')]['id'],_0xce79ba[_0x7692('0x65')][_0x7692('0x37')],_0xce79ba[_0x7692('0x65')][_0x7692('0x70')],_0x490937[_0x7692('0x64')]['id'],_0xce79ba[_0x7692('0x55')]?JSON[_0x7692('0x22')](_0xce79ba[_0x7692('0x55')]):_0x7692('0x66'));return respondWithRpcPromise(_0x7692('0x71'),_0x7692('0x72'),_0x490937);}return null;})[_0x7692('0x34')](function(_0x829978){if(_0x829978){_0x829978['message']['interface']=util[_0x7692('0x5d')](_0x7692('0x6b'),_0xce79ba[_0x7692('0x65')]['name']);_0x829978['message'][_0x7692('0x6c')]=_0x490937[_0x7692('0x6c')];_0x829978[_0x7692('0x26')][_0x7692('0x73')]='reject';respondWithRpcPromise(_0x7692('0x6d'),_0x7692('0x6d'),{'event':'rejectmessage','message':_0x829978['message']},client9002);return _0x490937;}return null;})[_0x7692('0x34')](respondWithResult(_0x184d83,null))[_0x7692('0x28')](handleError(_0x184d83,null));};exports['status']=function(_0x4577a8,_0x41e1be,_0x670f53){if(_0x4577a8[_0x7692('0x55')]['id']){delete _0x4577a8[_0x7692('0x55')]['id'];}var _0x4af544;return db[_0x7692('0x3b')]['find']({'where':{'id':_0x4577a8[_0x7692('0x4f')]['id']}})[_0x7692('0x34')](handleEntityNotFound(_0x41e1be,null))[_0x7692('0x34')](function(_0x43a9ac){if(_0x43a9ac){_0x4af544=_0x43a9ac;return db[_0x7692('0x74')][_0x7692('0x56')]({'where':{'id':_0x43a9ac[_0x7692('0x75')]}});}})[_0x7692('0x34')](handleEntityNotFound(_0x41e1be,null))['then'](function(_0x5c2572){if(_0x5c2572){logger['debug'](_0x7692('0x76'),'status','received\x20delivery\x20report\x20from',_0x5c2572['type'],util[_0x7692('0x77')](_0x4577a8['body'],{'showHidden':![],'depth':null}));switch(_0x5c2572[_0x7692('0x78')]){case _0x7692('0x79'):if(_0x4577a8[_0x7692('0x55')]['MessageSid']&&_0x4577a8['body']['MessageSid']===_0x4af544[_0x7692('0x7a')]&&_0x4577a8[_0x7692('0x55')]['MessageStatus']&&_0x4577a8[_0x7692('0x55')][_0x7692('0x7b')]===_0x7692('0x5b')){return _0x4af544['update']({'read':!![]});}else{logger[_0x7692('0x23')](_0x7692('0x7c'),_0x7692('0x2a'),_0x7692('0x79'),util[_0x7692('0x77')](_0x4577a8[_0x7692('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x4af544;}})[_0x7692('0x34')](respondWithResult(_0x41e1be,null))['catch'](handleError(_0x41e1be,null));};