1b43b307af490099c571fb6af71b3f3039f994de
[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 _0xdb24=['fullname','internal','format','channel','motionChannel','event','EventManager','rejectmessage','WhatsappAccount','WhatsappAccountId','received\x20delivery\x20report\x20from','MessageSid','messageId','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','./whatsappMessage.socket','register','client','http','whatsapp-interactions','request','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','info','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','WhatsappMessage','rawAttributes','type','key','model','map','query','intersection','attributes','fields','hasOwnProperty','order','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','find','create','body','describe','accept','whatsapp','acceptMessage','reject','UserId','agent','get','WhatsappInteractionId','interaction','user','role','stringify','null','ContactId','Sequelize','QueryTypes','SELECT','contact','User'];(function(_0x424501,_0x42096d){var _0xb719af=function(_0x37adcf){while(--_0x37adcf){_0x424501['push'](_0x424501['shift']());}};_0xb719af(++_0x42096d);}(_0xdb24,0x153));var _0x4db2=function(_0x131f37,_0x1fdb32){_0x131f37=_0x131f37-0x0;var _0x272809=_0xdb24[_0x131f37];return _0x272809;};'use strict';var util=require('util');var _=require(_0x4db2('0x0'));var Redis=require(_0x4db2('0x1'));var interactionService=require(_0x4db2('0x2'));var qs=require(_0x4db2('0x3'));var logger=require(_0x4db2('0x4'))(_0x4db2('0x5'));var config=require(_0x4db2('0x6'));var db=require(_0x4db2('0x7'))['db'];config['redis']=_['defaults'](config[_0x4db2('0x8')],{'host':_0x4db2('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4db2('0x8')]));require(_0x4db2('0xa'))[_0x4db2('0xb')](socket);var jayson=require('jayson/promise');var client=jayson[_0x4db2('0xc')][_0x4db2('0xd')]({'port':0x232c});var client9002=jayson[_0x4db2('0xc')][_0x4db2('0xd')]({'port':0x232a});var interaction_log=require('../../config/logger')(_0x4db2('0xe'));function respondWithRpcPromise(_0xc7e35d,_0x3971e9,_0x3a9c0c,_0xd71079){return new Promise(function(_0x2558d5,_0x4c0e11){var _0x378d7c=_0xd71079||client;return _0x378d7c[_0x4db2('0xf')](_0xc7e35d,_0x3a9c0c)[_0x4db2('0x10')](function(_0x746ac1){logger['info'](_0x4db2('0x11'),_0x3971e9,_0x4db2('0x12'));logger[_0x4db2('0x13')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x3971e9,_0x4db2('0x12'),JSON['stringify'](_0x746ac1));if(_0x746ac1[_0x4db2('0x14')]){if(_0x746ac1[_0x4db2('0x14')]['code']===0x1f4){logger[_0x4db2('0x14')](_0x4db2('0x11'),_0x3971e9,_0x746ac1['error'][_0x4db2('0x15')]);return _0x4c0e11(_0x746ac1[_0x4db2('0x14')][_0x4db2('0x15')]);}logger[_0x4db2('0x14')](_0x4db2('0x11'),_0x3971e9,_0x746ac1[_0x4db2('0x14')][_0x4db2('0x15')]);return _0x2558d5(_0x746ac1[_0x4db2('0x14')][_0x4db2('0x15')]);}else{logger[_0x4db2('0x16')](_0x4db2('0x11'),_0x3971e9,'request\x20sent');_0x2558d5(_0x746ac1[_0x4db2('0x17')]['message']);}})[_0x4db2('0x18')](function(_0x179e61){logger[_0x4db2('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x3971e9,_0x179e61);_0x4c0e11(_0x179e61);});});}function respondWithResult(_0x223724,_0x5cafe6){_0x5cafe6=_0x5cafe6||0xc8;return function(_0x4f0b93){if(_0x4f0b93){return _0x223724[_0x4db2('0x19')](_0x5cafe6)[_0x4db2('0x1a')](_0x4f0b93);}};}function respondWithFilteredResult(_0x343906,_0x485077){return function(_0xc404fc){if(_0xc404fc){var _0x377b2e=typeof _0x485077[_0x4db2('0x1b')]===_0x4db2('0x1c')&&typeof _0x485077[_0x4db2('0x1d')]===_0x4db2('0x1c');var _0xd44214=_0xc404fc[_0x4db2('0x1e')];var _0x552e34=_0x377b2e?0x0:_0x485077[_0x4db2('0x1b')];var _0x133e82=_0x377b2e?_0xc404fc[_0x4db2('0x1e')]:_0x485077[_0x4db2('0x1b')]+_0x485077[_0x4db2('0x1d')];var _0x58793c;if(_0x133e82>=_0xd44214){_0x133e82=_0xd44214;_0x58793c=0xc8;}else{_0x58793c=0xce;}_0x343906['status'](_0x58793c);return _0x343906[_0x4db2('0x1f')](_0x4db2('0x20'),_0x552e34+'-'+_0x133e82+'/'+_0xd44214)[_0x4db2('0x1a')](_0xc404fc);}return null;};}function saveUpdates(_0x44588f){return function(_0x2fb512){if(_0x2fb512){return _0x2fb512[_0x4db2('0x21')](_0x44588f)[_0x4db2('0x10')](function(_0x2023cf){return _0x2023cf;});}return null;};}function removeEntity(_0x576c7c){return function(_0x130de7){if(_0x130de7){return _0x130de7[_0x4db2('0x22')]()['then'](function(){_0x576c7c[_0x4db2('0x19')](0xcc)[_0x4db2('0x23')]();});}};}function handleEntityNotFound(_0x53fffe){return function(_0x5aea14){if(!_0x5aea14){_0x53fffe[_0x4db2('0x24')](0x194);}return _0x5aea14;};}function handleError(_0x15e114,_0x4e05c1){_0x4e05c1=_0x4e05c1||0x1f4;return function(_0x5d49b1){logger['error'](_0x5d49b1[_0x4db2('0x25')]);if(_0x5d49b1['name']){delete _0x5d49b1[_0x4db2('0x26')];}_0x15e114[_0x4db2('0x19')](_0x4e05c1)[_0x4db2('0x27')](_0x5d49b1);};}exports['index']=function(_0x45d731,_0x3d6be5){var _0xef2edc={},_0x4997a2={},_0x316b67={'count':0x0,'rows':[]};var _0x168db8=_['map'](db[_0x4db2('0x28')][_0x4db2('0x29')],function(_0x4c8b75){return{'name':_0x4c8b75['fieldName'],'type':_0x4c8b75[_0x4db2('0x2a')][_0x4db2('0x2b')]};});_0x4997a2[_0x4db2('0x2c')]=_[_0x4db2('0x2d')](_0x168db8,_0x4db2('0x26'));_0x4997a2['query']=_['keys'](_0x45d731[_0x4db2('0x2e')]);_0x4997a2['filters']=_[_0x4db2('0x2f')](_0x4997a2['model'],_0x4997a2[_0x4db2('0x2e')]);_0xef2edc[_0x4db2('0x30')]=_[_0x4db2('0x2f')](_0x4997a2[_0x4db2('0x2c')],qs[_0x4db2('0x31')](_0x45d731[_0x4db2('0x2e')]['fields']));_0xef2edc['attributes']=_0xef2edc[_0x4db2('0x30')]['length']?_0xef2edc[_0x4db2('0x30')]:_0x4997a2[_0x4db2('0x2c')];if(!_0x45d731[_0x4db2('0x2e')][_0x4db2('0x32')]('nolimit')){_0xef2edc[_0x4db2('0x1d')]=qs[_0x4db2('0x1d')](_0x45d731['query'][_0x4db2('0x1d')]);_0xef2edc[_0x4db2('0x1b')]=qs['offset'](_0x45d731[_0x4db2('0x2e')][_0x4db2('0x1b')]);}_0xef2edc[_0x4db2('0x33')]=qs['sort'](_0x45d731[_0x4db2('0x2e')]['sort']);_0xef2edc['where']=qs[_0x4db2('0x34')](_[_0x4db2('0x35')](_0x45d731[_0x4db2('0x2e')],_0x4997a2[_0x4db2('0x34')]),_0x168db8);if(_0x45d731['query'][_0x4db2('0x36')]){_0xef2edc[_0x4db2('0x37')]=_[_0x4db2('0x38')](_0xef2edc['where'],{'$or':_[_0x4db2('0x2d')](_0x168db8,function(_0x301a28){if(_0x301a28[_0x4db2('0x2a')]!==_0x4db2('0x39')){var _0x251daa={};_0x251daa[_0x301a28[_0x4db2('0x26')]]={'$like':'%'+_0x45d731[_0x4db2('0x2e')][_0x4db2('0x36')]+'%'};return _0x251daa;}})});}_0xef2edc=_[_0x4db2('0x38')]({},_0xef2edc,_0x45d731[_0x4db2('0x3a')]);var _0x3aba82={'where':_0xef2edc['where']};return db[_0x4db2('0x28')][_0x4db2('0x1e')](_0x3aba82)[_0x4db2('0x10')](function(_0x106302){_0x316b67['count']=_0x106302;if(_0x45d731[_0x4db2('0x2e')][_0x4db2('0x3b')]){_0xef2edc[_0x4db2('0x3c')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x4db2('0x3d')](_0xef2edc);})[_0x4db2('0x10')](function(_0x246bc8){_0x316b67[_0x4db2('0x3e')]=_0x246bc8;return _0x316b67;})[_0x4db2('0x10')](respondWithFilteredResult(_0x3d6be5,_0xef2edc))['catch'](handleError(_0x3d6be5,null));};exports[_0x4db2('0x3f')]=function(_0x55bc6a,_0xa5dfb5){var _0x768a13={'raw':!![],'where':{'id':_0x55bc6a[_0x4db2('0x40')]['id']}},_0x425bb2={};_0x425bb2[_0x4db2('0x2c')]=_[_0x4db2('0x41')](db[_0x4db2('0x28')][_0x4db2('0x29')]);_0x425bb2[_0x4db2('0x2e')]=_[_0x4db2('0x41')](_0x55bc6a[_0x4db2('0x2e')]);_0x425bb2[_0x4db2('0x34')]=_[_0x4db2('0x2f')](_0x425bb2['model'],_0x425bb2[_0x4db2('0x2e')]);_0x768a13[_0x4db2('0x30')]=_['intersection'](_0x425bb2[_0x4db2('0x2c')],qs['fields'](_0x55bc6a[_0x4db2('0x2e')][_0x4db2('0x31')]));_0x768a13['attributes']=_0x768a13['attributes']['length']?_0x768a13[_0x4db2('0x30')]:_0x425bb2[_0x4db2('0x2c')];if(_0x55bc6a['query'][_0x4db2('0x3b')]){_0x768a13[_0x4db2('0x3c')]=[{'all':!![]}];}_0x768a13=_[_0x4db2('0x38')]({},_0x768a13,_0x55bc6a[_0x4db2('0x3a')]);return db[_0x4db2('0x28')][_0x4db2('0x42')](_0x768a13)[_0x4db2('0x10')](handleEntityNotFound(_0xa5dfb5,null))['then'](respondWithResult(_0xa5dfb5,null))[_0x4db2('0x18')](handleError(_0xa5dfb5,null));};exports[_0x4db2('0x43')]=function(_0x4ae9e0,_0x5dd573){return db[_0x4db2('0x28')][_0x4db2('0x43')](_0x4ae9e0[_0x4db2('0x44')],{})['then'](respondWithResult(_0x5dd573,0xc9))[_0x4db2('0x18')](handleError(_0x5dd573,null));};exports['update']=function(_0x3fc5b4,_0x4b6f3d){if(_0x3fc5b4[_0x4db2('0x44')]['id']){delete _0x3fc5b4['body']['id'];}return db[_0x4db2('0x28')][_0x4db2('0x42')]({'where':{'id':_0x3fc5b4[_0x4db2('0x40')]['id']}})[_0x4db2('0x10')](handleEntityNotFound(_0x4b6f3d,null))[_0x4db2('0x10')](saveUpdates(_0x3fc5b4['body'],null))[_0x4db2('0x10')](respondWithResult(_0x4b6f3d,null))[_0x4db2('0x18')](handleError(_0x4b6f3d,null));};exports['destroy']=function(_0x2da132,_0x2dc990){return db[_0x4db2('0x28')][_0x4db2('0x42')]({'where':{'id':_0x2da132['params']['id']}})[_0x4db2('0x10')](handleEntityNotFound(_0x2dc990,null))['then'](removeEntity(_0x2dc990,null))[_0x4db2('0x18')](handleError(_0x2dc990,null));};exports[_0x4db2('0x45')]=function(_0x37358f,_0x138c8d){return db[_0x4db2('0x28')][_0x4db2('0x45')]()[_0x4db2('0x10')](respondWithResult(_0x138c8d,null))[_0x4db2('0x18')](handleError(_0x138c8d,null));};exports[_0x4db2('0x46')]=function(_0x1f29ee,_0x54ba1e){var _0x1d88ae=_0x4db2('0x47');return interactionService[_0x4db2('0x48')](_0x1f29ee,_0x1d88ae)[_0x4db2('0x10')](respondWithResult(_0x54ba1e,null))[_0x4db2('0x18')](handleError(_0x54ba1e,null));};exports[_0x4db2('0x49')]=function(_0x1981b9,_0x5913bb){var _0x4fd0b3={'agent':{},'channel':_0x4db2('0x47')};if(_0x1981b9[_0x4db2('0x44')]['id']){delete _0x1981b9['body']['id'];}_0x1981b9['body']['UserId']=_0x1981b9[_0x4db2('0x44')][_0x4db2('0x4a')]||_0x1981b9['user']['id'];_0x4fd0b3[_0x4db2('0x4b')]['id']=_0x1981b9[_0x4db2('0x44')][_0x4db2('0x4a')];return db[_0x4db2('0x28')]['find']({'where':{'id':_0x1981b9[_0x4db2('0x40')]['id'],'UserId':null}})[_0x4db2('0x10')](handleEntityNotFound(_0x5913bb,null))[_0x4db2('0x10')](function(_0x374bde){if(_0x374bde){_0x4fd0b3[_0x4db2('0x15')]=_0x374bde[_0x4db2('0x4c')]({'plain':!![]});return db['WhatsappInteraction'][_0x4db2('0x42')]({'where':{'id':_0x374bde[_0x4db2('0x4d')]}});}return null;})[_0x4db2('0x10')](handleEntityNotFound(_0x5913bb,null))['then'](function(_0x3e1328){if(_0x3e1328){_0x4fd0b3[_0x4db2('0x4e')]=_0x3e1328[_0x4db2('0x4c')]({'plain':!![]});interaction_log[_0x4db2('0x16')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1981b9[_0x4db2('0x4f')]['id'],_0x1981b9[_0x4db2('0x4f')]['name'],_0x1981b9[_0x4db2('0x4f')][_0x4db2('0x50')],_0x4fd0b3[_0x4db2('0x4e')]['id'],_0x1981b9[_0x4db2('0x44')]?JSON[_0x4db2('0x51')](_0x1981b9['body']):_0x4db2('0x52'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x4fd0b3);}return null;})['then'](function(_0x27287c){var _0x2ad2e4='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x27287c[_0x4db2('0x15')][_0x4db2('0x53')];return db['sequelize'][_0x4db2('0x2e')](_0x2ad2e4,{'type':db[_0x4db2('0x54')][_0x4db2('0x55')][_0x4db2('0x56')],'raw':!![]})[_0x4db2('0x10')](function(_0xc8b14b){return _0xc8b14b;});})[_0x4db2('0x10')](function(_0x224dbf){if(_0x224dbf){_0x4fd0b3[_0x4db2('0x15')][_0x4db2('0x57')]=_0x224dbf[0x0];if(!_0x1981b9[_0x4db2('0x44')]['UserId'])return;return db[_0x4db2('0x58')]['find']({'where':{'id':_0x1981b9[_0x4db2('0x44')][_0x4db2('0x4a')],'role':'agent'},'attributes':['id','name',_0x4db2('0x59'),'email',_0x4db2('0x5a')],'raw':!![]});}return null;})['then'](function(_0x267594){if(!_0x267594)return null;_0x4fd0b3[_0x4db2('0x15')][_0x4db2('0x4b')]=_0x267594;return _0x4fd0b3;})['then'](function(_0x2fa3de){if(_0x2fa3de){_0x2fa3de[_0x4db2('0x15')]['interface']=util[_0x4db2('0x5b')]('SIP/%s',_0x1981b9[_0x4db2('0x4f')][_0x4db2('0x26')]);_0x2fa3de[_0x4db2('0x15')][_0x4db2('0x5c')]=_0x4fd0b3[_0x4db2('0x5c')];_0x2fa3de[_0x4db2('0x15')][_0x4db2('0x5d')]=_0x4fd0b3[_0x4db2('0x5c')];_0x2fa3de[_0x4db2('0x15')][_0x4db2('0x5e')]=_0x4db2('0x49');respondWithRpcPromise(_0x4db2('0x5f'),_0x4db2('0x5f'),{'event':_0x4db2('0x60'),'message':_0x2fa3de[_0x4db2('0x15')]},client9002);return _0x4fd0b3;}return null;})[_0x4db2('0x10')](respondWithResult(_0x5913bb,null))[_0x4db2('0x18')](handleError(_0x5913bb,null));};exports[_0x4db2('0x19')]=function(_0x12d844,_0x5dce0f){if(_0x12d844['body']['id']){delete _0x12d844[_0x4db2('0x44')]['id'];}var _0x3aa5cd;return db[_0x4db2('0x28')][_0x4db2('0x42')]({'where':{'id':_0x12d844['params']['id']}})[_0x4db2('0x10')](handleEntityNotFound(_0x5dce0f,null))['then'](function(_0x340a12){if(_0x340a12){_0x3aa5cd=_0x340a12;return db[_0x4db2('0x61')]['find']({'where':{'id':_0x340a12[_0x4db2('0x62')]}});}})[_0x4db2('0x10')](handleEntityNotFound(_0x5dce0f,null))[_0x4db2('0x10')](function(_0x353de2){if(_0x353de2){logger[_0x4db2('0x13')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0x4db2('0x19'),_0x4db2('0x63'),_0x353de2[_0x4db2('0x2a')],util['inspect'](_0x12d844[_0x4db2('0x44')],{'showHidden':![],'depth':null}));switch(_0x353de2[_0x4db2('0x2a')]){case'twilio':if(_0x12d844[_0x4db2('0x44')][_0x4db2('0x64')]&&_0x12d844[_0x4db2('0x44')]['MessageSid']===_0x3aa5cd[_0x4db2('0x65')]&&_0x12d844['body'][_0x4db2('0x66')]&&_0x12d844[_0x4db2('0x44')][_0x4db2('0x66')]===_0x4db2('0x67')){return _0x3aa5cd[_0x4db2('0x21')]({'read':!![]});}else{logger[_0x4db2('0x14')](_0x4db2('0x68'),_0x4db2('0x19'),_0x4db2('0x69'),util[_0x4db2('0x6a')](_0x12d844['body'],{'showHidden':![],'depth':null}));}break;}return _0x3aa5cd;}})[_0x4db2('0x10')](respondWithResult(_0x5dce0f,null))['catch'](handleError(_0x5dce0f,null));};