34ffc01fdde2030e3cd7cefc1637cc7e05fe96c8
[motion2.git] / server / services / ami / trigger / integration / freshsales.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 _0x368c=['defaults','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','agentEmail','userEmail','email','User\x20found:','userId','Admin\x20selected','/api/lookup?q=','find','contacts','format','contactNumber','mobile_number','endUserId','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','add','ticketId','task','Task\x20created:','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/logger','freshsales','redis'];(function(_0x26234e,_0x5f35da){var _0x547c65=function(_0x3dad57){while(--_0x3dad57){_0x26234e['push'](_0x26234e['shift']());}};_0x547c65(++_0x5f35da);}(_0x368c,0x8f));var _0xc368=function(_0x20717d,_0x5b0cbf){_0x20717d=_0x20717d-0x0;var _0x444002=_0x368c[_0x20717d];return _0x444002;};'use strict';var _=require(_0xc368('0x0'));var rp=require(_0xc368('0x1'));var md5=require(_0xc368('0x2'));var util=require(_0xc368('0x3'));var moment=require(_0xc368('0x4'));var Promise=require(_0xc368('0x5'));var Redis=require(_0xc368('0x6'));var intUtil=require(_0xc368('0x7'));var config=require('../../../../config/environment');var logger=require(_0xc368('0x8'))(_0xc368('0x9'));config[_0xc368('0xa')]=_[_0xc368('0xb')](config['redis'],{'host':_0xc368('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc368('0xa')]));function getAdminId(_0x691481,_0x3ff25f,_0x5e6c9f,_0x57c637){return new Promise(function(_0x265555,_0x48d172){var _0x4dca5a=![];var _0x3a7949={'method':_0xc368('0xd'),'uri':_0x57c637+_0xc368('0xe'),'json':!![]};_0x3a7949[_0xc368('0xf')]=_0x5e6c9f;logger[_0xc368('0x10')](_0xc368('0x11'));return rp(_0x3a7949)[_0xc368('0x12')](function(_0x18a883){if(_0x18a883){var _0x3f5248=_0x18a883[_0xc368('0x13')];var _0x153590=null;for(_0x153590=0x0;_0x153590<_0x3f5248[_0xc368('0x14')];_0x153590++){if(_0x3f5248[_0x153590]['email']===_0x691481[_0xc368('0x15')]){_0x691481[_0xc368('0x16')]=_0x3f5248[_0x153590]['id'];_0x4dca5a=!![];}}if(_0x4dca5a){logger[_0xc368('0x10')](_0xc368('0x17'),_0x691481[_0xc368('0x16')]);_0x265555(_0x691481);}else{_0x48d172({'statusCode':0x194,'message':_0xc368('0x18')});}}else{_0x48d172({'statusCode':0x194,'message':_0xc368('0x18')});}})[_0xc368('0x19')](function(_0x3ef846){logger[_0xc368('0x1a')]('['+[_0x3ff25f[_0xc368('0x1b')]()]+']',_0x3ef846[_0xc368('0x1c')]);_0x48d172(_0x3ef846);});});}function getUser(_0x58e142,_0x33e621,_0x2e28ab){return function(_0x3abc2e){return new Promise(function(_0x504733,_0x46a1c1){var _0x489f27={'method':'GET','uri':_0x2e28ab+_0xc368('0xe'),'json':!![]};_0x489f27['headers']=_0x33e621;logger[_0xc368('0x10')]('Getting\x20user\x20list');return rp(_0x489f27)[_0xc368('0x12')](function(_0x55b898){if(_0x55b898){var _0x7d9840=_0x55b898[_0xc368('0x13')];var _0x27e36f=![];var _0x3843df=null;if(_0x3abc2e[_0xc368('0x1d')]!==null){logger[_0xc368('0x10')]('Getting\x20user\x20with\x20email',_0x3abc2e[_0xc368('0x1d')]);_0x3abc2e[_0xc368('0x1e')]=_0x3abc2e[_0xc368('0x1d')];for(_0x3843df=0x0;_0x3843df<_0x7d9840[_0xc368('0x14')];_0x3843df++){if(_0x7d9840[_0x3843df][_0xc368('0x1f')]===_0x3abc2e[_0xc368('0x1d')]){_0x27e36f=!![];_0x3abc2e['userId']=_0x7d9840[_0x3843df]['id'];logger[_0xc368('0x10')](_0xc368('0x20'),_0x3abc2e[_0xc368('0x21')]);}}}if(!_0x27e36f){logger['info'](_0xc368('0x22'));_0x3abc2e['userEmail']=_0x3abc2e['adminEmail'];_0x3abc2e[_0xc368('0x21')]=_0x3abc2e['adminId'];_0x27e36f=!![];}if(_0x27e36f){_0x504733(_0x3abc2e);}else{_0x46a1c1({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x46a1c1({'statusCode':0x194,'message':_0xc368('0x18')});}})[_0xc368('0x19')](function(_0x361143){logger[_0xc368('0x1a')]('['+[_0x58e142[_0xc368('0x1b')]()]+']',_0x361143[_0xc368('0x1c')]);_0x46a1c1(_0x361143);});});};}function searchContact(_0x3c2f21,_0x16df1b,_0x212e5c,_0x4c8c3a){return new Promise(function(_0x4e1b99,_0x50d99b){var _0x4cd825={'method':_0xc368('0xd'),'headers':_0x16df1b,'uri':_0x3c2f21+_0xc368('0x23')+_0x4c8c3a+'&f='+_0x212e5c+'&entities=contact','json':!![]};rp(_0x4cd825)['then'](function(_0xb251f6){var _0x1f38b7=_[_0xc368('0x24')](_0xb251f6[_0xc368('0x25')][_0xc368('0x25')],[_0x212e5c,_0x4c8c3a]);_0x4e1b99(_0x1f38b7);})[_0xc368('0x19')](function(_0x54426c){_0x50d99b(_0x54426c);});});}function getEndUser(_0x2e22ee,_0x52a056,_0xd208f){return function(_0x51ed9e){return new Promise(function(_0x157a24,_0x399783){logger[_0xc368('0x10')](util[_0xc368('0x26')]('Searching\x20contact\x20with\x20phone\x20%s',_0x51ed9e[_0xc368('0x27')]));searchContact(_0xd208f,_0x52a056,_0xc368('0x28'),_0x51ed9e['contactNumber'])[_0xc368('0x12')](function(_0x263278){if(_0x263278){_0x51ed9e[_0xc368('0x29')]=_0x263278['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x51ed9e[_0xc368('0x29')]);return _0x157a24(_0x51ed9e);}searchContact(_0xd208f,_0x52a056,_0xc368('0x2a'),_0x51ed9e[_0xc368('0x27')])[_0xc368('0x12')](function(_0x1a43ee){if(_0x1a43ee){_0x51ed9e[_0xc368('0x29')]=_0x1a43ee['id'];logger[_0xc368('0x10')]('Contact\x20found\x20work_number:',_0x51ed9e[_0xc368('0x29')]);return _0x157a24(_0x51ed9e);}createEndUser(_0x51ed9e,_0x2e22ee,_0x52a056,_0xd208f)[_0xc368('0x12')](function(_0x1d4a67){logger['info'](_0xc368('0x2b'),_0x1d4a67[_0xc368('0x29')]);return _0x157a24(_0x1d4a67);});});})[_0xc368('0x19')](function(_0x567441){_0x399783(_0x567441);});});};}function createEndUser(_0x463200,_0x4568a0,_0x35c589,_0x36f46b){return new Promise(function(_0x5e64f1,_0x4eeb62){var _0x2caf01=moment();var _0xb390ca={'method':_0xc368('0x2c'),'uri':_0x36f46b+_0xc368('0x2d'),'body':{'contact':{'last_name':_0x463200['contactNumber'],'work_number':_0x463200['contactNumber'],'mobile_number':_0x463200[_0xc368('0x27')],'owner_id':_0x463200[_0xc368('0x21')],'created_at':_0x2caf01[_0xc368('0x26')](_0xc368('0x2e'))}},'json':!![]};_0xb390ca[_0xc368('0xf')]=_0x35c589;logger['info'](_0xc368('0x2f'));return rp(_0xb390ca)[_0xc368('0x12')](function(_0x48390b){_0x463200['endUserId']=_0x48390b['contact']['id'];_0x5e64f1(_0x463200);})['catch'](function(_0x58a1fe){logger[_0xc368('0x1a')]('['+[_0x4568a0[_0xc368('0x1b')]()]+']',_0x58a1fe[_0xc368('0x1c')]);_0x4eeb62(_0x58a1fe['message']);});});}function getTicket(_0x63538,_0x10d648,_0x40c651,_0xed3a33,_0x531c55){return function(_0x427760){logger[_0xc368('0x10')](_0xc368('0x30'));return new Promise(function(_0x38f90e,_0x51e9c7){var _0x1802cf=moment();var _0x44a069={'method':_0xc368('0x2c'),'uri':_0x40c651+_0xc368('0x31'),'body':{'title':intUtil[_0xc368('0x32')](_0xed3a33[_0xc368('0x33')],_0x531c55,'\x20'),'description':intUtil['getString'](_0xed3a33[_0xc368('0x34')],_0x531c55,'\x0a'),'owner_id':_0x427760[_0xc368('0x21')],'creater_id':_0x427760[_0xc368('0x16')],'targetable_id':_0x427760[_0xc368('0x29')],'targetable_type':'Contact','created_at':_0x1802cf[_0xc368('0x26')](_0xc368('0x2e')),'due_date':_0x1802cf[_0xc368('0x35')](0x1e,'m')['format'](_0xc368('0x2e'))},'json':!![]};_0x44a069[_0xc368('0xf')]=_0x10d648;return rp(_0x44a069)['then'](function(_0x4b7d74){_0x427760[_0xc368('0x36')]=_0x4b7d74[_0xc368('0x37')]['id'];logger[_0xc368('0x10')](_0xc368('0x38'),_0x427760[_0xc368('0x36')]);_0x38f90e(_0x427760);})[_0xc368('0x19')](function(_0xa67c3e){logger['error']('['+[_0x63538['toUpperCase']()]+']',_0xa67c3e['message']);_0x51e9c7(_0xa67c3e[_0xc368('0x1c')]);});});};}function emit(_0x35abb4,_0x313fab,_0x7030e6){var _0x5152af={'uri':_0x35abb4+'/contacts/'+_0x7030e6};io['to'](util[_0xc368('0x26')]('user:%s',_0x313fab))[_0xc368('0x39')](_0xc368('0x3a'),_0x5152af);}exports['cs']=function(_0x5166d2,_0x4e71b2,_0x525eac,_0x59c5f6,_0x42aece,_0x3998b2,_0x13fd2e,_0x49cced){var _0x5e1563={};var _0x30a509={'Authorization':'Token\x20token='+_0x3998b2['apiKey']};_0x3998b2[_0xc368('0x3b')]=intUtil[_0xc368('0x3c')](_0x3998b2['remoteUri']);_0x3998b2[_0xc368('0x3d')]=intUtil[_0xc368('0x3c')](_0x3998b2['serverUrl']);var _0xbd15be=_0x3998b2[_0xc368('0x3b')];_0x5e1563[_0xc368('0x15')]=_0x3998b2[_0xc368('0x3e')];_0x5e1563['contactNumber']=_0x49cced[_0xc368('0x3f')]()===_0xc368('0x40')?_0x4e71b2['destcalleridnum']:_0x4e71b2['calleridnum'];_0x5e1563[_0xc368('0x41')]=_0x49cced===_0xc368('0x42')||_0x49cced===_0xc368('0x43')?_0xc368('0x42'):'outbound';if(_0x59c5f6){_0x5e1563[_0xc368('0x1d')]=_0x59c5f6['email'];}var _0x49619f=util[_0xc368('0x26')](_0xc368('0x44'),_0x3998b2[_0xc368('0x3d')],_0x4e71b2[_0xc368('0x45')],md5(_0x4e71b2[_0xc368('0x45')]));if(_0x42aece&&_0x42aece[_0xc368('0x46')]){logger[_0xc368('0x10')]('[QUEUE]',_0xc368('0x47'));_0x4e71b2['recordingURL']=_0x49619f;}else if(_0x13fd2e&&_0x13fd2e[_0xc368('0x48')]&&_0x13fd2e[_0xc368('0x48')]!==_0xc368('0x49')){logger['info'](_0xc368('0x4a'),_0xc368('0x47'));_0x4e71b2['recordingURL']=_0x49619f;}else{_0x4e71b2['recordingURL']='';}return getAdminId(_0x5e1563,_0x49cced,_0x30a509,_0xbd15be)[_0xc368('0x12')](getUser(_0x49cced,_0x30a509,_0xbd15be))[_0xc368('0x12')](getEndUser(_0x49cced,_0x30a509,_0xbd15be))['then'](getTicket(_0x49cced,_0x30a509,_0xbd15be,_0x525eac,_0x4e71b2))['then'](function(_0x2352c0){logger[_0xc368('0x10')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x2352c0[_0xc368('0x36')]));if(_0x49cced!==_0xc368('0x43')){logger[_0xc368('0x10')]('['+[_0x49cced[_0xc368('0x1b')]()]+']',_0xc368('0x4b'));emit(_0xbd15be,_0x59c5f6['name'],_0x2352c0['endUserId']);}})['catch'](function(_0x2ff44f){logger[_0xc368('0x1a')]('['+[_0x49cced[_0xc368('0x1b')]()]+_0xc368('0x4c'),util['inspect'](_0x2ff44f,{'showHidden':!![],'depth':null}));});};