e42ffa9b1e39c5da12c3314cf8984379fc5809be
[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 _0x1967=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','register','jayson/promise','http','request','then','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','WhatsappMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','offset','limit','Content-Range','json','apply','reject','save','destroy','end','stack','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','count','includeAll','findAll','keys','include','find','create','update','body','params','describe','whatsapp-interactions','accept','whatsapp','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','Contact','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','info','role','acceptMessage','manual','interface','channel','event','EventManager','acceptmessage','null','RejectMessage','rejectMessage','SIP/%s','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger'];(function(_0x1e9846,_0xab9a7){var _0x3f6e96=function(_0x454d39){while(--_0x454d39){_0x1e9846['push'](_0x1e9846['shift']());}};_0x3f6e96(++_0xab9a7);}(_0x1967,0x173));var _0x7196=function(_0x10a313,_0x12b09e){_0x10a313=_0x10a313-0x0;var _0x395faf=_0x1967[_0x10a313];return _0x395faf;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x7196('0x0'));var rimraf=require(_0x7196('0x1'));var zipdir=require(_0x7196('0x2'));var jsonpatch=require(_0x7196('0x3'));var rp=require(_0x7196('0x4'));var moment=require(_0x7196('0x5'));var BPromise=require(_0x7196('0x6'));var Mustache=require(_0x7196('0x7'));var util=require(_0x7196('0x8'));var path=require(_0x7196('0x9'));var sox=require('sox');var csv=require(_0x7196('0xa'));var ejs=require(_0x7196('0xb'));var fs=require('fs');var _=require(_0x7196('0xc'));var squel=require(_0x7196('0xd'));var crypto=require(_0x7196('0xe'));var jsforce=require(_0x7196('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7196('0xa'));var querystring=require(_0x7196('0x10'));var Papa=require(_0x7196('0x11'));var Redis=require(_0x7196('0x12'));var authService=require(_0x7196('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7196('0x14'));var logger=require(_0x7196('0x15'))(_0x7196('0x16'));var utils=require(_0x7196('0x17'));var config=require(_0x7196('0x18'));var licenseUtil=require(_0x7196('0x19'));var db=require(_0x7196('0x1a'))['db'];config[_0x7196('0x1b')]=_[_0x7196('0x1c')](config[_0x7196('0x1b')],{'host':_0x7196('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7196('0x1b')]));require(_0x7196('0x1e'))[_0x7196('0x1f')](socket);var jayson=require(_0x7196('0x20'));var client=jayson['client'][_0x7196('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x7196('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x2590a6,_0xf7e97,_0x3ed1ad,_0x12dce7){return new BPromise(function(_0x2e3e0e,_0x22bd62){var _0x1ed296=_0x12dce7||client;return _0x1ed296[_0x7196('0x22')](_0x2590a6,_0x3ed1ad)[_0x7196('0x23')](function(_0x385f2d){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0xf7e97,_0x7196('0x24'));logger[_0x7196('0x25')](_0x7196('0x26'),_0xf7e97,'request\x20sent',JSON[_0x7196('0x27')](_0x385f2d));if(_0x385f2d['error']){if(_0x385f2d['error'][_0x7196('0x28')]===0x1f4){logger[_0x7196('0x29')](_0x7196('0x2a'),_0xf7e97,_0x385f2d['error']['message']);return _0x22bd62(_0x385f2d[_0x7196('0x29')][_0x7196('0x2b')]);}logger['error'](_0x7196('0x2a'),_0xf7e97,_0x385f2d[_0x7196('0x29')][_0x7196('0x2b')]);return _0x2e3e0e(_0x385f2d[_0x7196('0x29')][_0x7196('0x2b')]);}else{logger['info'](_0x7196('0x2a'),_0xf7e97,'request\x20sent');_0x2e3e0e(_0x385f2d[_0x7196('0x2c')][_0x7196('0x2b')]);}})[_0x7196('0x2d')](function(_0xa69810){logger[_0x7196('0x29')](_0x7196('0x2a'),_0xf7e97,_0xa69810);_0x22bd62(_0xa69810);});});}function respondWithStatusCode(_0x530ab5,_0x57c404){_0x57c404=_0x57c404||0xcc;return function(_0x1482e5){if(_0x1482e5){return _0x530ab5[_0x7196('0x2e')](_0x57c404);}return _0x530ab5[_0x7196('0x2f')](_0x57c404)['end']();};}function respondWithResult(_0x5aa538,_0x41cfd2){_0x41cfd2=_0x41cfd2||0xc8;return function(_0x162cfc){if(_0x162cfc){return _0x5aa538[_0x7196('0x2f')](_0x41cfd2)['json'](_0x162cfc);}};}function respondWithFilteredResult(_0x35eef9,_0x4ecea1){return function(_0x4fd339){if(_0x4fd339){var _0x59d79d=_0x4fd339['count'],_0x30151f=_0x4ecea1[_0x7196('0x30')],_0x985727=_0x4ecea1[_0x7196('0x30')]+_0x4ecea1[_0x7196('0x31')],_0x1257ad;if(_0x985727>=_0x59d79d){_0x985727=_0x59d79d;_0x1257ad=0xc8;}else{_0x1257ad=0xce;}_0x35eef9[_0x7196('0x2f')](_0x1257ad);return _0x35eef9['set'](_0x7196('0x32'),_0x30151f+'-'+_0x985727+'/'+_0x59d79d)[_0x7196('0x33')](_0x4fd339);}return null;};}function patchUpdates(_0xd07f22){return function(_0x651d7e){try{jsonpatch[_0x7196('0x34')](_0x651d7e,_0xd07f22,!![]);}catch(_0x2786f3){return BPromise[_0x7196('0x35')](_0x2786f3);}return _0x651d7e[_0x7196('0x36')]();};}function saveUpdates(_0x354175,_0xf33b59){return function(_0x1ff4b4){if(_0x1ff4b4){return _0x1ff4b4['update'](_0x354175)[_0x7196('0x23')](function(_0x4fbe57){return _0x4fbe57;});}return null;};}function removeEntity(_0x2452f6,_0x4c3365){return function(_0x372ddc){if(_0x372ddc){return _0x372ddc[_0x7196('0x37')]()['then'](function(){_0x2452f6[_0x7196('0x2f')](0xcc)[_0x7196('0x38')]();});}};}function handleEntityNotFound(_0x4531d7,_0x3a56b4){return function(_0x7547cf){if(!_0x7547cf){_0x4531d7['sendStatus'](0x194);}return _0x7547cf;};}function handleError(_0x10b8c2,_0x2f68e2){_0x2f68e2=_0x2f68e2||0x1f4;return function(_0x2174ca){logger[_0x7196('0x29')](_0x2174ca[_0x7196('0x39')]);if(_0x2174ca[_0x7196('0x3a')]){delete _0x2174ca['name'];}_0x10b8c2[_0x7196('0x2f')](_0x2f68e2)[_0x7196('0x3b')](_0x2174ca);};}exports[_0x7196('0x3c')]=function(_0x4f6b27,_0x33831a){var _0x75530e={},_0xd72bd9={},_0xa24847={'count':0x0,'rows':[]};var _0x11d4ec=_[_0x7196('0x3d')](db[_0x7196('0x3e')][_0x7196('0x3f')],function(_0x92cfb1){return{'name':_0x92cfb1[_0x7196('0x40')],'type':_0x92cfb1['type'][_0x7196('0x41')]};});_0xd72bd9[_0x7196('0x42')]=_['map'](_0x11d4ec,_0x7196('0x3a'));_0xd72bd9['query']=_['keys'](_0x4f6b27[_0x7196('0x43')]);_0xd72bd9[_0x7196('0x44')]=_['intersection'](_0xd72bd9['model'],_0xd72bd9[_0x7196('0x43')]);_0x75530e[_0x7196('0x45')]=_[_0x7196('0x46')](_0xd72bd9['model'],qs[_0x7196('0x47')](_0x4f6b27[_0x7196('0x43')][_0x7196('0x47')]));_0x75530e[_0x7196('0x45')]=_0x75530e[_0x7196('0x45')][_0x7196('0x48')]?_0x75530e[_0x7196('0x45')]:_0xd72bd9[_0x7196('0x42')];if(!_0x4f6b27['query'][_0x7196('0x49')](_0x7196('0x4a'))){_0x75530e['limit']=qs[_0x7196('0x31')](_0x4f6b27[_0x7196('0x43')]['limit']);_0x75530e[_0x7196('0x30')]=qs[_0x7196('0x30')](_0x4f6b27[_0x7196('0x43')]['offset']);}_0x75530e[_0x7196('0x4b')]=qs[_0x7196('0x4c')](_0x4f6b27['query'][_0x7196('0x4c')]);_0x75530e[_0x7196('0x4d')]=qs['filters'](_[_0x7196('0x4e')](_0x4f6b27['query'],_0xd72bd9['filters']),_0x11d4ec);if(_0x4f6b27['query']['filter']){_0x75530e['where']=_[_0x7196('0x4f')](_0x75530e['where'],{'$or':_[_0x7196('0x3d')](_0x11d4ec,function(_0x3a659f){if(_0x3a659f[_0x7196('0x50')]!==_0x7196('0x51')){var _0x522fbd={};_0x522fbd[_0x3a659f[_0x7196('0x3a')]]={'$like':'%'+_0x4f6b27['query'][_0x7196('0x52')]+'%'};return _0x522fbd;}})});}_0x75530e=_[_0x7196('0x4f')]({},_0x75530e,_0x4f6b27[_0x7196('0x53')]);var _0x5e34e8={'where':_0x75530e[_0x7196('0x4d')]};return db[_0x7196('0x3e')][_0x7196('0x54')](_0x5e34e8)['then'](function(_0x4e2aad){_0xa24847[_0x7196('0x54')]=_0x4e2aad;if(_0x4f6b27['query'][_0x7196('0x55')]){_0x75530e['include']=[{'all':!![]}];}return db['WhatsappMessage'][_0x7196('0x56')](_0x75530e);})['then'](function(_0x48f5e7){_0xa24847['rows']=_0x48f5e7;return _0xa24847;})[_0x7196('0x23')](respondWithFilteredResult(_0x33831a,_0x75530e))['catch'](handleError(_0x33831a,null));};exports['show']=function(_0x28591e,_0x182c8b){var _0x2262d8={'raw':!![],'where':{'id':_0x28591e['params']['id']}},_0x1786fa={};_0x1786fa[_0x7196('0x42')]=_['keys'](db[_0x7196('0x3e')][_0x7196('0x3f')]);_0x1786fa['query']=_[_0x7196('0x57')](_0x28591e[_0x7196('0x43')]);_0x1786fa[_0x7196('0x44')]=_['intersection'](_0x1786fa[_0x7196('0x42')],_0x1786fa['query']);_0x2262d8[_0x7196('0x45')]=_[_0x7196('0x46')](_0x1786fa[_0x7196('0x42')],qs[_0x7196('0x47')](_0x28591e[_0x7196('0x43')][_0x7196('0x47')]));_0x2262d8[_0x7196('0x45')]=_0x2262d8[_0x7196('0x45')]['length']?_0x2262d8['attributes']:_0x1786fa[_0x7196('0x42')];if(_0x28591e[_0x7196('0x43')][_0x7196('0x55')]){_0x2262d8[_0x7196('0x58')]=[{'all':!![]}];}_0x2262d8=_['merge']({},_0x2262d8,_0x28591e[_0x7196('0x53')]);return db[_0x7196('0x3e')][_0x7196('0x59')](_0x2262d8)[_0x7196('0x23')](handleEntityNotFound(_0x182c8b,null))[_0x7196('0x23')](respondWithResult(_0x182c8b,null))[_0x7196('0x2d')](handleError(_0x182c8b,null));};exports[_0x7196('0x5a')]=function(_0x18b49b,_0x1f3c60){return db[_0x7196('0x3e')][_0x7196('0x5a')](_0x18b49b['body'],{})[_0x7196('0x23')](respondWithResult(_0x1f3c60,0xc9))[_0x7196('0x2d')](handleError(_0x1f3c60,null));};exports[_0x7196('0x5b')]=function(_0x48f196,_0x1f098c){if(_0x48f196['body']['id']){delete _0x48f196[_0x7196('0x5c')]['id'];}return db[_0x7196('0x3e')][_0x7196('0x59')]({'where':{'id':_0x48f196[_0x7196('0x5d')]['id']}})[_0x7196('0x23')](handleEntityNotFound(_0x1f098c,null))['then'](saveUpdates(_0x48f196[_0x7196('0x5c')],null))['then'](respondWithResult(_0x1f098c,null))['catch'](handleError(_0x1f098c,null));};exports['destroy']=function(_0x1bc358,_0x3be180){return db[_0x7196('0x3e')][_0x7196('0x59')]({'where':{'id':_0x1bc358[_0x7196('0x5d')]['id']}})[_0x7196('0x23')](handleEntityNotFound(_0x3be180,null))[_0x7196('0x23')](removeEntity(_0x3be180,null))['catch'](handleError(_0x3be180,null));};exports[_0x7196('0x5e')]=function(_0x14dc43,_0x2d14f4){return db[_0x7196('0x3e')][_0x7196('0x5e')]()['then'](respondWithResult(_0x2d14f4,null))['catch'](handleError(_0x2d14f4,null));};var interaction_log=require(_0x7196('0x15'))(_0x7196('0x5f'));exports[_0x7196('0x60')]=function(_0x799399,_0x14cb38,_0x43b9ac){var _0xe3fb61={'channel':_0x7196('0x61')};if(_0x799399[_0x7196('0x5c')]['id']){delete _0x799399[_0x7196('0x5c')]['id'];}_0x799399[_0x7196('0x5c')]['read']=!![];_0x799399[_0x7196('0x5c')][_0x7196('0x62')]=moment()[_0x7196('0x63')](_0x7196('0x64'));_0x799399['body'][_0x7196('0x65')]=_0x799399[_0x7196('0x5c')][_0x7196('0x65')]||_0x799399[_0x7196('0x66')]['id'];return db[_0x7196('0x3e')][_0x7196('0x59')]({'where':{'id':_0x799399[_0x7196('0x5d')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':_0x7196('0x67')}]})[_0x7196('0x23')](handleEntityNotFound(_0x14cb38,null))[_0x7196('0x23')](saveUpdates(_0x799399[_0x7196('0x5c')],null))['then'](function(_0x418a7a){if(_0x418a7a){_0xe3fb61[_0x7196('0x2b')]=_0x418a7a[_0x7196('0x68')]({'plain':!![]});return db[_0x7196('0x69')][_0x7196('0x59')]({'where':{'id':_0x418a7a[_0x7196('0x6a')]}});}return null;})[_0x7196('0x23')](handleEntityNotFound(_0x14cb38,null))['then'](function(_0x56b2eb){if(_0x56b2eb){return _0x56b2eb['update']({'UserId':_0x799399[_0x7196('0x5c')]['UserId'],'read1stAt':_[_0x7196('0x6b')](_0x56b2eb[_0x7196('0x6c')])?moment()[_0x7196('0x63')](_0x7196('0x64')):undefined});}return null;})[_0x7196('0x23')](function(_0x30d44f){if(_0x30d44f){_0xe3fb61[_0x7196('0x6d')]=_0x30d44f[_0x7196('0x68')]({'plain':!![]});interaction_log[_0x7196('0x6e')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x799399['user']['id'],_0x799399[_0x7196('0x66')][_0x7196('0x3a')],_0x799399[_0x7196('0x66')][_0x7196('0x6f')],_0xe3fb61[_0x7196('0x6d')]['id'],_0x799399[_0x7196('0x5c')]?JSON[_0x7196('0x27')](_0x799399[_0x7196('0x5c')]):'null');return respondWithRpcPromise('AcceptMessage',_0x7196('0x70'),_0xe3fb61);}return null;})['then'](function(_0x30d114){if(_0x30d114){if(_0x799399['body'][_0x7196('0x71')]){_0xe3fb61[_0x7196('0x2b')][_0x7196('0x72')]=util[_0x7196('0x63')]('SIP/%s',_0x799399['user'][_0x7196('0x3a')]);_0xe3fb61['message'][_0x7196('0x73')]=_0xe3fb61[_0x7196('0x73')];_0xe3fb61[_0x7196('0x2b')][_0x7196('0x74')]=_0x7196('0x60');return respondWithRpcPromise(_0x7196('0x75'),'EventManager',{'event':_0x7196('0x76'),'message':_0xe3fb61[_0x7196('0x2b')]},client9002)[_0x7196('0x23')](function(){return _0xe3fb61;});}return _0xe3fb61;}return null;})[_0x7196('0x23')](respondWithResult(_0x14cb38,null))[_0x7196('0x2d')](handleError(_0x14cb38,null));};var interaction_log=require(_0x7196('0x15'))(_0x7196('0x5f'));exports[_0x7196('0x35')]=function(_0x13cbe2,_0xa20de8,_0x3d3768){var _0x2181f5={'agent':{},'channel':'whatsapp'};if(_0x13cbe2[_0x7196('0x5c')]['id']){delete _0x13cbe2[_0x7196('0x5c')]['id'];}_0x13cbe2['body']['UserId']=_0x13cbe2[_0x7196('0x5c')][_0x7196('0x65')]||_0x13cbe2[_0x7196('0x66')]['id'];_0x2181f5['agent']['id']=_0x13cbe2[_0x7196('0x5c')]['UserId'];return db[_0x7196('0x3e')][_0x7196('0x59')]({'where':{'id':_0x13cbe2['params']['id'],'UserId':null}})[_0x7196('0x23')](handleEntityNotFound(_0xa20de8,null))['then'](function(_0x50d1f1){if(_0x50d1f1){_0x2181f5[_0x7196('0x2b')]=_0x50d1f1[_0x7196('0x68')]({'plain':!![]});return db[_0x7196('0x69')]['find']({'where':{'id':_0x50d1f1[_0x7196('0x6a')]}});}return null;})['then'](handleEntityNotFound(_0xa20de8,null))[_0x7196('0x23')](function(_0x36b828){if(_0x36b828){_0x2181f5[_0x7196('0x6d')]=_0x36b828[_0x7196('0x68')]({'plain':!![]});interaction_log[_0x7196('0x6e')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x13cbe2[_0x7196('0x66')]['id'],_0x13cbe2[_0x7196('0x66')][_0x7196('0x3a')],_0x13cbe2[_0x7196('0x66')][_0x7196('0x6f')],_0x2181f5[_0x7196('0x6d')]['id'],_0x13cbe2[_0x7196('0x5c')]?JSON[_0x7196('0x27')](_0x13cbe2['body']):_0x7196('0x77'));return respondWithRpcPromise(_0x7196('0x78'),_0x7196('0x79'),_0x2181f5);}return null;})[_0x7196('0x23')](function(_0x539584){if(_0x539584){_0x539584[_0x7196('0x2b')][_0x7196('0x72')]=util['format'](_0x7196('0x7a'),_0x13cbe2['user'][_0x7196('0x3a')]);_0x539584['message'][_0x7196('0x73')]=_0x2181f5[_0x7196('0x73')];_0x539584['message'][_0x7196('0x74')]=_0x7196('0x35');respondWithRpcPromise(_0x7196('0x75'),'EventManager',{'event':'rejectmessage','message':_0x539584[_0x7196('0x2b')]},client9002);return _0x2181f5;}return null;})['then'](respondWithResult(_0xa20de8,null))['catch'](handleError(_0xa20de8,null));};exports[_0x7196('0x2f')]=function(_0x72c765,_0xd7312c,_0x509c4a){if(_0x72c765[_0x7196('0x5c')]['id']){delete _0x72c765[_0x7196('0x5c')]['id'];}var _0x8b6e77;return db[_0x7196('0x3e')][_0x7196('0x59')]({'where':{'id':_0x72c765[_0x7196('0x5d')]['id']}})[_0x7196('0x23')](handleEntityNotFound(_0xd7312c,null))[_0x7196('0x23')](function(_0x32ba47){if(_0x32ba47){_0x8b6e77=_0x32ba47;return db[_0x7196('0x7b')][_0x7196('0x59')]({'where':{'id':_0x32ba47['WhatsappAccountId']}});}})['then'](handleEntityNotFound(_0xd7312c,null))[_0x7196('0x23')](function(_0x5d52a8){if(_0x5d52a8){logger['debug'](_0x7196('0x7c'),_0x7196('0x2f'),_0x7196('0x7d'),_0x5d52a8[_0x7196('0x50')],util['inspect'](_0x72c765['body'],{'showHidden':![],'depth':null}));switch(_0x5d52a8[_0x7196('0x50')]){case _0x7196('0x7e'):if(_0x72c765[_0x7196('0x5c')][_0x7196('0x7f')]&&_0x72c765['body'][_0x7196('0x7f')]===_0x8b6e77['messageId']&&_0x72c765['body'][_0x7196('0x80')]&&_0x72c765[_0x7196('0x5c')][_0x7196('0x80')]==='read'){return _0x8b6e77[_0x7196('0x5b')]({'read':!![]});}else{logger[_0x7196('0x29')](_0x7196('0x81'),_0x7196('0x2f'),_0x7196('0x7e'),util[_0x7196('0x82')](_0x72c765[_0x7196('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x8b6e77;}})[_0x7196('0x23')](respondWithResult(_0xd7312c,null))['catch'](handleError(_0xd7312c,null));};