bb374de0736e307b5ef97857bf65b3f259e5c900
[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 _0xab76=['include','findAll','rows','show','params','keys','includeAll','find','create','body','destroy','describe','accept','whatsapp','UserId','agent','get','WhatsappInteraction','WhatsappInteractionId','interaction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','RejectMessage','rejectMessage','sequelize','QueryTypes','SELECT','contact','fullname','internal','SIP/%s','channel','event','EventManager','rejectmessage','WhatsappAccount','WhatsappAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','WhatsappAccount,\x20%s,\x20%s,\x20%s','util','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','client','whatsapp-interactions','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','json','undefined','count','offset','limit','status','set','Content-Range','update','then','end','sendStatus','name','send','map','WhatsappMessage','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x64ab38,_0x477a0c){var _0x4c93d9=function(_0x23ab68){while(--_0x23ab68){_0x64ab38['push'](_0x64ab38['shift']());}};_0x4c93d9(++_0x477a0c);}(_0xab76,0x1cc));var _0x6ab7=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xab76[_0x618414];return _0x21c19a;};'use strict';var util=require(_0x6ab7('0x0'));var _=require(_0x6ab7('0x1'));var Redis=require(_0x6ab7('0x2'));var interactionService=require(_0x6ab7('0x3'));var qs=require(_0x6ab7('0x4'));var logger=require('../../config/logger')('api');var config=require(_0x6ab7('0x5'));var db=require(_0x6ab7('0x6'))['db'];config[_0x6ab7('0x7')]=_[_0x6ab7('0x8')](config[_0x6ab7('0x7')],{'host':_0x6ab7('0x9'),'port':0x18eb});var socket=require(_0x6ab7('0xa'))(new Redis(config[_0x6ab7('0x7')]));require(_0x6ab7('0xb'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x6ab7('0xc')]['http']({'port':0x232c});var client9002=jayson[_0x6ab7('0xc')]['http']({'port':0x232a});var interaction_log=require('../../config/logger')(_0x6ab7('0xd'));function respondWithRpcPromise(_0x1d2f1e,_0x4d1366,_0x5c548f,_0x4f0854){return new Promise(function(_0x2b73fe,_0x2786f2){var _0xe9b4b5=_0x4f0854||client;return _0xe9b4b5[_0x6ab7('0xe')](_0x1d2f1e,_0x5c548f)['then'](function(_0x548921){logger[_0x6ab7('0xf')](_0x6ab7('0x10'),_0x4d1366,_0x6ab7('0x11'));logger[_0x6ab7('0x12')](_0x6ab7('0x13'),_0x4d1366,'request\x20sent',JSON[_0x6ab7('0x14')](_0x548921));if(_0x548921[_0x6ab7('0x15')]){if(_0x548921[_0x6ab7('0x15')][_0x6ab7('0x16')]===0x1f4){logger[_0x6ab7('0x15')](_0x6ab7('0x10'),_0x4d1366,_0x548921[_0x6ab7('0x15')][_0x6ab7('0x17')]);return _0x2786f2(_0x548921[_0x6ab7('0x15')][_0x6ab7('0x17')]);}logger[_0x6ab7('0x15')](_0x6ab7('0x10'),_0x4d1366,_0x548921[_0x6ab7('0x15')][_0x6ab7('0x17')]);return _0x2b73fe(_0x548921[_0x6ab7('0x15')][_0x6ab7('0x17')]);}else{logger[_0x6ab7('0xf')](_0x6ab7('0x10'),_0x4d1366,_0x6ab7('0x11'));_0x2b73fe(_0x548921[_0x6ab7('0x18')][_0x6ab7('0x17')]);}})[_0x6ab7('0x19')](function(_0x4fd060){logger['error'](_0x6ab7('0x10'),_0x4d1366,_0x4fd060);_0x2786f2(_0x4fd060);});});}function respondWithResult(_0x5abf9b,_0x121d8f){_0x121d8f=_0x121d8f||0xc8;return function(_0x314f19){if(_0x314f19){return _0x5abf9b['status'](_0x121d8f)[_0x6ab7('0x1a')](_0x314f19);}};}function respondWithFilteredResult(_0x1a3fc2,_0x3e426d){return function(_0x489d4b){if(_0x489d4b){var _0x2f4d54=typeof _0x3e426d['offset']==='undefined'&&typeof _0x3e426d['limit']===_0x6ab7('0x1b');var _0x1ce1d2=_0x489d4b[_0x6ab7('0x1c')];var _0x5cb9dc=_0x2f4d54?0x0:_0x3e426d[_0x6ab7('0x1d')];var _0x474068=_0x2f4d54?_0x489d4b[_0x6ab7('0x1c')]:_0x3e426d[_0x6ab7('0x1d')]+_0x3e426d[_0x6ab7('0x1e')];var _0xd3c53e;if(_0x474068>=_0x1ce1d2){_0x474068=_0x1ce1d2;_0xd3c53e=0xc8;}else{_0xd3c53e=0xce;}_0x1a3fc2[_0x6ab7('0x1f')](_0xd3c53e);return _0x1a3fc2[_0x6ab7('0x20')](_0x6ab7('0x21'),_0x5cb9dc+'-'+_0x474068+'/'+_0x1ce1d2)[_0x6ab7('0x1a')](_0x489d4b);}return null;};}function saveUpdates(_0x10c2b8){return function(_0x63afb0){if(_0x63afb0){return _0x63afb0[_0x6ab7('0x22')](_0x10c2b8)[_0x6ab7('0x23')](function(_0x499afc){return _0x499afc;});}return null;};}function removeEntity(_0x1748e1){return function(_0x2cb2da){if(_0x2cb2da){return _0x2cb2da['destroy']()['then'](function(){_0x1748e1['status'](0xcc)[_0x6ab7('0x24')]();});}};}function handleEntityNotFound(_0x53f597){return function(_0x52898d){if(!_0x52898d){_0x53f597[_0x6ab7('0x25')](0x194);}return _0x52898d;};}function handleError(_0x14b76d,_0x243f7c){_0x243f7c=_0x243f7c||0x1f4;return function(_0x3cfe2a){logger[_0x6ab7('0x15')](_0x3cfe2a['stack']);if(_0x3cfe2a['name']){delete _0x3cfe2a[_0x6ab7('0x26')];}_0x14b76d[_0x6ab7('0x1f')](_0x243f7c)[_0x6ab7('0x27')](_0x3cfe2a);};}exports['index']=function(_0x389399,_0x168322){var _0x13cd3c={},_0x327a34={},_0x56ccfe={'count':0x0,'rows':[]};var _0xd3992d=_[_0x6ab7('0x28')](db[_0x6ab7('0x29')][_0x6ab7('0x2a')],function(_0x4e5099){return{'name':_0x4e5099['fieldName'],'type':_0x4e5099[_0x6ab7('0x2b')]['key']};});_0x327a34[_0x6ab7('0x2c')]=_[_0x6ab7('0x28')](_0xd3992d,'name');_0x327a34['query']=_['keys'](_0x389399[_0x6ab7('0x2d')]);_0x327a34[_0x6ab7('0x2e')]=_[_0x6ab7('0x2f')](_0x327a34[_0x6ab7('0x2c')],_0x327a34[_0x6ab7('0x2d')]);_0x13cd3c['attributes']=_[_0x6ab7('0x2f')](_0x327a34['model'],qs[_0x6ab7('0x30')](_0x389399[_0x6ab7('0x2d')][_0x6ab7('0x30')]));_0x13cd3c[_0x6ab7('0x31')]=_0x13cd3c[_0x6ab7('0x31')][_0x6ab7('0x32')]?_0x13cd3c[_0x6ab7('0x31')]:_0x327a34[_0x6ab7('0x2c')];if(!_0x389399[_0x6ab7('0x2d')]['hasOwnProperty'](_0x6ab7('0x33'))){_0x13cd3c[_0x6ab7('0x1e')]=qs[_0x6ab7('0x1e')](_0x389399[_0x6ab7('0x2d')][_0x6ab7('0x1e')]);_0x13cd3c[_0x6ab7('0x1d')]=qs[_0x6ab7('0x1d')](_0x389399[_0x6ab7('0x2d')][_0x6ab7('0x1d')]);}_0x13cd3c[_0x6ab7('0x34')]=qs[_0x6ab7('0x35')](_0x389399['query'][_0x6ab7('0x35')]);_0x13cd3c[_0x6ab7('0x36')]=qs[_0x6ab7('0x2e')](_[_0x6ab7('0x37')](_0x389399[_0x6ab7('0x2d')],_0x327a34[_0x6ab7('0x2e')]),_0xd3992d);if(_0x389399[_0x6ab7('0x2d')][_0x6ab7('0x38')]){_0x13cd3c[_0x6ab7('0x36')]=_[_0x6ab7('0x39')](_0x13cd3c[_0x6ab7('0x36')],{'$or':_[_0x6ab7('0x28')](_0xd3992d,function(_0x52c453){if(_0x52c453['type']!==_0x6ab7('0x3a')){var _0x3602c8={};_0x3602c8[_0x52c453['name']]={'$like':'%'+_0x389399[_0x6ab7('0x2d')][_0x6ab7('0x38')]+'%'};return _0x3602c8;}})});}_0x13cd3c=_[_0x6ab7('0x39')]({},_0x13cd3c,_0x389399[_0x6ab7('0x3b')]);var _0x245a92={'where':_0x13cd3c[_0x6ab7('0x36')]};return db[_0x6ab7('0x29')][_0x6ab7('0x1c')](_0x245a92)[_0x6ab7('0x23')](function(_0x53600c){_0x56ccfe['count']=_0x53600c;if(_0x389399[_0x6ab7('0x2d')]['includeAll']){_0x13cd3c[_0x6ab7('0x3c')]=[{'all':!![]}];}return db[_0x6ab7('0x29')][_0x6ab7('0x3d')](_0x13cd3c);})['then'](function(_0x403a31){_0x56ccfe[_0x6ab7('0x3e')]=_0x403a31;return _0x56ccfe;})[_0x6ab7('0x23')](respondWithFilteredResult(_0x168322,_0x13cd3c))[_0x6ab7('0x19')](handleError(_0x168322,null));};exports[_0x6ab7('0x3f')]=function(_0x5eb99f,_0x447985){var _0x5b38fa={'raw':!![],'where':{'id':_0x5eb99f[_0x6ab7('0x40')]['id']}},_0x2ab4f9={};_0x2ab4f9[_0x6ab7('0x2c')]=_[_0x6ab7('0x41')](db['WhatsappMessage'][_0x6ab7('0x2a')]);_0x2ab4f9[_0x6ab7('0x2d')]=_[_0x6ab7('0x41')](_0x5eb99f[_0x6ab7('0x2d')]);_0x2ab4f9[_0x6ab7('0x2e')]=_['intersection'](_0x2ab4f9[_0x6ab7('0x2c')],_0x2ab4f9['query']);_0x5b38fa['attributes']=_[_0x6ab7('0x2f')](_0x2ab4f9[_0x6ab7('0x2c')],qs[_0x6ab7('0x30')](_0x5eb99f['query'][_0x6ab7('0x30')]));_0x5b38fa['attributes']=_0x5b38fa[_0x6ab7('0x31')][_0x6ab7('0x32')]?_0x5b38fa[_0x6ab7('0x31')]:_0x2ab4f9[_0x6ab7('0x2c')];if(_0x5eb99f[_0x6ab7('0x2d')][_0x6ab7('0x42')]){_0x5b38fa['include']=[{'all':!![]}];}_0x5b38fa=_[_0x6ab7('0x39')]({},_0x5b38fa,_0x5eb99f[_0x6ab7('0x3b')]);return db[_0x6ab7('0x29')][_0x6ab7('0x43')](_0x5b38fa)[_0x6ab7('0x23')](handleEntityNotFound(_0x447985,null))[_0x6ab7('0x23')](respondWithResult(_0x447985,null))[_0x6ab7('0x19')](handleError(_0x447985,null));};exports[_0x6ab7('0x44')]=function(_0x1a720f,_0x7b3e9f){return db['WhatsappMessage'][_0x6ab7('0x44')](_0x1a720f[_0x6ab7('0x45')],{})[_0x6ab7('0x23')](respondWithResult(_0x7b3e9f,0xc9))[_0x6ab7('0x19')](handleError(_0x7b3e9f,null));};exports['update']=function(_0x2c1e1b,_0x37f7d5){if(_0x2c1e1b[_0x6ab7('0x45')]['id']){delete _0x2c1e1b[_0x6ab7('0x45')]['id'];}return db[_0x6ab7('0x29')][_0x6ab7('0x43')]({'where':{'id':_0x2c1e1b['params']['id']}})[_0x6ab7('0x23')](handleEntityNotFound(_0x37f7d5,null))[_0x6ab7('0x23')](saveUpdates(_0x2c1e1b[_0x6ab7('0x45')],null))[_0x6ab7('0x23')](respondWithResult(_0x37f7d5,null))[_0x6ab7('0x19')](handleError(_0x37f7d5,null));};exports[_0x6ab7('0x46')]=function(_0x2f010f,_0x1f1504){return db[_0x6ab7('0x29')][_0x6ab7('0x43')]({'where':{'id':_0x2f010f['params']['id']}})[_0x6ab7('0x23')](handleEntityNotFound(_0x1f1504,null))[_0x6ab7('0x23')](removeEntity(_0x1f1504,null))['catch'](handleError(_0x1f1504,null));};exports[_0x6ab7('0x47')]=function(_0x1d2e00,_0x436ac6){return db[_0x6ab7('0x29')][_0x6ab7('0x47')]()[_0x6ab7('0x23')](respondWithResult(_0x436ac6,null))[_0x6ab7('0x19')](handleError(_0x436ac6,null));};exports[_0x6ab7('0x48')]=function(_0x30dd12,_0x495cbd){var _0x4cd762=_0x6ab7('0x49');return interactionService['acceptMessage'](_0x30dd12,_0x4cd762)['then'](respondWithResult(_0x495cbd,null))[_0x6ab7('0x19')](handleError(_0x495cbd,null));};exports['reject']=function(_0x137635,_0x51c51b){var _0x8e011f={'agent':{},'channel':_0x6ab7('0x49')};if(_0x137635[_0x6ab7('0x45')]['id']){delete _0x137635['body']['id'];}_0x137635[_0x6ab7('0x45')][_0x6ab7('0x4a')]=_0x137635[_0x6ab7('0x45')][_0x6ab7('0x4a')]||_0x137635['user']['id'];_0x8e011f[_0x6ab7('0x4b')]['id']=_0x137635[_0x6ab7('0x45')][_0x6ab7('0x4a')];return db[_0x6ab7('0x29')][_0x6ab7('0x43')]({'where':{'id':_0x137635[_0x6ab7('0x40')]['id'],'UserId':null}})[_0x6ab7('0x23')](handleEntityNotFound(_0x51c51b,null))[_0x6ab7('0x23')](function(_0xa1edbc){if(_0xa1edbc){_0x8e011f[_0x6ab7('0x17')]=_0xa1edbc[_0x6ab7('0x4c')]({'plain':!![]});return db[_0x6ab7('0x4d')][_0x6ab7('0x43')]({'where':{'id':_0xa1edbc[_0x6ab7('0x4e')]}});}return null;})[_0x6ab7('0x23')](handleEntityNotFound(_0x51c51b,null))[_0x6ab7('0x23')](function(_0x5b95ba){if(_0x5b95ba){_0x8e011f[_0x6ab7('0x4f')]=_0x5b95ba[_0x6ab7('0x4c')]({'plain':!![]});interaction_log['info'](_0x6ab7('0x50'),_0x137635['user']['id'],_0x137635[_0x6ab7('0x51')]['name'],_0x137635[_0x6ab7('0x51')]['role'],_0x8e011f[_0x6ab7('0x4f')]['id'],_0x137635['body']?JSON[_0x6ab7('0x14')](_0x137635[_0x6ab7('0x45')]):_0x6ab7('0x52'));return respondWithRpcPromise(_0x6ab7('0x53'),_0x6ab7('0x54'),_0x8e011f);}return null;})[_0x6ab7('0x23')](function(_0x2e4234){var _0x3a6a00='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2e4234[_0x6ab7('0x17')]['ContactId'];return db[_0x6ab7('0x55')][_0x6ab7('0x2d')](_0x3a6a00,{'type':db['Sequelize'][_0x6ab7('0x56')][_0x6ab7('0x57')],'raw':!![]})[_0x6ab7('0x23')](function(_0x5793d6){return _0x5793d6;});})['then'](function(_0x464784){if(_0x464784){_0x8e011f[_0x6ab7('0x17')][_0x6ab7('0x58')]=_0x464784[0x0];if(!_0x137635[_0x6ab7('0x45')][_0x6ab7('0x4a')])return;return db['User'][_0x6ab7('0x43')]({'where':{'id':_0x137635[_0x6ab7('0x45')][_0x6ab7('0x4a')],'role':_0x6ab7('0x4b')},'attributes':['id',_0x6ab7('0x26'),_0x6ab7('0x59'),'email',_0x6ab7('0x5a')],'raw':!![]});}return null;})[_0x6ab7('0x23')](function(_0x57e667){if(!_0x57e667)return null;_0x8e011f[_0x6ab7('0x17')][_0x6ab7('0x4b')]=_0x57e667;return _0x8e011f;})[_0x6ab7('0x23')](function(_0x1ad852){if(_0x1ad852){_0x1ad852[_0x6ab7('0x17')]['interface']=util['format'](_0x6ab7('0x5b'),_0x137635[_0x6ab7('0x51')]['name']);_0x1ad852['message'][_0x6ab7('0x5c')]=_0x8e011f['channel'];_0x1ad852['message']['motionChannel']=_0x8e011f['channel'];_0x1ad852[_0x6ab7('0x17')][_0x6ab7('0x5d')]='reject';respondWithRpcPromise(_0x6ab7('0x5e'),_0x6ab7('0x5e'),{'event':_0x6ab7('0x5f'),'message':_0x1ad852[_0x6ab7('0x17')]},client9002);return _0x8e011f;}return null;})[_0x6ab7('0x23')](respondWithResult(_0x51c51b,null))[_0x6ab7('0x19')](handleError(_0x51c51b,null));};exports['status']=function(_0x66d312,_0x5ce40f){if(_0x66d312[_0x6ab7('0x45')]['id']){delete _0x66d312[_0x6ab7('0x45')]['id'];}var _0x25b7be;return db[_0x6ab7('0x29')][_0x6ab7('0x43')]({'where':{'id':_0x66d312['params']['id']}})[_0x6ab7('0x23')](handleEntityNotFound(_0x5ce40f,null))['then'](function(_0x5815f2){if(_0x5815f2){_0x25b7be=_0x5815f2;return db[_0x6ab7('0x60')]['find']({'where':{'id':_0x5815f2[_0x6ab7('0x61')]}});}})[_0x6ab7('0x23')](handleEntityNotFound(_0x5ce40f,null))['then'](function(_0x132eab){if(_0x132eab){logger[_0x6ab7('0x12')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status',_0x6ab7('0x62'),_0x132eab[_0x6ab7('0x2b')],util[_0x6ab7('0x63')](_0x66d312[_0x6ab7('0x45')],{'showHidden':![],'depth':null}));switch(_0x132eab['type']){case _0x6ab7('0x64'):if(_0x66d312[_0x6ab7('0x45')][_0x6ab7('0x65')]&&_0x66d312[_0x6ab7('0x45')]['MessageSid']===_0x25b7be[_0x6ab7('0x66')]&&_0x66d312['body']['MessageStatus']&&_0x66d312['body']['MessageStatus']==='read'){return _0x25b7be[_0x6ab7('0x22')]({'read':!![]});}else{logger['error'](_0x6ab7('0x67'),_0x6ab7('0x1f'),_0x6ab7('0x64'),util[_0x6ab7('0x63')](_0x66d312[_0x6ab7('0x45')],{'showHidden':![],'depth':null}));}break;}return _0x25b7be;}})[_0x6ab7('0x23')](respondWithResult(_0x5ce40f,null))[_0x6ab7('0x19')](handleError(_0x5ce40f,null));};