506c6ea00b0f3aabf9b3ba6787e11e49de7c33ce
[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 _0x6dac=['callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','User\x20found:','userId','adminEmail','/api/lookup?q=','&f=','&entities=contact','contacts','catch','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','getString','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','emit','trigger:browser:url','Token\x20token=','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','outbound','destcalleridnum','calleridnum'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6dac,0x16e));var _0xc6da=function(_0xe6bbe6,_0x372a76){_0xe6bbe6=_0xe6bbe6-0x0;var _0x58625d=_0x6dac[_0xe6bbe6];return _0x58625d;};'use strict';var _=require(_0xc6da('0x0'));var rp=require(_0xc6da('0x1'));var md5=require(_0xc6da('0x2'));var util=require(_0xc6da('0x3'));var moment=require(_0xc6da('0x4'));var Promise=require(_0xc6da('0x5'));var Redis=require(_0xc6da('0x6'));var intUtil=require(_0xc6da('0x7'));var config=require(_0xc6da('0x8'));var logger=require(_0xc6da('0x9'))(_0xc6da('0xa'));config[_0xc6da('0xb')]=_[_0xc6da('0xc')](config['redis'],{'host':_0xc6da('0xd'),'port':0x18eb});var io=require(_0xc6da('0xe'))(new Redis(config[_0xc6da('0xb')]));function getAdminId(_0x3047d3,_0x2bfaa6,_0x165a5d,_0x909bcf){return new Promise(function(_0x39a8d8,_0x13fea1){var _0x48455d=![];var _0x34b9ea={'method':_0xc6da('0xf'),'uri':_0x909bcf+_0xc6da('0x10'),'json':!![]};_0x34b9ea[_0xc6da('0x11')]=_0x165a5d;logger[_0xc6da('0x12')](_0xc6da('0x13'));return rp(_0x34b9ea)[_0xc6da('0x14')](function(_0x2a8fde){if(_0x2a8fde){var _0x2cad88=_0x2a8fde[_0xc6da('0x15')];var _0x3b8656=null;for(_0x3b8656=0x0;_0x3b8656<_0x2cad88[_0xc6da('0x16')];_0x3b8656++){if(_0x2cad88[_0x3b8656][_0xc6da('0x17')]===_0x3047d3['adminEmail']){_0x3047d3[_0xc6da('0x18')]=_0x2cad88[_0x3b8656]['id'];_0x48455d=!![];}}if(_0x48455d){logger[_0xc6da('0x12')](_0xc6da('0x19'),_0x3047d3[_0xc6da('0x18')]);_0x39a8d8(_0x3047d3);}else{_0x13fea1({'statusCode':0x194,'message':_0xc6da('0x1a')});}}else{_0x13fea1({'statusCode':0x194,'message':_0xc6da('0x1a')});}})['catch'](function(_0x43e6b3){logger[_0xc6da('0x1b')]('['+[_0x2bfaa6[_0xc6da('0x1c')]()]+']',_0x43e6b3[_0xc6da('0x1d')]);_0x13fea1(_0x43e6b3);});});}function getUser(_0x7df0a8,_0x5463a1,_0x243ed5){return function(_0x4cf6c4){return new Promise(function(_0x362e56,_0x2a63cc){var _0xac1042={'method':_0xc6da('0xf'),'uri':_0x243ed5+'/api/selector/owners','json':!![]};_0xac1042[_0xc6da('0x11')]=_0x5463a1;logger[_0xc6da('0x12')](_0xc6da('0x1e'));return rp(_0xac1042)[_0xc6da('0x14')](function(_0x357880){if(_0x357880){var _0x3d16bc=_0x357880[_0xc6da('0x15')];var _0x36ac99=![];var _0xe00c70=null;if(_0x4cf6c4[_0xc6da('0x1f')]!==null){logger['info'](_0xc6da('0x20'),_0x4cf6c4[_0xc6da('0x1f')]);_0x4cf6c4[_0xc6da('0x21')]=_0x4cf6c4[_0xc6da('0x1f')];for(_0xe00c70=0x0;_0xe00c70<_0x3d16bc['length'];_0xe00c70++){if(_0x3d16bc[_0xe00c70][_0xc6da('0x17')]===_0x4cf6c4[_0xc6da('0x1f')]){_0x36ac99=!![];_0x4cf6c4['userId']=_0x3d16bc[_0xe00c70]['id'];logger[_0xc6da('0x12')](_0xc6da('0x22'),_0x4cf6c4[_0xc6da('0x23')]);}}}if(!_0x36ac99){logger[_0xc6da('0x12')]('Admin\x20selected');_0x4cf6c4[_0xc6da('0x21')]=_0x4cf6c4[_0xc6da('0x24')];_0x4cf6c4['userId']=_0x4cf6c4[_0xc6da('0x18')];_0x36ac99=!![];}if(_0x36ac99){_0x362e56(_0x4cf6c4);}else{_0x2a63cc({'statusCode':0x194,'message':_0xc6da('0x1a')});}}else{_0x2a63cc({'statusCode':0x194,'message':_0xc6da('0x1a')});}})['catch'](function(_0x4d232d){logger[_0xc6da('0x1b')]('['+[_0x7df0a8[_0xc6da('0x1c')]()]+']',_0x4d232d['message']);_0x2a63cc(_0x4d232d);});});};}function searchContact(_0x540be8,_0x5228a4,_0x48ec03,_0x44a27e){return new Promise(function(_0x31a2db,_0x33eba0){var _0x579dab={'method':_0xc6da('0xf'),'headers':_0x5228a4,'uri':_0x540be8+_0xc6da('0x25')+_0x44a27e+_0xc6da('0x26')+_0x48ec03+_0xc6da('0x27'),'json':!![]};rp(_0x579dab)['then'](function(_0x49e5a5){var _0x35aa07=_['find'](_0x49e5a5[_0xc6da('0x28')][_0xc6da('0x28')],[_0x48ec03,_0x44a27e]);_0x31a2db(_0x35aa07);})[_0xc6da('0x29')](function(_0x5782d4){_0x33eba0(_0x5782d4);});});}function getEndUser(_0xce3926,_0xa6dd3,_0x313b5c){return function(_0x324251){return new Promise(function(_0x3e56b4,_0x27a41c){logger['info'](util[_0xc6da('0x2a')](_0xc6da('0x2b'),_0x324251[_0xc6da('0x2c')]));searchContact(_0x313b5c,_0xa6dd3,'mobile_number',_0x324251['contactNumber'])[_0xc6da('0x14')](function(_0x2727e0){if(_0x2727e0){_0x324251[_0xc6da('0x2d')]=_0x2727e0['id'];logger[_0xc6da('0x12')](_0xc6da('0x2e'),_0x324251[_0xc6da('0x2d')]);return _0x3e56b4(_0x324251);}searchContact(_0x313b5c,_0xa6dd3,_0xc6da('0x2f'),_0x324251[_0xc6da('0x2c')])[_0xc6da('0x14')](function(_0xc6f8ca){if(_0xc6f8ca){_0x324251[_0xc6da('0x2d')]=_0xc6f8ca['id'];logger[_0xc6da('0x12')](_0xc6da('0x30'),_0x324251['endUserId']);return _0x3e56b4(_0x324251);}createEndUser(_0x324251,_0xce3926,_0xa6dd3,_0x313b5c)[_0xc6da('0x14')](function(_0x5bf0e1){logger[_0xc6da('0x12')](_0xc6da('0x31'),_0x5bf0e1[_0xc6da('0x2d')]);return _0x3e56b4(_0x5bf0e1);});});})['catch'](function(_0x461709){_0x27a41c(_0x461709);});});};}function createEndUser(_0x243736,_0x287c82,_0x4df1c1,_0x2fb549){return new Promise(function(_0x5aa1e5,_0x1c7664){var _0x502e26=moment();var _0x2d67db={'method':_0xc6da('0x32'),'uri':_0x2fb549+_0xc6da('0x33'),'body':{'contact':{'last_name':_0x243736['contactNumber'],'work_number':_0x243736['contactNumber'],'mobile_number':_0x243736[_0xc6da('0x2c')],'owner_id':_0x243736['userId'],'created_at':_0x502e26['format'](_0xc6da('0x34'))}},'json':!![]};_0x2d67db[_0xc6da('0x11')]=_0x4df1c1;logger[_0xc6da('0x12')](_0xc6da('0x35'));return rp(_0x2d67db)[_0xc6da('0x14')](function(_0x3ef933){_0x243736[_0xc6da('0x2d')]=_0x3ef933[_0xc6da('0x36')]['id'];_0x5aa1e5(_0x243736);})['catch'](function(_0x2315a2){logger[_0xc6da('0x1b')]('['+[_0x287c82[_0xc6da('0x1c')]()]+']',_0x2315a2['message']);_0x1c7664(_0x2315a2[_0xc6da('0x1d')]);});});}function getTicket(_0x2291ce,_0x3f5b29,_0x212609,_0x48abd1,_0xe4db85){return function(_0x427e48){logger[_0xc6da('0x12')]('Creating\x20new\x20task');return new Promise(function(_0x12d722,_0x2560ec){var _0xd77dc3=moment();var _0x34e19a={'method':'POST','uri':_0x212609+'/api/tasks','body':{'title':intUtil[_0xc6da('0x37')](_0x48abd1['Subjects'],_0xe4db85,'\x20'),'description':intUtil['getString'](_0x48abd1[_0xc6da('0x38')],_0xe4db85,'\x0a'),'owner_id':_0x427e48[_0xc6da('0x23')],'creater_id':_0x427e48[_0xc6da('0x18')],'targetable_id':_0x427e48[_0xc6da('0x2d')],'targetable_type':_0xc6da('0x39'),'created_at':_0xd77dc3[_0xc6da('0x2a')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0xd77dc3[_0xc6da('0x3a')](0x1e,'m')['format'](_0xc6da('0x34'))},'json':!![]};_0x34e19a['headers']=_0x3f5b29;return rp(_0x34e19a)[_0xc6da('0x14')](function(_0x2cf2ed){_0x427e48[_0xc6da('0x3b')]=_0x2cf2ed[_0xc6da('0x3c')]['id'];logger[_0xc6da('0x12')](_0xc6da('0x3d'),_0x427e48[_0xc6da('0x3b')]);_0x12d722(_0x427e48);})[_0xc6da('0x29')](function(_0x51059f){logger[_0xc6da('0x1b')]('['+[_0x2291ce[_0xc6da('0x1c')]()]+']',_0x51059f['message']);_0x2560ec(_0x51059f[_0xc6da('0x1d')]);});});};}function emit(_0x57409f,_0x1a1574,_0x1db323){var _0x365709={'uri':_0x57409f+_0xc6da('0x3e')+_0x1db323};io['to'](util['format']('user:%s',_0x1a1574))[_0xc6da('0x3f')](_0xc6da('0x40'),_0x365709);}exports['cs']=function(_0x4fd983,_0x241ae1,_0x35c6ab,_0x2e57f3,_0x2f111d,_0x581523,_0x565321,_0x3d7016){var _0x1cd932={};var _0x2464e6={'Authorization':_0xc6da('0x41')+_0x581523['apiKey']};_0x581523[_0xc6da('0x42')]=intUtil['stripTrailingSlash'](_0x581523[_0xc6da('0x42')]);_0x581523[_0xc6da('0x43')]=intUtil[_0xc6da('0x44')](_0x581523[_0xc6da('0x43')]);var _0x4c2923=_0x581523[_0xc6da('0x42')];_0x1cd932[_0xc6da('0x24')]=_0x581523[_0xc6da('0x45')];_0x1cd932[_0xc6da('0x2c')]=_0x3d7016[_0xc6da('0x46')]()===_0xc6da('0x47')?_0x241ae1[_0xc6da('0x48')]:_0x241ae1[_0xc6da('0x49')];_0x1cd932[_0xc6da('0x4a')]=_0x3d7016===_0xc6da('0x4b')||_0x3d7016==='unmanaged'?'queue':'outbound';if(_0x2e57f3){_0x1cd932[_0xc6da('0x1f')]=_0x2e57f3['email'];}var _0x2f1863=util[_0xc6da('0x2a')](_0xc6da('0x4c'),_0x581523['serverUrl'],_0x241ae1[_0xc6da('0x4d')],md5(_0x241ae1[_0xc6da('0x4d')]));if(_0x2f111d&&_0x2f111d['monitor_format']){logger[_0xc6da('0x12')](_0xc6da('0x4e'),_0xc6da('0x4f'));_0x241ae1[_0xc6da('0x50')]=_0x2f1863;}else if(_0x565321&&_0x565321[_0xc6da('0x51')]&&_0x565321[_0xc6da('0x51')]!==_0xc6da('0x52')){logger[_0xc6da('0x12')](_0xc6da('0x53'),_0xc6da('0x4f'));_0x241ae1[_0xc6da('0x50')]=_0x2f1863;}else{_0x241ae1[_0xc6da('0x50')]='';}return getAdminId(_0x1cd932,_0x3d7016,_0x2464e6,_0x4c2923)[_0xc6da('0x14')](getUser(_0x3d7016,_0x2464e6,_0x4c2923))[_0xc6da('0x14')](getEndUser(_0x3d7016,_0x2464e6,_0x4c2923))[_0xc6da('0x14')](getTicket(_0x3d7016,_0x2464e6,_0x4c2923,_0x35c6ab,_0x241ae1))[_0xc6da('0x14')](function(_0x5f12c7){logger[_0xc6da('0x12')](util['format'](_0xc6da('0x54'),_0x5f12c7[_0xc6da('0x3b')]));if(_0x3d7016!==_0xc6da('0x55')){logger[_0xc6da('0x12')]('['+[_0x3d7016[_0xc6da('0x1c')]()]+']',_0xc6da('0x56'));emit(_0x4c2923,_0x2e57f3['name'],_0x5f12c7['endUserId']);}})['catch'](function(_0xca0f){logger[_0xc6da('0x1b')]('['+[_0x3d7016['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xc6da('0x57')](_0xca0f,{'showHidden':!![],'depth':null}));});};