Built motion from commit (unavailable).|2.5.16
[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 _0x349f=['find','body','describe','whatsapp-interactions','accept','readAt','format','UserId','user','agent','CmContact','Contact','get','WhatsappInteraction','WhatsappInteractionId','role','interaction','null','AcceptMessage','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','whatsapp','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','jayson/promise','client','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','set','Content-Range','reject','save','update','destroy','stack','name','send','index','map','WhatsappMessage','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','limit','offset','order','sort','where','filter','merge','VIRTUAL','count','includeAll','include','catch','show','params','keys','rawAttributes','fields','length','options'];(function(_0x2b32cc,_0x26b879){var _0x210057=function(_0x205fe2){while(--_0x205fe2){_0x2b32cc['push'](_0x2b32cc['shift']());}};_0x210057(++_0x26b879);}(_0x349f,0xa8));var _0xf349=function(_0x295c8b,_0x5b9d11){_0x295c8b=_0x295c8b-0x0;var _0x1e342f=_0x349f[_0x295c8b];return _0x1e342f;};'use strict';var pdf=require(_0xf349('0x0'));var emlformat=require(_0xf349('0x1'));var rimraf=require(_0xf349('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf349('0x3'));var rp=require(_0xf349('0x4'));var moment=require(_0xf349('0x5'));var BPromise=require(_0xf349('0x6'));var Mustache=require(_0xf349('0x7'));var util=require(_0xf349('0x8'));var path=require(_0xf349('0x9'));var sox=require(_0xf349('0xa'));var csv=require(_0xf349('0xb'));var ejs=require(_0xf349('0xc'));var fs=require('fs');var _=require('lodash');var squel=require(_0xf349('0xd'));var crypto=require(_0xf349('0xe'));var jsforce=require(_0xf349('0xf'));var deskjs=require(_0xf349('0x10'));var toCsv=require(_0xf349('0xb'));var querystring=require(_0xf349('0x11'));var Papa=require(_0xf349('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf349('0x13'));var as=require(_0xf349('0x14'));var hardwareService=require(_0xf349('0x15'));var logger=require(_0xf349('0x16'))(_0xf349('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf349('0x18'))['db'];config[_0xf349('0x19')]=_[_0xf349('0x1a')](config[_0xf349('0x19')],{'host':_0xf349('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf349('0x19')]));require(_0xf349('0x1c'))['register'](socket);var jayson=require(_0xf349('0x1d'));var client=jayson[_0xf349('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0xf349('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x401ada,_0x3bc4e4,_0x26b561,_0x1e2dcd){return new BPromise(function(_0x14c06d,_0x3a591e){var _0x2666be=_0x1e2dcd||client;return _0x2666be['request'](_0x401ada,_0x26b561)[_0xf349('0x1f')](function(_0x5aec49){logger[_0xf349('0x20')](_0xf349('0x21'),_0x3bc4e4,_0xf349('0x22'));logger[_0xf349('0x23')](_0xf349('0x24'),_0x3bc4e4,_0xf349('0x22'),JSON[_0xf349('0x25')](_0x5aec49));if(_0x5aec49[_0xf349('0x26')]){if(_0x5aec49['error'][_0xf349('0x27')]===0x1f4){logger['error'](_0xf349('0x21'),_0x3bc4e4,_0x5aec49[_0xf349('0x26')][_0xf349('0x28')]);return _0x3a591e(_0x5aec49['error'][_0xf349('0x28')]);}logger[_0xf349('0x26')](_0xf349('0x21'),_0x3bc4e4,_0x5aec49['error'][_0xf349('0x28')]);return _0x14c06d(_0x5aec49[_0xf349('0x26')]['message']);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x3bc4e4,_0xf349('0x22'));_0x14c06d(_0x5aec49[_0xf349('0x29')][_0xf349('0x28')]);}})['catch'](function(_0x3de06b){logger[_0xf349('0x26')](_0xf349('0x21'),_0x3bc4e4,_0x3de06b);_0x3a591e(_0x3de06b);});});}function respondWithStatusCode(_0x428396,_0x142d95){_0x142d95=_0x142d95||0xcc;return function(_0x222e95){if(_0x222e95){return _0x428396[_0xf349('0x2a')](_0x142d95);}return _0x428396[_0xf349('0x2b')](_0x142d95)[_0xf349('0x2c')]();};}function respondWithResult(_0x1346dd,_0x403816){_0x403816=_0x403816||0xc8;return function(_0x345302){if(_0x345302){return _0x1346dd[_0xf349('0x2b')](_0x403816)[_0xf349('0x2d')](_0x345302);}};}function respondWithFilteredResult(_0x53aa55,_0x58e542){return function(_0x554bc4){if(_0x554bc4){var _0x4f2ae2=_0x554bc4['count'],_0x38d1e5=_0x58e542['offset'],_0x4938fa=_0x58e542['offset']+_0x58e542['limit'],_0x1bd380;if(_0x4938fa>=_0x4f2ae2){_0x4938fa=_0x4f2ae2;_0x1bd380=0xc8;}else{_0x1bd380=0xce;}_0x53aa55[_0xf349('0x2b')](_0x1bd380);return _0x53aa55[_0xf349('0x2e')](_0xf349('0x2f'),_0x38d1e5+'-'+_0x4938fa+'/'+_0x4f2ae2)[_0xf349('0x2d')](_0x554bc4);}return null;};}function patchUpdates(_0x32142f){return function(_0x51329b){try{jsonpatch['apply'](_0x51329b,_0x32142f,!![]);}catch(_0x2c0f9c){return BPromise[_0xf349('0x30')](_0x2c0f9c);}return _0x51329b[_0xf349('0x31')]();};}function saveUpdates(_0x3c104a,_0x282545){return function(_0x5b08b7){if(_0x5b08b7){return _0x5b08b7[_0xf349('0x32')](_0x3c104a)[_0xf349('0x1f')](function(_0x4ed804){return _0x4ed804;});}return null;};}function removeEntity(_0x5ce13b,_0x530897){return function(_0x305122){if(_0x305122){return _0x305122[_0xf349('0x33')]()[_0xf349('0x1f')](function(){_0x5ce13b['status'](0xcc)[_0xf349('0x2c')]();});}};}function handleEntityNotFound(_0x21c1ec,_0x31fccc){return function(_0xc11a94){if(!_0xc11a94){_0x21c1ec[_0xf349('0x2a')](0x194);}return _0xc11a94;};}function handleError(_0x5eae93,_0x6dea95){_0x6dea95=_0x6dea95||0x1f4;return function(_0x5a1ac6){logger[_0xf349('0x26')](_0x5a1ac6[_0xf349('0x34')]);if(_0x5a1ac6[_0xf349('0x35')]){delete _0x5a1ac6[_0xf349('0x35')];}_0x5eae93[_0xf349('0x2b')](_0x6dea95)[_0xf349('0x36')](_0x5a1ac6);};}exports[_0xf349('0x37')]=function(_0x57dab6,_0x5192d0){var _0x4d80cb={},_0x3f7bc8={},_0x135c00={'count':0x0,'rows':[]};var _0x5a428d=_[_0xf349('0x38')](db[_0xf349('0x39')]['rawAttributes'],function(_0x1ae8a5){return{'name':_0x1ae8a5[_0xf349('0x3a')],'type':_0x1ae8a5[_0xf349('0x3b')][_0xf349('0x3c')]};});_0x3f7bc8[_0xf349('0x3d')]=_[_0xf349('0x38')](_0x5a428d,'name');_0x3f7bc8[_0xf349('0x3e')]=_['keys'](_0x57dab6['query']);_0x3f7bc8[_0xf349('0x3f')]=_[_0xf349('0x40')](_0x3f7bc8[_0xf349('0x3d')],_0x3f7bc8[_0xf349('0x3e')]);_0x4d80cb['attributes']=_[_0xf349('0x40')](_0x3f7bc8[_0xf349('0x3d')],qs['fields'](_0x57dab6[_0xf349('0x3e')]['fields']));_0x4d80cb['attributes']=_0x4d80cb[_0xf349('0x41')]['length']?_0x4d80cb[_0xf349('0x41')]:_0x3f7bc8['model'];if(!_0x57dab6[_0xf349('0x3e')][_0xf349('0x42')]('nolimit')){_0x4d80cb[_0xf349('0x43')]=qs[_0xf349('0x43')](_0x57dab6[_0xf349('0x3e')]['limit']);_0x4d80cb[_0xf349('0x44')]=qs[_0xf349('0x44')](_0x57dab6[_0xf349('0x3e')]['offset']);}_0x4d80cb[_0xf349('0x45')]=qs[_0xf349('0x46')](_0x57dab6[_0xf349('0x3e')][_0xf349('0x46')]);_0x4d80cb[_0xf349('0x47')]=qs[_0xf349('0x3f')](_['pick'](_0x57dab6[_0xf349('0x3e')],_0x3f7bc8[_0xf349('0x3f')]),_0x5a428d);if(_0x57dab6['query'][_0xf349('0x48')]){_0x4d80cb[_0xf349('0x47')]=_[_0xf349('0x49')](_0x4d80cb[_0xf349('0x47')],{'$or':_[_0xf349('0x38')](_0x5a428d,function(_0x51fed8){if(_0x51fed8[_0xf349('0x3b')]!==_0xf349('0x4a')){var _0x1cb03a={};_0x1cb03a[_0x51fed8[_0xf349('0x35')]]={'$like':'%'+_0x57dab6[_0xf349('0x3e')][_0xf349('0x48')]+'%'};return _0x1cb03a;}})});}_0x4d80cb=_['merge']({},_0x4d80cb,_0x57dab6['options']);var _0x5233c7={'where':_0x4d80cb[_0xf349('0x47')]};return db[_0xf349('0x39')][_0xf349('0x4b')](_0x5233c7)[_0xf349('0x1f')](function(_0x18e3fe){_0x135c00[_0xf349('0x4b')]=_0x18e3fe;if(_0x57dab6[_0xf349('0x3e')][_0xf349('0x4c')]){_0x4d80cb[_0xf349('0x4d')]=[{'all':!![]}];}return db[_0xf349('0x39')]['findAll'](_0x4d80cb);})['then'](function(_0x352e4f){_0x135c00['rows']=_0x352e4f;return _0x135c00;})[_0xf349('0x1f')](respondWithFilteredResult(_0x5192d0,_0x4d80cb))[_0xf349('0x4e')](handleError(_0x5192d0,null));};exports[_0xf349('0x4f')]=function(_0x465ca7,_0x4ff327){var _0x34f17c={'raw':!![],'where':{'id':_0x465ca7[_0xf349('0x50')]['id']}},_0x7a8b1={};_0x7a8b1[_0xf349('0x3d')]=_[_0xf349('0x51')](db[_0xf349('0x39')][_0xf349('0x52')]);_0x7a8b1[_0xf349('0x3e')]=_['keys'](_0x465ca7[_0xf349('0x3e')]);_0x7a8b1[_0xf349('0x3f')]=_[_0xf349('0x40')](_0x7a8b1[_0xf349('0x3d')],_0x7a8b1[_0xf349('0x3e')]);_0x34f17c['attributes']=_[_0xf349('0x40')](_0x7a8b1[_0xf349('0x3d')],qs[_0xf349('0x53')](_0x465ca7[_0xf349('0x3e')][_0xf349('0x53')]));_0x34f17c[_0xf349('0x41')]=_0x34f17c[_0xf349('0x41')][_0xf349('0x54')]?_0x34f17c['attributes']:_0x7a8b1['model'];if(_0x465ca7[_0xf349('0x3e')]['includeAll']){_0x34f17c[_0xf349('0x4d')]=[{'all':!![]}];}_0x34f17c=_[_0xf349('0x49')]({},_0x34f17c,_0x465ca7[_0xf349('0x55')]);return db[_0xf349('0x39')][_0xf349('0x56')](_0x34f17c)[_0xf349('0x1f')](handleEntityNotFound(_0x4ff327,null))[_0xf349('0x1f')](respondWithResult(_0x4ff327,null))['catch'](handleError(_0x4ff327,null));};exports['create']=function(_0x48c6be,_0x169b3e){return db[_0xf349('0x39')]['create'](_0x48c6be['body'],{})[_0xf349('0x1f')](respondWithResult(_0x169b3e,0xc9))[_0xf349('0x4e')](handleError(_0x169b3e,null));};exports['update']=function(_0x32a371,_0x46cc4e){if(_0x32a371[_0xf349('0x57')]['id']){delete _0x32a371[_0xf349('0x57')]['id'];}return db[_0xf349('0x39')][_0xf349('0x56')]({'where':{'id':_0x32a371[_0xf349('0x50')]['id']}})[_0xf349('0x1f')](handleEntityNotFound(_0x46cc4e,null))[_0xf349('0x1f')](saveUpdates(_0x32a371['body'],null))['then'](respondWithResult(_0x46cc4e,null))[_0xf349('0x4e')](handleError(_0x46cc4e,null));};exports['destroy']=function(_0x4979c7,_0x1264c4){return db[_0xf349('0x39')][_0xf349('0x56')]({'where':{'id':_0x4979c7[_0xf349('0x50')]['id']}})['then'](handleEntityNotFound(_0x1264c4,null))['then'](removeEntity(_0x1264c4,null))[_0xf349('0x4e')](handleError(_0x1264c4,null));};exports[_0xf349('0x58')]=function(_0x38b8d8,_0x4a2e7e){return db[_0xf349('0x39')][_0xf349('0x58')]()[_0xf349('0x1f')](respondWithResult(_0x4a2e7e,null))[_0xf349('0x4e')](handleError(_0x4a2e7e,null));};var interaction_log=require(_0xf349('0x16'))(_0xf349('0x59'));exports[_0xf349('0x5a')]=function(_0x125d26,_0x3a1ed0,_0x27c999){var _0x2f1e51={'agent':{},'channel':'whatsapp'};if(_0x125d26['body']['id']){delete _0x125d26[_0xf349('0x57')]['id'];}_0x125d26[_0xf349('0x57')]['read']=!![];_0x125d26[_0xf349('0x57')][_0xf349('0x5b')]=moment()[_0xf349('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0x125d26['body'][_0xf349('0x5d')]=_0x125d26[_0xf349('0x57')][_0xf349('0x5d')]||_0x125d26[_0xf349('0x5e')]['id'];_0x2f1e51[_0xf349('0x5f')]['id']=_0x125d26[_0xf349('0x57')][_0xf349('0x5d')];return db[_0xf349('0x39')][_0xf349('0x56')]({'where':{'id':_0x125d26[_0xf349('0x50')]['id'],'UserId':null},'include':[{'model':db[_0xf349('0x60')],'as':_0xf349('0x61')}]})[_0xf349('0x1f')](handleEntityNotFound(_0x3a1ed0,null))[_0xf349('0x1f')](saveUpdates(_0x125d26['body'],null))[_0xf349('0x1f')](function(_0x2e09a9){if(_0x2e09a9){_0x2f1e51[_0xf349('0x28')]=_0x2e09a9[_0xf349('0x62')]({'plain':!![]});return db[_0xf349('0x63')][_0xf349('0x56')]({'where':{'id':_0x2e09a9[_0xf349('0x64')]}});}return null;})[_0xf349('0x1f')](handleEntityNotFound(_0x3a1ed0,null))[_0xf349('0x1f')](function(_0x4c5b7b){if(_0x4c5b7b){return _0x4c5b7b[_0xf349('0x32')]({'UserId':_0x125d26[_0xf349('0x57')][_0xf349('0x5d')],'read1stAt':_['isNil'](_0x4c5b7b['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf349('0x1f')](function(_0x2e6e9a){if(_0x2e6e9a){_0x2f1e51['interaction']=_0x2e6e9a[_0xf349('0x62')]({'plain':!![]});interaction_log[_0xf349('0x20')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x125d26[_0xf349('0x5e')]['id'],_0x125d26[_0xf349('0x5e')][_0xf349('0x35')],_0x125d26[_0xf349('0x5e')][_0xf349('0x65')],_0x2f1e51[_0xf349('0x66')]['id'],_0x125d26[_0xf349('0x57')]?JSON[_0xf349('0x25')](_0x125d26[_0xf349('0x57')]):_0xf349('0x67'));return respondWithRpcPromise(_0xf349('0x68'),'acceptMessage',_0x2f1e51);}return null;})[_0xf349('0x1f')](function(_0x4247c5){if(_0x4247c5){if(_0x125d26['body'][_0xf349('0x69')]){_0x2f1e51[_0xf349('0x28')][_0xf349('0x6a')]=util[_0xf349('0x5c')](_0xf349('0x6b'),_0x125d26[_0xf349('0x5e')][_0xf349('0x35')]);_0x2f1e51[_0xf349('0x28')]['channel']=_0x2f1e51[_0xf349('0x6c')];_0x2f1e51[_0xf349('0x28')][_0xf349('0x6d')]=_0xf349('0x5a');return respondWithRpcPromise(_0xf349('0x6e'),_0xf349('0x6e'),{'event':_0xf349('0x6f'),'message':_0x2f1e51[_0xf349('0x28')]},client9002)['then'](function(){return _0x2f1e51;});}return _0x2f1e51;}return null;})[_0xf349('0x1f')](respondWithResult(_0x3a1ed0,null))['catch'](handleError(_0x3a1ed0,null));};var interaction_log=require(_0xf349('0x16'))(_0xf349('0x59'));exports[_0xf349('0x30')]=function(_0x1187b0,_0x31ae70,_0x4f1493){var _0x4c06fc={'agent':{},'channel':_0xf349('0x70')};if(_0x1187b0[_0xf349('0x57')]['id']){delete _0x1187b0['body']['id'];}_0x1187b0[_0xf349('0x57')]['UserId']=_0x1187b0['body'][_0xf349('0x5d')]||_0x1187b0['user']['id'];_0x4c06fc[_0xf349('0x5f')]['id']=_0x1187b0[_0xf349('0x57')][_0xf349('0x5d')];return db[_0xf349('0x39')]['find']({'where':{'id':_0x1187b0[_0xf349('0x50')]['id'],'UserId':null}})[_0xf349('0x1f')](handleEntityNotFound(_0x31ae70,null))[_0xf349('0x1f')](function(_0x1d062b){if(_0x1d062b){_0x4c06fc[_0xf349('0x28')]=_0x1d062b[_0xf349('0x62')]({'plain':!![]});return db[_0xf349('0x63')]['find']({'where':{'id':_0x1d062b['WhatsappInteractionId']}});}return null;})[_0xf349('0x1f')](handleEntityNotFound(_0x31ae70,null))['then'](function(_0x3b2d2b){if(_0x3b2d2b){_0x4c06fc['interaction']=_0x3b2d2b['get']({'plain':!![]});interaction_log['info'](_0xf349('0x71'),_0x1187b0[_0xf349('0x5e')]['id'],_0x1187b0['user'][_0xf349('0x35')],_0x1187b0[_0xf349('0x5e')]['role'],_0x4c06fc['interaction']['id'],_0x1187b0[_0xf349('0x57')]?JSON[_0xf349('0x25')](_0x1187b0[_0xf349('0x57')]):_0xf349('0x67'));return respondWithRpcPromise(_0xf349('0x72'),_0xf349('0x73'),_0x4c06fc);}return null;})[_0xf349('0x1f')](function(_0x4e8875){if(_0x4e8875){_0x4e8875[_0xf349('0x28')]['interface']=util[_0xf349('0x5c')](_0xf349('0x6b'),_0x1187b0['user'][_0xf349('0x35')]);_0x4e8875[_0xf349('0x28')][_0xf349('0x6c')]=_0x4c06fc[_0xf349('0x6c')];_0x4e8875[_0xf349('0x28')]['event']='reject';respondWithRpcPromise('EventManager',_0xf349('0x6e'),{'event':_0xf349('0x74'),'message':_0x4e8875[_0xf349('0x28')]},client9002);return _0x4c06fc;}return null;})[_0xf349('0x1f')](respondWithResult(_0x31ae70,null))['catch'](handleError(_0x31ae70,null));};exports[_0xf349('0x2b')]=function(_0x2bb713,_0x1e1afc,_0x2f2328){if(_0x2bb713[_0xf349('0x57')]['id']){delete _0x2bb713['body']['id'];}var _0x4db0c9;return db[_0xf349('0x39')][_0xf349('0x56')]({'where':{'id':_0x2bb713['params']['id']}})['then'](handleEntityNotFound(_0x1e1afc,null))['then'](function(_0x1449c8){if(_0x1449c8){_0x4db0c9=_0x1449c8;return db[_0xf349('0x75')][_0xf349('0x56')]({'where':{'id':_0x1449c8[_0xf349('0x76')]}});}})['then'](handleEntityNotFound(_0x1e1afc,null))[_0xf349('0x1f')](function(_0x420be1){if(_0x420be1){logger[_0xf349('0x23')](_0xf349('0x77'),_0xf349('0x2b'),_0xf349('0x78'),_0x420be1[_0xf349('0x3b')],util['inspect'](_0x2bb713[_0xf349('0x57')],{'showHidden':![],'depth':null}));switch(_0x420be1[_0xf349('0x3b')]){case'twilio':if(_0x2bb713['body'][_0xf349('0x79')]&&_0x2bb713['body']['MessageSid']===_0x4db0c9[_0xf349('0x7a')]&&_0x2bb713['body'][_0xf349('0x7b')]&&_0x2bb713[_0xf349('0x57')][_0xf349('0x7b')]==='read'){return _0x4db0c9[_0xf349('0x32')]({'read':!![]});}else{logger[_0xf349('0x26')](_0xf349('0x7c'),_0xf349('0x2b'),_0xf349('0x7d'),util[_0xf349('0x7e')](_0x2bb713[_0xf349('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x4db0c9;}})[_0xf349('0x1f')](respondWithResult(_0x1e1afc,null))['catch'](handleError(_0x1e1afc,null));};