Built motion from commit c738b9ac.|2.6.25
[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 _0x5c2b=['Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','task','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingFormat','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','headers','Getting\x20user\x20list','agentEmail','userEmail','userId','Admin\x20selected','adminEmail','error','&f=','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects'];(function(_0x25a6d4,_0x5231d1){var _0x114190=function(_0x508276){while(--_0x508276){_0x25a6d4['push'](_0x25a6d4['shift']());}};_0x114190(++_0x5231d1);}(_0x5c2b,0x15c));var _0xb5c2=function(_0x10c063,_0x5d4ce4){_0x10c063=_0x10c063-0x0;var _0xeae66e=_0x5c2b[_0x10c063];return _0xeae66e;};'use strict';var _=require(_0xb5c2('0x0'));var rp=require(_0xb5c2('0x1'));var md5=require(_0xb5c2('0x2'));var util=require(_0xb5c2('0x3'));var moment=require(_0xb5c2('0x4'));var Promise=require(_0xb5c2('0x5'));var Redis=require(_0xb5c2('0x6'));var intUtil=require(_0xb5c2('0x7'));var config=require(_0xb5c2('0x8'));var logger=require(_0xb5c2('0x9'))(_0xb5c2('0xa'));config[_0xb5c2('0xb')]=_['defaults'](config[_0xb5c2('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0xb5c2('0xc'))(new Redis(config[_0xb5c2('0xb')]));function getAdminId(_0x2b5c96,_0x4778fe,_0x22fe07,_0x26fa7c){return new Promise(function(_0x172e1d,_0x5decc1){var _0x65044e=![];var _0x3becd2={'method':_0xb5c2('0xd'),'uri':_0x26fa7c+_0xb5c2('0xe'),'json':!![]};_0x3becd2['headers']=_0x22fe07;logger[_0xb5c2('0xf')](_0xb5c2('0x10'));return rp(_0x3becd2)[_0xb5c2('0x11')](function(_0x182425){if(_0x182425){var _0x3d7074=_0x182425[_0xb5c2('0x12')];var _0xd5180d=null;for(_0xd5180d=0x0;_0xd5180d<_0x3d7074[_0xb5c2('0x13')];_0xd5180d++){if(_0x3d7074[_0xd5180d][_0xb5c2('0x14')]===_0x2b5c96['adminEmail']){_0x2b5c96[_0xb5c2('0x15')]=_0x3d7074[_0xd5180d]['id'];_0x65044e=!![];}}if(_0x65044e){logger[_0xb5c2('0xf')](_0xb5c2('0x16'),_0x2b5c96['adminId']);_0x172e1d(_0x2b5c96);}else{_0x5decc1({'statusCode':0x194,'message':_0xb5c2('0x17')});}}else{_0x5decc1({'statusCode':0x194,'message':_0xb5c2('0x17')});}})[_0xb5c2('0x18')](function(_0x6ad315){logger['error']('['+[_0x4778fe[_0xb5c2('0x19')]()]+']',_0x6ad315[_0xb5c2('0x1a')]);_0x5decc1(_0x6ad315);});});}function getUser(_0x5b3988,_0xf19b15,_0x236ddc){return function(_0x4d4ef9){return new Promise(function(_0x2fdf00,_0x257f5d){var _0x1ad7ca={'method':_0xb5c2('0xd'),'uri':_0x236ddc+'/api/selector/owners','json':!![]};_0x1ad7ca[_0xb5c2('0x1b')]=_0xf19b15;logger[_0xb5c2('0xf')](_0xb5c2('0x1c'));return rp(_0x1ad7ca)['then'](function(_0x2546db){if(_0x2546db){var _0x5b8e0e=_0x2546db['users'];var _0x525ff6=![];var _0x2264e5=null;if(_0x4d4ef9[_0xb5c2('0x1d')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x4d4ef9[_0xb5c2('0x1d')]);_0x4d4ef9[_0xb5c2('0x1e')]=_0x4d4ef9[_0xb5c2('0x1d')];for(_0x2264e5=0x0;_0x2264e5<_0x5b8e0e[_0xb5c2('0x13')];_0x2264e5++){if(_0x5b8e0e[_0x2264e5][_0xb5c2('0x14')]===_0x4d4ef9['agentEmail']){_0x525ff6=!![];_0x4d4ef9[_0xb5c2('0x1f')]=_0x5b8e0e[_0x2264e5]['id'];logger['info']('User\x20found:',_0x4d4ef9[_0xb5c2('0x1f')]);}}}if(!_0x525ff6){logger[_0xb5c2('0xf')](_0xb5c2('0x20'));_0x4d4ef9[_0xb5c2('0x1e')]=_0x4d4ef9[_0xb5c2('0x21')];_0x4d4ef9[_0xb5c2('0x1f')]=_0x4d4ef9[_0xb5c2('0x15')];_0x525ff6=!![];}if(_0x525ff6){_0x2fdf00(_0x4d4ef9);}else{_0x257f5d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x257f5d({'statusCode':0x194,'message':_0xb5c2('0x17')});}})[_0xb5c2('0x18')](function(_0x4f71a3){logger[_0xb5c2('0x22')]('['+[_0x5b3988['toUpperCase']()]+']',_0x4f71a3[_0xb5c2('0x1a')]);_0x257f5d(_0x4f71a3);});});};}function searchContact(_0x29f0d9,_0x394bc2,_0x99b075,_0x1927a5){return new Promise(function(_0x31338f,_0x30ced8){var _0x303174={'method':_0xb5c2('0xd'),'headers':_0x394bc2,'uri':_0x29f0d9+'/api/lookup?q='+_0x1927a5+_0xb5c2('0x23')+_0x99b075+'&entities=contact','json':!![]};rp(_0x303174)[_0xb5c2('0x11')](function(_0x26ca2e){var _0x22381e=_['find'](_0x26ca2e[_0xb5c2('0x24')][_0xb5c2('0x24')],[_0x99b075,_0x1927a5]);_0x31338f(_0x22381e);})['catch'](function(_0x452cfb){_0x30ced8(_0x452cfb);});});}function getEndUser(_0x2b1b38,_0x4b9758,_0x435071){return function(_0x802dcd){return new Promise(function(_0x31a5f3,_0x2fe3d9){logger['info'](util[_0xb5c2('0x25')](_0xb5c2('0x26'),_0x802dcd[_0xb5c2('0x27')]));searchContact(_0x435071,_0x4b9758,'mobile_number',_0x802dcd[_0xb5c2('0x27')])['then'](function(_0x5b5d06){if(_0x5b5d06){_0x802dcd[_0xb5c2('0x28')]=_0x5b5d06['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x802dcd['endUserId']);return _0x31a5f3(_0x802dcd);}searchContact(_0x435071,_0x4b9758,_0xb5c2('0x29'),_0x802dcd[_0xb5c2('0x27')])[_0xb5c2('0x11')](function(_0x4b2970){if(_0x4b2970){_0x802dcd['endUserId']=_0x4b2970['id'];logger[_0xb5c2('0xf')](_0xb5c2('0x2a'),_0x802dcd[_0xb5c2('0x28')]);return _0x31a5f3(_0x802dcd);}createEndUser(_0x802dcd,_0x2b1b38,_0x4b9758,_0x435071)[_0xb5c2('0x11')](function(_0x101030){logger[_0xb5c2('0xf')](_0xb5c2('0x2b'),_0x101030[_0xb5c2('0x28')]);return _0x31a5f3(_0x101030);});});})[_0xb5c2('0x18')](function(_0x29131e){_0x2fe3d9(_0x29131e);});});};}function createEndUser(_0x447cbf,_0x263f80,_0x2454ce,_0x1995a3){return new Promise(function(_0x105d09,_0x5d30d3){var _0x1c785a=moment();var _0x5bda1d={'method':_0xb5c2('0x2c'),'uri':_0x1995a3+_0xb5c2('0x2d'),'body':{'contact':{'last_name':_0x447cbf[_0xb5c2('0x27')],'work_number':_0x447cbf[_0xb5c2('0x27')],'mobile_number':_0x447cbf[_0xb5c2('0x27')],'owner_id':_0x447cbf[_0xb5c2('0x1f')],'created_at':_0x1c785a[_0xb5c2('0x25')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x5bda1d['headers']=_0x2454ce;logger[_0xb5c2('0xf')](_0xb5c2('0x2e'));return rp(_0x5bda1d)[_0xb5c2('0x11')](function(_0x32d29b){_0x447cbf[_0xb5c2('0x28')]=_0x32d29b[_0xb5c2('0x2f')]['id'];_0x105d09(_0x447cbf);})[_0xb5c2('0x18')](function(_0x212c07){logger[_0xb5c2('0x22')]('['+[_0x263f80[_0xb5c2('0x19')]()]+']',_0x212c07[_0xb5c2('0x1a')]);_0x5d30d3(_0x212c07[_0xb5c2('0x1a')]);});});}function getTicket(_0x56ca85,_0x21e88f,_0x22801e,_0x379ecb,_0x55133c){return function(_0x45d837){logger[_0xb5c2('0xf')](_0xb5c2('0x30'));return new Promise(function(_0x564738,_0x173c89){var _0x3bef97=moment();var _0x4fd361={'method':_0xb5c2('0x2c'),'uri':_0x22801e+_0xb5c2('0x31'),'body':{'title':intUtil[_0xb5c2('0x32')](_0x379ecb[_0xb5c2('0x33')],_0x55133c,'\x20'),'description':intUtil['getString'](_0x379ecb[_0xb5c2('0x34')],_0x55133c,'\x0a'),'owner_id':_0x45d837[_0xb5c2('0x1f')],'creater_id':_0x45d837[_0xb5c2('0x15')],'targetable_id':_0x45d837[_0xb5c2('0x28')],'targetable_type':_0xb5c2('0x35'),'created_at':_0x3bef97[_0xb5c2('0x25')](_0xb5c2('0x36')),'due_date':_0x3bef97[_0xb5c2('0x37')](0x1e,'m')['format'](_0xb5c2('0x36'))},'json':!![]};_0x4fd361[_0xb5c2('0x1b')]=_0x21e88f;return rp(_0x4fd361)[_0xb5c2('0x11')](function(_0x39d21b){_0x45d837[_0xb5c2('0x38')]=_0x39d21b[_0xb5c2('0x39')]['id'];logger[_0xb5c2('0xf')]('Task\x20created:',_0x45d837[_0xb5c2('0x38')]);_0x564738(_0x45d837);})[_0xb5c2('0x18')](function(_0x3538c9){logger[_0xb5c2('0x22')]('['+[_0x56ca85[_0xb5c2('0x19')]()]+']',_0x3538c9[_0xb5c2('0x1a')]);_0x173c89(_0x3538c9['message']);});});};}function emit(_0xac6118,_0x128c8a,_0x24fc4a){var _0x5cb935={'uri':_0xac6118+'/contacts/'+_0x24fc4a};io['to'](util[_0xb5c2('0x25')]('user:%s',_0x128c8a))[_0xb5c2('0x3a')]('trigger:browser:url',_0x5cb935);}exports['cs']=function(_0x3f1126,_0x28fa4c,_0x51f491,_0x5e139e,_0x220283,_0x3eb480,_0x557c9a,_0x44e380){var _0x30270f={};var _0x2a3fa9={'Authorization':_0xb5c2('0x3b')+_0x3eb480[_0xb5c2('0x3c')]};_0x3eb480[_0xb5c2('0x3d')]=intUtil[_0xb5c2('0x3e')](_0x3eb480[_0xb5c2('0x3d')]);_0x3eb480[_0xb5c2('0x3f')]=intUtil[_0xb5c2('0x3e')](_0x3eb480[_0xb5c2('0x3f')]);var _0x147279=_0x3eb480['remoteUri'];_0x30270f[_0xb5c2('0x21')]=_0x3eb480[_0xb5c2('0x40')];_0x30270f[_0xb5c2('0x27')]=_0x44e380[_0xb5c2('0x41')]()===_0xb5c2('0x42')?_0x28fa4c['destcalleridnum']:_0x28fa4c[_0xb5c2('0x43')];_0x30270f[_0xb5c2('0x44')]=_0x44e380==='queue'||_0x44e380===_0xb5c2('0x45')?_0xb5c2('0x46'):_0xb5c2('0x42');if(_0x5e139e){_0x30270f[_0xb5c2('0x1d')]=_0x5e139e['email'];}var _0x230667=util[_0xb5c2('0x25')](_0xb5c2('0x47'),_0x3eb480['serverUrl'],_0x28fa4c['uniqueid'],md5(_0x28fa4c[_0xb5c2('0x48')]));if(_0x220283&&_0x220283[_0xb5c2('0x49')]){logger['info'](_0xb5c2('0x4a'),'Recording\x20is\x20enabled!');_0x28fa4c['recordingURL']=_0x230667;}else if(_0x557c9a&&_0x557c9a['recordingFormat']&&_0x557c9a[_0xb5c2('0x4b')]!=='none'){logger[_0xb5c2('0xf')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x28fa4c['recordingURL']=_0x230667;}else{_0x28fa4c[_0xb5c2('0x4c')]='';}return getAdminId(_0x30270f,_0x44e380,_0x2a3fa9,_0x147279)[_0xb5c2('0x11')](getUser(_0x44e380,_0x2a3fa9,_0x147279))[_0xb5c2('0x11')](getEndUser(_0x44e380,_0x2a3fa9,_0x147279))[_0xb5c2('0x11')](getTicket(_0x44e380,_0x2a3fa9,_0x147279,_0x51f491,_0x28fa4c))[_0xb5c2('0x11')](function(_0x28ad87){logger['info'](util[_0xb5c2('0x25')]('The\x20ticket\x20ID\x20is:\x20%s',_0x28ad87[_0xb5c2('0x38')]));if(_0x44e380!==_0xb5c2('0x45')){logger[_0xb5c2('0xf')]('['+[_0x44e380[_0xb5c2('0x19')]()]+']',_0xb5c2('0x4d'));emit(_0x147279,_0x5e139e[_0xb5c2('0x4e')],_0x28ad87[_0xb5c2('0x28')]);}})['catch'](function(_0x319132){logger[_0xb5c2('0x22')]('['+[_0x44e380[_0xb5c2('0x19')]()]+_0xb5c2('0x4f'),util['inspect'](_0x319132,{'showHidden':!![],'depth':null}));});};