Built motion from commit (unavailable).|2.5.17
[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 _0x9219=['query','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','includeAll','include','findAll','rows','show','keys','length','find','create','body','params','describe','../../config/logger','whatsapp-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','CmContact','Contact','get','WhatsappInteraction','isNil','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','acceptMessage','interface','channel','event','EventManager','whatsapp','WhatsappInteractionId','interaction','role','RejectMessage','SIP/%s','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','MessageSid','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','fast-json-patch','bluebird','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','sendStatus','end','status','count','offset','limit','set','Content-Range','json','reject','update','then','destroy','name','map','WhatsappMessage','rawAttributes','fieldName','type','key'];(function(_0x5a8376,_0x5b916f){var _0x313ad6=function(_0x235793){while(--_0x235793){_0x5a8376['push'](_0x5a8376['shift']());}};_0x313ad6(++_0x5b916f);}(_0x9219,0x19e));var _0x9921=function(_0x526b7f,_0x28c91d){_0x526b7f=_0x526b7f-0x0;var _0x53568c=_0x9219[_0x526b7f];return _0x53568c;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9921('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9921('0x1'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9921('0x2'));var sox=require(_0x9921('0x3'));var csv=require('to-csv');var ejs=require(_0x9921('0x4'));var fs=require('fs');var _=require(_0x9921('0x5'));var squel=require(_0x9921('0x6'));var crypto=require(_0x9921('0x7'));var jsforce=require(_0x9921('0x8'));var deskjs=require(_0x9921('0x9'));var toCsv=require(_0x9921('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9921('0xb'));var qs=require('../../components/parsers/qs');var as=require(_0x9921('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9921('0xd'));var utils=require(_0x9921('0xe'));var config=require(_0x9921('0xf'));var licenseUtil=require(_0x9921('0x10'));var db=require('../../mysqldb')['db'];config[_0x9921('0x11')]=_['defaults'](config['redis'],{'host':_0x9921('0x12'),'port':0x18eb});var socket=require(_0x9921('0x13'))(new Redis(config['redis']));require(_0x9921('0x14'))[_0x9921('0x15')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9921('0x16')][_0x9921('0x17')]({'port':0x232c});var client9002=jayson[_0x9921('0x16')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20fca1,_0x258116,_0xde0720,_0x4ad6e1){return new BPromise(function(_0x360724,_0x1a0ee7){var _0x47cd77=_0x4ad6e1||client;return _0x47cd77[_0x9921('0x18')](_0x20fca1,_0xde0720)['then'](function(_0x1e8306){logger[_0x9921('0x19')](_0x9921('0x1a'),_0x258116,'request\x20sent');logger[_0x9921('0x1b')](_0x9921('0x1c'),_0x258116,_0x9921('0x1d'),JSON[_0x9921('0x1e')](_0x1e8306));if(_0x1e8306[_0x9921('0x1f')]){if(_0x1e8306[_0x9921('0x1f')]['code']===0x1f4){logger[_0x9921('0x1f')](_0x9921('0x1a'),_0x258116,_0x1e8306[_0x9921('0x1f')][_0x9921('0x20')]);return _0x1a0ee7(_0x1e8306['error'][_0x9921('0x20')]);}logger[_0x9921('0x1f')](_0x9921('0x1a'),_0x258116,_0x1e8306[_0x9921('0x1f')][_0x9921('0x20')]);return _0x360724(_0x1e8306[_0x9921('0x1f')][_0x9921('0x20')]);}else{logger[_0x9921('0x19')](_0x9921('0x1a'),_0x258116,_0x9921('0x1d'));_0x360724(_0x1e8306['result']['message']);}})[_0x9921('0x21')](function(_0x1e7076){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x258116,_0x1e7076);_0x1a0ee7(_0x1e7076);});});}function respondWithStatusCode(_0x2cdbe4,_0x2be1cd){_0x2be1cd=_0x2be1cd||0xcc;return function(_0x40eb38){if(_0x40eb38){return _0x2cdbe4[_0x9921('0x22')](_0x2be1cd);}return _0x2cdbe4['status'](_0x2be1cd)[_0x9921('0x23')]();};}function respondWithResult(_0x491300,_0x10a5ca){_0x10a5ca=_0x10a5ca||0xc8;return function(_0x1ca3f9){if(_0x1ca3f9){return _0x491300[_0x9921('0x24')](_0x10a5ca)['json'](_0x1ca3f9);}};}function respondWithFilteredResult(_0x5e5c01,_0x59620e){return function(_0x115ee9){if(_0x115ee9){var _0x3a36c5=_0x115ee9[_0x9921('0x25')],_0x1607e6=_0x59620e['offset'],_0x486446=_0x59620e[_0x9921('0x26')]+_0x59620e[_0x9921('0x27')],_0x13248a;if(_0x486446>=_0x3a36c5){_0x486446=_0x3a36c5;_0x13248a=0xc8;}else{_0x13248a=0xce;}_0x5e5c01[_0x9921('0x24')](_0x13248a);return _0x5e5c01[_0x9921('0x28')](_0x9921('0x29'),_0x1607e6+'-'+_0x486446+'/'+_0x3a36c5)[_0x9921('0x2a')](_0x115ee9);}return null;};}function patchUpdates(_0x3e252b){return function(_0x4629e3){try{jsonpatch['apply'](_0x4629e3,_0x3e252b,!![]);}catch(_0xc4cdcf){return BPromise[_0x9921('0x2b')](_0xc4cdcf);}return _0x4629e3['save']();};}function saveUpdates(_0x45f4d5,_0x3ab545){return function(_0x303b13){if(_0x303b13){return _0x303b13[_0x9921('0x2c')](_0x45f4d5)[_0x9921('0x2d')](function(_0x1682b8){return _0x1682b8;});}return null;};}function removeEntity(_0x8833c3,_0x4bd735){return function(_0x23c531){if(_0x23c531){return _0x23c531[_0x9921('0x2e')]()[_0x9921('0x2d')](function(){_0x8833c3[_0x9921('0x24')](0xcc)[_0x9921('0x23')]();});}};}function handleEntityNotFound(_0x6d0e39,_0x576e1d){return function(_0x3fe9bd){if(!_0x3fe9bd){_0x6d0e39['sendStatus'](0x194);}return _0x3fe9bd;};}function handleError(_0x556c5d,_0x33c981){_0x33c981=_0x33c981||0x1f4;return function(_0x423ad7){logger[_0x9921('0x1f')](_0x423ad7['stack']);if(_0x423ad7[_0x9921('0x2f')]){delete _0x423ad7[_0x9921('0x2f')];}_0x556c5d[_0x9921('0x24')](_0x33c981)['send'](_0x423ad7);};}exports['index']=function(_0x1a01e5,_0x170cd1){var _0x36f984={},_0x26be68={},_0x290437={'count':0x0,'rows':[]};var _0x436071=_[_0x9921('0x30')](db[_0x9921('0x31')][_0x9921('0x32')],function(_0x5115b5){return{'name':_0x5115b5[_0x9921('0x33')],'type':_0x5115b5[_0x9921('0x34')][_0x9921('0x35')]};});_0x26be68['model']=_[_0x9921('0x30')](_0x436071,_0x9921('0x2f'));_0x26be68[_0x9921('0x36')]=_['keys'](_0x1a01e5[_0x9921('0x36')]);_0x26be68[_0x9921('0x37')]=_[_0x9921('0x38')](_0x26be68['model'],_0x26be68[_0x9921('0x36')]);_0x36f984[_0x9921('0x39')]=_[_0x9921('0x38')](_0x26be68['model'],qs[_0x9921('0x3a')](_0x1a01e5[_0x9921('0x36')]['fields']));_0x36f984[_0x9921('0x39')]=_0x36f984[_0x9921('0x39')]['length']?_0x36f984[_0x9921('0x39')]:_0x26be68[_0x9921('0x3b')];if(!_0x1a01e5[_0x9921('0x36')][_0x9921('0x3c')](_0x9921('0x3d'))){_0x36f984[_0x9921('0x27')]=qs[_0x9921('0x27')](_0x1a01e5[_0x9921('0x36')]['limit']);_0x36f984['offset']=qs[_0x9921('0x26')](_0x1a01e5['query'][_0x9921('0x26')]);}_0x36f984[_0x9921('0x3e')]=qs[_0x9921('0x3f')](_0x1a01e5[_0x9921('0x36')][_0x9921('0x3f')]);_0x36f984['where']=qs[_0x9921('0x37')](_[_0x9921('0x40')](_0x1a01e5[_0x9921('0x36')],_0x26be68[_0x9921('0x37')]),_0x436071);if(_0x1a01e5[_0x9921('0x36')]['filter']){_0x36f984[_0x9921('0x41')]=_[_0x9921('0x42')](_0x36f984['where'],{'$or':_[_0x9921('0x30')](_0x436071,function(_0x349c32){if(_0x349c32[_0x9921('0x34')]!=='VIRTUAL'){var _0xccc213={};_0xccc213[_0x349c32[_0x9921('0x2f')]]={'$like':'%'+_0x1a01e5[_0x9921('0x36')][_0x9921('0x43')]+'%'};return _0xccc213;}})});}_0x36f984=_[_0x9921('0x42')]({},_0x36f984,_0x1a01e5[_0x9921('0x44')]);var _0xc9204b={'where':_0x36f984[_0x9921('0x41')]};return db['WhatsappMessage'][_0x9921('0x25')](_0xc9204b)[_0x9921('0x2d')](function(_0x1d56f2){_0x290437['count']=_0x1d56f2;if(_0x1a01e5[_0x9921('0x36')][_0x9921('0x45')]){_0x36f984[_0x9921('0x46')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x9921('0x47')](_0x36f984);})['then'](function(_0xc00034){_0x290437[_0x9921('0x48')]=_0xc00034;return _0x290437;})[_0x9921('0x2d')](respondWithFilteredResult(_0x170cd1,_0x36f984))['catch'](handleError(_0x170cd1,null));};exports[_0x9921('0x49')]=function(_0x44ab69,_0x5b72cf){var _0x11b58f={'raw':!![],'where':{'id':_0x44ab69['params']['id']}},_0x4debbb={};_0x4debbb[_0x9921('0x3b')]=_[_0x9921('0x4a')](db['WhatsappMessage'][_0x9921('0x32')]);_0x4debbb[_0x9921('0x36')]=_[_0x9921('0x4a')](_0x44ab69['query']);_0x4debbb['filters']=_['intersection'](_0x4debbb[_0x9921('0x3b')],_0x4debbb[_0x9921('0x36')]);_0x11b58f[_0x9921('0x39')]=_[_0x9921('0x38')](_0x4debbb[_0x9921('0x3b')],qs['fields'](_0x44ab69[_0x9921('0x36')]['fields']));_0x11b58f[_0x9921('0x39')]=_0x11b58f['attributes'][_0x9921('0x4b')]?_0x11b58f[_0x9921('0x39')]:_0x4debbb[_0x9921('0x3b')];if(_0x44ab69[_0x9921('0x36')][_0x9921('0x45')]){_0x11b58f[_0x9921('0x46')]=[{'all':!![]}];}_0x11b58f=_[_0x9921('0x42')]({},_0x11b58f,_0x44ab69[_0x9921('0x44')]);return db[_0x9921('0x31')][_0x9921('0x4c')](_0x11b58f)[_0x9921('0x2d')](handleEntityNotFound(_0x5b72cf,null))[_0x9921('0x2d')](respondWithResult(_0x5b72cf,null))[_0x9921('0x21')](handleError(_0x5b72cf,null));};exports['create']=function(_0x473f68,_0x3f67f7){return db[_0x9921('0x31')][_0x9921('0x4d')](_0x473f68[_0x9921('0x4e')],{})[_0x9921('0x2d')](respondWithResult(_0x3f67f7,0xc9))[_0x9921('0x21')](handleError(_0x3f67f7,null));};exports[_0x9921('0x2c')]=function(_0x58cff9,_0x261b71){if(_0x58cff9[_0x9921('0x4e')]['id']){delete _0x58cff9[_0x9921('0x4e')]['id'];}return db['WhatsappMessage']['find']({'where':{'id':_0x58cff9[_0x9921('0x4f')]['id']}})[_0x9921('0x2d')](handleEntityNotFound(_0x261b71,null))['then'](saveUpdates(_0x58cff9[_0x9921('0x4e')],null))['then'](respondWithResult(_0x261b71,null))[_0x9921('0x21')](handleError(_0x261b71,null));};exports[_0x9921('0x2e')]=function(_0x5a29dd,_0x171850){return db['WhatsappMessage']['find']({'where':{'id':_0x5a29dd['params']['id']}})[_0x9921('0x2d')](handleEntityNotFound(_0x171850,null))[_0x9921('0x2d')](removeEntity(_0x171850,null))['catch'](handleError(_0x171850,null));};exports[_0x9921('0x50')]=function(_0x3ea12a,_0xdc7826){return db[_0x9921('0x31')][_0x9921('0x50')]()[_0x9921('0x2d')](respondWithResult(_0xdc7826,null))[_0x9921('0x21')](handleError(_0xdc7826,null));};var interaction_log=require(_0x9921('0x51'))(_0x9921('0x52'));exports[_0x9921('0x53')]=function(_0x5daa6e,_0x2a60a9,_0x4186cd){var _0x4c82f6={'agent':{},'channel':'whatsapp'};if(_0x5daa6e[_0x9921('0x4e')]['id']){delete _0x5daa6e['body']['id'];}_0x5daa6e[_0x9921('0x4e')][_0x9921('0x54')]=!![];_0x5daa6e[_0x9921('0x4e')]['readAt']=moment()[_0x9921('0x55')](_0x9921('0x56'));_0x5daa6e['body'][_0x9921('0x57')]=_0x5daa6e[_0x9921('0x4e')]['UserId']||_0x5daa6e['user']['id'];_0x4c82f6[_0x9921('0x58')]['id']=_0x5daa6e[_0x9921('0x4e')][_0x9921('0x57')];return db[_0x9921('0x31')][_0x9921('0x4c')]({'where':{'id':_0x5daa6e['params']['id'],'UserId':null},'include':[{'model':db[_0x9921('0x59')],'as':_0x9921('0x5a')}]})[_0x9921('0x2d')](handleEntityNotFound(_0x2a60a9,null))[_0x9921('0x2d')](saveUpdates(_0x5daa6e[_0x9921('0x4e')],null))[_0x9921('0x2d')](function(_0x554f9c){if(_0x554f9c){_0x4c82f6['message']=_0x554f9c[_0x9921('0x5b')]({'plain':!![]});return db[_0x9921('0x5c')]['find']({'where':{'id':_0x554f9c['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2a60a9,null))[_0x9921('0x2d')](function(_0x5e7e4f){if(_0x5e7e4f){return _0x5e7e4f[_0x9921('0x2c')]({'UserId':_0x5daa6e[_0x9921('0x4e')][_0x9921('0x57')],'read1stAt':_[_0x9921('0x5d')](_0x5e7e4f[_0x9921('0x5e')])?moment()[_0x9921('0x55')](_0x9921('0x56')):undefined});}return null;})[_0x9921('0x2d')](function(_0x5f3d07){if(_0x5f3d07){_0x4c82f6['interaction']=_0x5f3d07[_0x9921('0x5b')]({'plain':!![]});interaction_log[_0x9921('0x19')](_0x9921('0x5f'),_0x5daa6e[_0x9921('0x60')]['id'],_0x5daa6e[_0x9921('0x60')]['name'],_0x5daa6e[_0x9921('0x60')]['role'],_0x4c82f6['interaction']['id'],_0x5daa6e[_0x9921('0x4e')]?JSON['stringify'](_0x5daa6e[_0x9921('0x4e')]):_0x9921('0x61'));return respondWithRpcPromise('AcceptMessage',_0x9921('0x62'),_0x4c82f6);}return null;})[_0x9921('0x2d')](function(_0x4cb4e4){if(_0x4cb4e4){if(_0x5daa6e[_0x9921('0x4e')]['manual']){_0x4c82f6[_0x9921('0x20')][_0x9921('0x63')]=util['format']('SIP/%s',_0x5daa6e['user'][_0x9921('0x2f')]);_0x4c82f6[_0x9921('0x20')]['channel']=_0x4c82f6[_0x9921('0x64')];_0x4c82f6[_0x9921('0x20')][_0x9921('0x65')]=_0x9921('0x53');return respondWithRpcPromise(_0x9921('0x66'),'EventManager',{'event':'acceptmessage','message':_0x4c82f6[_0x9921('0x20')]},client9002)[_0x9921('0x2d')](function(){return _0x4c82f6;});}return _0x4c82f6;}return null;})['then'](respondWithResult(_0x2a60a9,null))[_0x9921('0x21')](handleError(_0x2a60a9,null));};var interaction_log=require(_0x9921('0x51'))(_0x9921('0x52'));exports[_0x9921('0x2b')]=function(_0xbe950e,_0x25d577,_0x1da370){var _0xa66777={'agent':{},'channel':_0x9921('0x67')};if(_0xbe950e[_0x9921('0x4e')]['id']){delete _0xbe950e[_0x9921('0x4e')]['id'];}_0xbe950e[_0x9921('0x4e')][_0x9921('0x57')]=_0xbe950e[_0x9921('0x4e')][_0x9921('0x57')]||_0xbe950e[_0x9921('0x60')]['id'];_0xa66777['agent']['id']=_0xbe950e[_0x9921('0x4e')]['UserId'];return db[_0x9921('0x31')][_0x9921('0x4c')]({'where':{'id':_0xbe950e[_0x9921('0x4f')]['id'],'UserId':null}})[_0x9921('0x2d')](handleEntityNotFound(_0x25d577,null))[_0x9921('0x2d')](function(_0x280bb0){if(_0x280bb0){_0xa66777[_0x9921('0x20')]=_0x280bb0[_0x9921('0x5b')]({'plain':!![]});return db['WhatsappInteraction'][_0x9921('0x4c')]({'where':{'id':_0x280bb0[_0x9921('0x68')]}});}return null;})['then'](handleEntityNotFound(_0x25d577,null))['then'](function(_0x473513){if(_0x473513){_0xa66777[_0x9921('0x69')]=_0x473513[_0x9921('0x5b')]({'plain':!![]});interaction_log[_0x9921('0x19')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xbe950e[_0x9921('0x60')]['id'],_0xbe950e[_0x9921('0x60')][_0x9921('0x2f')],_0xbe950e[_0x9921('0x60')][_0x9921('0x6a')],_0xa66777[_0x9921('0x69')]['id'],_0xbe950e[_0x9921('0x4e')]?JSON[_0x9921('0x1e')](_0xbe950e[_0x9921('0x4e')]):_0x9921('0x61'));return respondWithRpcPromise(_0x9921('0x6b'),'rejectMessage',_0xa66777);}return null;})[_0x9921('0x2d')](function(_0x273104){if(_0x273104){_0x273104[_0x9921('0x20')]['interface']=util[_0x9921('0x55')](_0x9921('0x6c'),_0xbe950e[_0x9921('0x60')]['name']);_0x273104['message'][_0x9921('0x64')]=_0xa66777[_0x9921('0x64')];_0x273104[_0x9921('0x20')]['event']=_0x9921('0x2b');respondWithRpcPromise(_0x9921('0x66'),'EventManager',{'event':'rejectmessage','message':_0x273104[_0x9921('0x20')]},client9002);return _0xa66777;}return null;})['then'](respondWithResult(_0x25d577,null))[_0x9921('0x21')](handleError(_0x25d577,null));};exports[_0x9921('0x24')]=function(_0x2ed1d1,_0x22e05a,_0x3cdb0f){if(_0x2ed1d1['body']['id']){delete _0x2ed1d1[_0x9921('0x4e')]['id'];}var _0x10fec0;return db[_0x9921('0x31')][_0x9921('0x4c')]({'where':{'id':_0x2ed1d1[_0x9921('0x4f')]['id']}})[_0x9921('0x2d')](handleEntityNotFound(_0x22e05a,null))['then'](function(_0x46aeab){if(_0x46aeab){_0x10fec0=_0x46aeab;return db[_0x9921('0x6d')][_0x9921('0x4c')]({'where':{'id':_0x46aeab[_0x9921('0x6e')]}});}})['then'](handleEntityNotFound(_0x22e05a,null))[_0x9921('0x2d')](function(_0x28a218){if(_0x28a218){logger['debug'](_0x9921('0x6f'),'status','received\x20delivery\x20report\x20from',_0x28a218['type'],util[_0x9921('0x70')](_0x2ed1d1[_0x9921('0x4e')],{'showHidden':![],'depth':null}));switch(_0x28a218[_0x9921('0x34')]){case'twilio':if(_0x2ed1d1[_0x9921('0x4e')][_0x9921('0x71')]&&_0x2ed1d1['body'][_0x9921('0x71')]===_0x10fec0['messageId']&&_0x2ed1d1[_0x9921('0x4e')]['MessageStatus']&&_0x2ed1d1['body'][_0x9921('0x72')]===_0x9921('0x54')){return _0x10fec0[_0x9921('0x2c')]({'read':!![]});}else{logger[_0x9921('0x1f')](_0x9921('0x73'),_0x9921('0x24'),_0x9921('0x74'),util[_0x9921('0x70')](_0x2ed1d1[_0x9921('0x4e')],{'showHidden':![],'depth':null}));}break;}return _0x10fec0;}})[_0x9921('0x2d')](respondWithResult(_0x22e05a,null))['catch'](handleError(_0x22e05a,null));};