422b8df7865410485ed33d02a28063f3a900d2b1
[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 _0x47ef=['calleridnum','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','POST','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','Subjects','getString','Descriptions','Contact','ticketId','task','Task\x20created:','/contacts/','emit','trigger:browser:url','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','outbound','destcalleridnum'];(function(_0x387dc1,_0x3ba649){var _0x17567c=function(_0x4690aa){while(--_0x4690aa){_0x387dc1['push'](_0x387dc1['shift']());}};_0x17567c(++_0x3ba649);}(_0x47ef,0x1b8));var _0xf47e=function(_0x95e39f,_0x5eb1b){_0x95e39f=_0x95e39f-0x0;var _0x35d677=_0x47ef[_0x95e39f];return _0x35d677;};'use strict';var _=require(_0xf47e('0x0'));var rp=require(_0xf47e('0x1'));var md5=require(_0xf47e('0x2'));var util=require('util');var moment=require(_0xf47e('0x3'));var Promise=require(_0xf47e('0x4'));var Redis=require(_0xf47e('0x5'));var intUtil=require(_0xf47e('0x6'));var config=require(_0xf47e('0x7'));var logger=require(_0xf47e('0x8'))('freshsales');config[_0xf47e('0x9')]=_[_0xf47e('0xa')](config[_0xf47e('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xf47e('0xb'))(new Redis(config[_0xf47e('0x9')]));function getAdminId(_0x1349a1,_0x110aeb,_0x3f11a6,_0x55822d){return new Promise(function(_0x4cecc2,_0x5a4978){var _0x394736=![];var _0x45058b={'method':_0xf47e('0xc'),'uri':_0x55822d+_0xf47e('0xd'),'json':!![]};_0x45058b['headers']=_0x3f11a6;logger[_0xf47e('0xe')](_0xf47e('0xf'));return rp(_0x45058b)[_0xf47e('0x10')](function(_0x818e97){if(_0x818e97){var _0x2ca24c=_0x818e97[_0xf47e('0x11')];var _0x4293ce=null;for(_0x4293ce=0x0;_0x4293ce<_0x2ca24c[_0xf47e('0x12')];_0x4293ce++){if(_0x2ca24c[_0x4293ce][_0xf47e('0x13')]===_0x1349a1[_0xf47e('0x14')]){_0x1349a1['adminId']=_0x2ca24c[_0x4293ce]['id'];_0x394736=!![];}}if(_0x394736){logger[_0xf47e('0xe')](_0xf47e('0x15'),_0x1349a1[_0xf47e('0x16')]);_0x4cecc2(_0x1349a1);}else{_0x5a4978({'statusCode':0x194,'message':_0xf47e('0x17')});}}else{_0x5a4978({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xf47e('0x18')](function(_0x3b5e13){logger[_0xf47e('0x19')]('['+[_0x110aeb[_0xf47e('0x1a')]()]+']',_0x3b5e13[_0xf47e('0x1b')]);_0x5a4978(_0x3b5e13);});});}function getUser(_0x2c5fab,_0x16ecf5,_0xaa8a){return function(_0x1861ef){return new Promise(function(_0x5bec48,_0x23b182){var _0x307406={'method':_0xf47e('0xc'),'uri':_0xaa8a+_0xf47e('0xd'),'json':!![]};_0x307406['headers']=_0x16ecf5;logger[_0xf47e('0xe')](_0xf47e('0x1c'));return rp(_0x307406)[_0xf47e('0x10')](function(_0x10075a){if(_0x10075a){var _0x3e1018=_0x10075a['users'];var _0x44c2f4=![];var _0x396cae=null;if(_0x1861ef[_0xf47e('0x1d')]!==null){logger[_0xf47e('0xe')](_0xf47e('0x1e'),_0x1861ef[_0xf47e('0x1d')]);_0x1861ef[_0xf47e('0x1f')]=_0x1861ef['agentEmail'];for(_0x396cae=0x0;_0x396cae<_0x3e1018[_0xf47e('0x12')];_0x396cae++){if(_0x3e1018[_0x396cae][_0xf47e('0x13')]===_0x1861ef[_0xf47e('0x1d')]){_0x44c2f4=!![];_0x1861ef[_0xf47e('0x20')]=_0x3e1018[_0x396cae]['id'];logger[_0xf47e('0xe')](_0xf47e('0x21'),_0x1861ef[_0xf47e('0x20')]);}}}if(!_0x44c2f4){logger[_0xf47e('0xe')](_0xf47e('0x22'));_0x1861ef[_0xf47e('0x1f')]=_0x1861ef['adminEmail'];_0x1861ef[_0xf47e('0x20')]=_0x1861ef[_0xf47e('0x16')];_0x44c2f4=!![];}if(_0x44c2f4){_0x5bec48(_0x1861ef);}else{_0x23b182({'statusCode':0x194,'message':_0xf47e('0x17')});}}else{_0x23b182({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xf47e('0x18')](function(_0x2c977e){logger[_0xf47e('0x19')]('['+[_0x2c5fab[_0xf47e('0x1a')]()]+']',_0x2c977e[_0xf47e('0x1b')]);_0x23b182(_0x2c977e);});});};}function searchContact(_0x58674f,_0x4baf62,_0x357747,_0x2c48f4){return new Promise(function(_0x24c7ba,_0x5991d3){var _0x48ab01={'method':'GET','headers':_0x4baf62,'uri':_0x58674f+_0xf47e('0x23')+_0x2c48f4+_0xf47e('0x24')+_0x357747+_0xf47e('0x25'),'json':!![]};rp(_0x48ab01)[_0xf47e('0x10')](function(_0x42317a){var _0x4f0d30=_[_0xf47e('0x26')](_0x42317a[_0xf47e('0x27')][_0xf47e('0x27')],[_0x357747,_0x2c48f4]);_0x24c7ba(_0x4f0d30);})[_0xf47e('0x18')](function(_0x216162){_0x5991d3(_0x216162);});});}function getEndUser(_0x193bff,_0x3f4e6f,_0x1d9f6d){return function(_0x1f4006){return new Promise(function(_0x20307e,_0x16d280){logger[_0xf47e('0xe')](util['format'](_0xf47e('0x28'),_0x1f4006[_0xf47e('0x29')]));searchContact(_0x1d9f6d,_0x3f4e6f,'mobile_number',_0x1f4006[_0xf47e('0x29')])[_0xf47e('0x10')](function(_0x2d90b){if(_0x2d90b){_0x1f4006[_0xf47e('0x2a')]=_0x2d90b['id'];logger[_0xf47e('0xe')](_0xf47e('0x2b'),_0x1f4006[_0xf47e('0x2a')]);return _0x20307e(_0x1f4006);}searchContact(_0x1d9f6d,_0x3f4e6f,'work_number',_0x1f4006[_0xf47e('0x29')])['then'](function(_0x5429aa){if(_0x5429aa){_0x1f4006['endUserId']=_0x5429aa['id'];logger[_0xf47e('0xe')](_0xf47e('0x2c'),_0x1f4006[_0xf47e('0x2a')]);return _0x20307e(_0x1f4006);}createEndUser(_0x1f4006,_0x193bff,_0x3f4e6f,_0x1d9f6d)['then'](function(_0x3fddb7){logger[_0xf47e('0xe')]('Contact\x20created:',_0x3fddb7[_0xf47e('0x2a')]);return _0x20307e(_0x3fddb7);});});})[_0xf47e('0x18')](function(_0x116460){_0x16d280(_0x116460);});});};}function createEndUser(_0x53093a,_0x1309e0,_0x4c5926,_0x4ea047){return new Promise(function(_0x3100f8,_0x2527e6){var _0x2eb316=moment();var _0x357105={'method':_0xf47e('0x2d'),'uri':_0x4ea047+_0xf47e('0x2e'),'body':{'contact':{'last_name':_0x53093a['contactNumber'],'work_number':_0x53093a[_0xf47e('0x29')],'mobile_number':_0x53093a[_0xf47e('0x29')],'owner_id':_0x53093a[_0xf47e('0x20')],'created_at':_0x2eb316[_0xf47e('0x2f')](_0xf47e('0x30'))}},'json':!![]};_0x357105[_0xf47e('0x31')]=_0x4c5926;logger[_0xf47e('0xe')](_0xf47e('0x32'));return rp(_0x357105)['then'](function(_0x1e6b7d){_0x53093a[_0xf47e('0x2a')]=_0x1e6b7d[_0xf47e('0x33')]['id'];_0x3100f8(_0x53093a);})[_0xf47e('0x18')](function(_0x3c27ba){logger['error']('['+[_0x1309e0['toUpperCase']()]+']',_0x3c27ba['message']);_0x2527e6(_0x3c27ba[_0xf47e('0x1b')]);});});}function getTicket(_0x1755eb,_0x32445c,_0x29ede5,_0x4cd0b2,_0x1be278){return function(_0x460465){logger[_0xf47e('0xe')](_0xf47e('0x34'));return new Promise(function(_0x4da214,_0xe06f77){var _0x11f6ae=moment();var _0x1da690={'method':_0xf47e('0x2d'),'uri':_0x29ede5+'/api/tasks','body':{'title':intUtil['getString'](_0x4cd0b2[_0xf47e('0x35')],_0x1be278,'\x20'),'description':intUtil[_0xf47e('0x36')](_0x4cd0b2[_0xf47e('0x37')],_0x1be278,'\x0a'),'owner_id':_0x460465[_0xf47e('0x20')],'creater_id':_0x460465[_0xf47e('0x16')],'targetable_id':_0x460465[_0xf47e('0x2a')],'targetable_type':_0xf47e('0x38'),'created_at':_0x11f6ae[_0xf47e('0x2f')](_0xf47e('0x30')),'due_date':_0x11f6ae['add'](0x1e,'m')[_0xf47e('0x2f')](_0xf47e('0x30'))},'json':!![]};_0x1da690[_0xf47e('0x31')]=_0x32445c;return rp(_0x1da690)[_0xf47e('0x10')](function(_0x19812b){_0x460465[_0xf47e('0x39')]=_0x19812b[_0xf47e('0x3a')]['id'];logger[_0xf47e('0xe')](_0xf47e('0x3b'),_0x460465[_0xf47e('0x39')]);_0x4da214(_0x460465);})['catch'](function(_0x19bb06){logger[_0xf47e('0x19')]('['+[_0x1755eb[_0xf47e('0x1a')]()]+']',_0x19bb06['message']);_0xe06f77(_0x19bb06[_0xf47e('0x1b')]);});});};}function emit(_0xfe7261,_0x26f532,_0x53f8ab){var _0x15153e={'uri':_0xfe7261+_0xf47e('0x3c')+_0x53f8ab};io['to'](util[_0xf47e('0x2f')]('user:%s',_0x26f532))[_0xf47e('0x3d')](_0xf47e('0x3e'),_0x15153e);}exports['cs']=function(_0x2e408b,_0x363386,_0x127bc7,_0x5d363c,_0x276a29,_0x2c3d0a,_0x4f1026,_0x342d55){var _0x2c5840={};var _0x4fb192={'Authorization':'Token\x20token='+_0x2c3d0a[_0xf47e('0x3f')]};_0x2c3d0a['remoteUri']=intUtil[_0xf47e('0x40')](_0x2c3d0a[_0xf47e('0x41')]);_0x2c3d0a['serverUrl']=intUtil[_0xf47e('0x40')](_0x2c3d0a[_0xf47e('0x42')]);var _0x5cb7c9=_0x2c3d0a[_0xf47e('0x41')];_0x2c5840[_0xf47e('0x14')]=_0x2c3d0a[_0xf47e('0x43')];_0x2c5840[_0xf47e('0x29')]=_0x342d55['toLowerCase']()===_0xf47e('0x44')?_0x363386[_0xf47e('0x45')]:_0x363386[_0xf47e('0x46')];_0x2c5840['callDirection']=_0x342d55==='queue'||_0x342d55===_0xf47e('0x47')?'queue':_0xf47e('0x44');if(_0x5d363c){_0x2c5840['agentEmail']=_0x5d363c[_0xf47e('0x13')];}var _0x264080=util[_0xf47e('0x2f')](_0xf47e('0x48'),_0x2c3d0a[_0xf47e('0x42')],_0x363386[_0xf47e('0x49')],md5(_0x363386[_0xf47e('0x49')]));if(_0x276a29&&_0x276a29[_0xf47e('0x4a')]){logger[_0xf47e('0xe')](_0xf47e('0x4b'),_0xf47e('0x4c'));_0x363386[_0xf47e('0x4d')]=_0x264080;}else if(_0x4f1026&&_0x4f1026[_0xf47e('0x4e')]&&_0x4f1026['recordingFormat']!==_0xf47e('0x4f')){logger[_0xf47e('0xe')](_0xf47e('0x50'),_0xf47e('0x4c'));_0x363386[_0xf47e('0x4d')]=_0x264080;}else{_0x363386[_0xf47e('0x4d')]='';}return getAdminId(_0x2c5840,_0x342d55,_0x4fb192,_0x5cb7c9)[_0xf47e('0x10')](getUser(_0x342d55,_0x4fb192,_0x5cb7c9))['then'](getEndUser(_0x342d55,_0x4fb192,_0x5cb7c9))[_0xf47e('0x10')](getTicket(_0x342d55,_0x4fb192,_0x5cb7c9,_0x127bc7,_0x363386))[_0xf47e('0x10')](function(_0x50e429){logger[_0xf47e('0xe')](util[_0xf47e('0x2f')]('The\x20ticket\x20ID\x20is:\x20%s',_0x50e429[_0xf47e('0x39')]));if(_0x342d55!==_0xf47e('0x47')){logger[_0xf47e('0xe')]('['+[_0x342d55[_0xf47e('0x1a')]()]+']',_0xf47e('0x51'));emit(_0x5cb7c9,_0x5d363c[_0xf47e('0x52')],_0x50e429['endUserId']);}})[_0xf47e('0x18')](function(_0x4d241b){logger[_0xf47e('0x19')]('['+[_0x342d55[_0xf47e('0x1a')]()]+_0xf47e('0x53'),util[_0xf47e('0x54')](_0x4d241b,{'showHidden':!![],'depth':null}));});};