Built motion from commit (unavailable).|2.5.6
[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 _0x53ab=['format','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','username','destcalleridnum','calleridnum','callDirection','queue','outbound','serverUrl','uniqueid','[QUEUE]','recordingURL','recordingFormat','Recording\x20is\x20enabled!','unmanaged',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','then','users','email','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','adminEmail','message','/api/contacts/filters','Getting\x20contacts\x20filter','filters','forEach','name','All\x20Contacts','Searching\x20contact\x20with\x20phone','contactNumber','contacts','length','find','work_number','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','/api/contacts'];(function(_0x504c47,_0x13020d){var _0x9e34e0=function(_0x371e4c){while(--_0x371e4c){_0x504c47['push'](_0x504c47['shift']());}};_0x9e34e0(++_0x13020d);}(_0x53ab,0x130));var _0xb53a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53ab[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb53a('0x0'));var rp=require(_0xb53a('0x1'));var md5=require(_0xb53a('0x2'));var util=require(_0xb53a('0x3'));var moment=require(_0xb53a('0x4'));var Promise=require(_0xb53a('0x5'));var Redis=require(_0xb53a('0x6'));var intUtil=require(_0xb53a('0x7'));var config=require(_0xb53a('0x8'));var logger=require(_0xb53a('0x9'))('freshsales');config[_0xb53a('0xa')]=_[_0xb53a('0xb')](config['redis'],{'host':_0xb53a('0xc'),'port':0x18eb});var io=require(_0xb53a('0xd'))(new Redis(config['redis']));function getAdminId(_0x2c3b3f,_0x2fc1fe,_0x5e99ac,_0x21a392){return new Promise(function(_0x20e4ec,_0x381ed9){var _0x6bd255=![];var _0x3fe349={'method':_0xb53a('0xe'),'uri':_0x21a392+_0xb53a('0xf'),'json':!![]};_0x3fe349[_0xb53a('0x10')]=_0x5e99ac;logger[_0xb53a('0x11')]('Getting\x20admin\x20information');return rp(_0x3fe349)[_0xb53a('0x12')](function(_0x35b739){if(_0x35b739){var _0x362d78=_0x35b739[_0xb53a('0x13')];var _0x7f10a2=null;for(_0x7f10a2=0x0;_0x7f10a2<_0x362d78['length'];_0x7f10a2++){if(_0x362d78[_0x7f10a2][_0xb53a('0x14')]===_0x2c3b3f['adminEmail']){_0x2c3b3f['adminId']=_0x362d78[_0x7f10a2]['id'];_0x6bd255=!![];}}if(_0x6bd255){logger['info']('Admin\x20found:',_0x2c3b3f[_0xb53a('0x15')]);_0x20e4ec(_0x2c3b3f);}else{_0x381ed9({'statusCode':0x194,'message':_0xb53a('0x16')});}}else{_0x381ed9({'statusCode':0x194,'message':_0xb53a('0x16')});}})[_0xb53a('0x17')](function(_0x10c0c8){logger[_0xb53a('0x18')]('['+[_0x2fc1fe[_0xb53a('0x19')]()]+']',_0x10c0c8['message']);_0x381ed9(_0x10c0c8);});});}function getUser(_0x22c80e,_0x5b9105,_0x2414c8){return function(_0x473376){return new Promise(function(_0xe89fe1,_0x4b94f5){var _0xcff8bb={'method':'GET','uri':_0x2414c8+_0xb53a('0xf'),'json':!![]};_0xcff8bb[_0xb53a('0x10')]=_0x5b9105;logger[_0xb53a('0x11')](_0xb53a('0x1a'));return rp(_0xcff8bb)[_0xb53a('0x12')](function(_0x5054fc){if(_0x5054fc){var _0x316687=_0x5054fc['users'];var _0x324501=![];var _0x899b2d=null;if(_0x473376[_0xb53a('0x1b')]!==null){logger['info'](_0xb53a('0x1c'),_0x473376[_0xb53a('0x1b')]);_0x473376['userEmail']=_0x473376[_0xb53a('0x1b')];for(_0x899b2d=0x0;_0x899b2d<_0x316687['length'];_0x899b2d++){if(_0x316687[_0x899b2d][_0xb53a('0x14')]===_0x473376['agentEmail']){_0x324501=!![];_0x473376[_0xb53a('0x1d')]=_0x316687[_0x899b2d]['id'];logger[_0xb53a('0x11')](_0xb53a('0x1e'),_0x473376[_0xb53a('0x1d')]);}}}if(!_0x324501){logger[_0xb53a('0x11')](_0xb53a('0x1f'));_0x473376[_0xb53a('0x20')]=_0x473376[_0xb53a('0x21')];_0x473376['userId']=_0x473376[_0xb53a('0x15')];_0x324501=!![];}if(_0x324501){_0xe89fe1(_0x473376);}else{_0x4b94f5({'statusCode':0x194,'message':_0xb53a('0x16')});}}else{_0x4b94f5({'statusCode':0x194,'message':_0xb53a('0x16')});}})[_0xb53a('0x17')](function(_0x440dfc){logger['error']('['+[_0x22c80e[_0xb53a('0x19')]()]+']',_0x440dfc[_0xb53a('0x22')]);_0x4b94f5(_0x440dfc);});});};}function getEndUser(_0x315309,_0x4b2fbe,_0x5e3fee){return function(_0x473039){return new Promise(function(_0x5b6fa1,_0x182317){var _0x45bff6=0x0;var _0xa6bcee={'method':'GET','uri':_0x5e3fee+_0xb53a('0x23'),'json':!![]};_0xa6bcee[_0xb53a('0x10')]=_0x4b2fbe;logger[_0xb53a('0x11')](_0xb53a('0x24'));return rp(_0xa6bcee)[_0xb53a('0x12')](function(_0x7184b9){_0x7184b9[_0xb53a('0x25')][_0xb53a('0x26')](function(_0x4c86bd){if(_0x4c86bd[_0xb53a('0x27')]===_0xb53a('0x28')){_0x45bff6=_0x4c86bd['id'];}});})[_0xb53a('0x12')](function(){logger[_0xb53a('0x11')]('Getting\x20contact\x20list');var _0x148980={'method':'GET','uri':_0x5e3fee+'/api/contacts/view/'+_0x45bff6,'json':!![]};_0x148980[_0xb53a('0x10')]=_0x4b2fbe;return rp(_0x148980);})[_0xb53a('0x12')](function(_0x28ad2c){logger[_0xb53a('0x11')](_0xb53a('0x29'),_0x473039[_0xb53a('0x2a')]);if(_0x28ad2c[_0xb53a('0x2b')][_0xb53a('0x2c')]>0x0){var _0x20df11=_[_0xb53a('0x2d')](_0x28ad2c['contacts'],function(_0x504768){if(_0x504768[_0xb53a('0x2e')]===_0x473039[_0xb53a('0x2a')]||_0x504768[_0xb53a('0x2f')]===_0x473039[_0xb53a('0x2a')]){return _0x504768;}});if(_0x20df11){_0x473039[_0xb53a('0x30')]=_0x20df11['id'];logger[_0xb53a('0x11')](_0xb53a('0x31'),_0x473039[_0xb53a('0x30')]);_0x5b6fa1(_0x473039);}else{return createEndUser(_0x473039,_0x315309,_0x4b2fbe,_0x5e3fee)['then'](function(_0x10e244){logger[_0xb53a('0x11')](_0xb53a('0x32'),_0x473039[_0xb53a('0x30')]);_0x5b6fa1(_0x10e244);});}}else{return createEndUser(_0x473039,_0x315309,_0x4b2fbe,_0x5e3fee)['then'](function(_0x5af119){logger[_0xb53a('0x11')](_0xb53a('0x32'),_0x473039[_0xb53a('0x30')]);_0x5b6fa1(_0x5af119);});}})[_0xb53a('0x17')](function(_0x1f379c){throw new Error(_0x1f379c['message']);});});};}function createEndUser(_0x1f1fc7,_0x48278b,_0x17bc6e,_0x3c2e91){return new Promise(function(_0x18918a,_0x52ae30){var _0x3ceab0=moment();var _0x5189a9={'method':'POST','uri':_0x3c2e91+_0xb53a('0x33'),'body':{'contact':{'last_name':_0x1f1fc7[_0xb53a('0x2a')],'work_number':_0x1f1fc7[_0xb53a('0x2a')],'mobile_number':_0x1f1fc7[_0xb53a('0x2a')],'owner_id':_0x1f1fc7['userId'],'created_at':_0x3ceab0[_0xb53a('0x34')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x5189a9[_0xb53a('0x10')]=_0x17bc6e;logger['info'](_0xb53a('0x35'));return rp(_0x5189a9)[_0xb53a('0x12')](function(_0x3dca7c){_0x1f1fc7[_0xb53a('0x30')]=_0x3dca7c[_0xb53a('0x36')]['id'];_0x18918a(_0x1f1fc7);})[_0xb53a('0x17')](function(_0x395198){logger[_0xb53a('0x18')]('['+[_0x48278b[_0xb53a('0x19')]()]+']',_0x395198['message']);_0x52ae30(_0x395198[_0xb53a('0x22')]);});});}function getTicket(_0x30ce1f,_0x2731c5,_0x3db028,_0x23c342,_0x3789c2){return function(_0x24078f){logger[_0xb53a('0x11')](_0xb53a('0x37'));return new Promise(function(_0x5953e0,_0x420f04){var _0x3a2a6c=moment();var _0x3f656c={'method':_0xb53a('0x38'),'uri':_0x3db028+_0xb53a('0x39'),'body':{'title':intUtil[_0xb53a('0x3a')](_0x23c342[_0xb53a('0x3b')],_0x3789c2,'\x20'),'description':intUtil[_0xb53a('0x3a')](_0x23c342[_0xb53a('0x3c')],_0x3789c2,'\x0a'),'owner_id':_0x24078f[_0xb53a('0x1d')],'creater_id':_0x24078f[_0xb53a('0x15')],'targetable_id':_0x24078f[_0xb53a('0x30')],'targetable_type':_0xb53a('0x3d'),'created_at':_0x3a2a6c[_0xb53a('0x34')](_0xb53a('0x3e')),'due_date':_0x3a2a6c[_0xb53a('0x3f')](0x1e,'m')[_0xb53a('0x34')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x3f656c['headers']=_0x2731c5;return rp(_0x3f656c)[_0xb53a('0x12')](function(_0x58113c){_0x24078f[_0xb53a('0x40')]=_0x58113c[_0xb53a('0x41')]['id'];logger[_0xb53a('0x11')](_0xb53a('0x42'),_0x24078f[_0xb53a('0x40')]);_0x5953e0(_0x24078f);})[_0xb53a('0x17')](function(_0x100a12){logger['error']('['+[_0x30ce1f[_0xb53a('0x19')]()]+']',_0x100a12['message']);_0x420f04(_0x100a12['message']);});});};}function emit(_0x5ad947,_0x1cbbf0,_0x508b99){var _0xfe4754={'uri':_0x5ad947+_0xb53a('0x43')+_0x508b99};io['to'](util[_0xb53a('0x34')](_0xb53a('0x44'),_0x1cbbf0))[_0xb53a('0x45')](_0xb53a('0x46'),_0xfe4754);}exports['cs']=function(_0x33da3a,_0x2f8169,_0x15a14b,_0xf00dcb,_0x2991e6,_0x3a9fd5,_0x1b6229,_0x373761){var _0x464665={};var _0x487a82={'Authorization':_0xb53a('0x47')+_0x3a9fd5[_0xb53a('0x48')]};_0x3a9fd5['remoteUri']=intUtil[_0xb53a('0x49')](_0x3a9fd5['remoteUri']);_0x3a9fd5['serverUrl']=intUtil[_0xb53a('0x49')](_0x3a9fd5['serverUrl']);var _0x4ebd72=_0x3a9fd5['remoteUri'];_0x464665['adminEmail']=_0x3a9fd5[_0xb53a('0x4a')];_0x464665[_0xb53a('0x2a')]=_0x373761['toLowerCase']()==='outbound'?_0x2f8169[_0xb53a('0x4b')]:_0x2f8169[_0xb53a('0x4c')];_0x464665[_0xb53a('0x4d')]=_0x373761===_0xb53a('0x4e')||_0x373761==='unmanaged'?'queue':_0xb53a('0x4f');if(_0xf00dcb){_0x464665[_0xb53a('0x1b')]=_0xf00dcb[_0xb53a('0x14')];}var _0x281644=util[_0xb53a('0x34')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3a9fd5[_0xb53a('0x50')],_0x2f8169[_0xb53a('0x51')],md5(_0x2f8169[_0xb53a('0x51')]));if(_0x2991e6&&_0x2991e6['monitor_format']){logger[_0xb53a('0x11')](_0xb53a('0x52'),'Recording\x20is\x20enabled!');_0x2f8169[_0xb53a('0x53')]=_0x281644;}else if(_0x1b6229&&_0x1b6229[_0xb53a('0x54')]&&_0x1b6229[_0xb53a('0x54')]!=='none'){logger[_0xb53a('0x11')]('[OUTBOUND]',_0xb53a('0x55'));_0x2f8169[_0xb53a('0x53')]=_0x281644;}else{_0x2f8169[_0xb53a('0x53')]='';}return getAdminId(_0x464665,_0x373761,_0x487a82,_0x4ebd72)['then'](getUser(_0x373761,_0x487a82,_0x4ebd72))[_0xb53a('0x12')](getEndUser(_0x373761,_0x487a82,_0x4ebd72))[_0xb53a('0x12')](getTicket(_0x373761,_0x487a82,_0x4ebd72,_0x15a14b,_0x2f8169))[_0xb53a('0x12')](function(_0x52ed5){logger[_0xb53a('0x11')](util[_0xb53a('0x34')]('The\x20ticket\x20ID\x20is:\x20%s',_0x52ed5[_0xb53a('0x40')]));if(_0x373761!==_0xb53a('0x56')){logger['info']('['+[_0x373761['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x4ebd72,_0xf00dcb['name'],_0x52ed5[_0xb53a('0x30')]);}})[_0xb53a('0x17')](function(_0xd7eff0){logger['error']('['+[_0x373761['toUpperCase']()]+_0xb53a('0x57'),util[_0xb53a('0x58')](_0xd7eff0,{'showHidden':!![],'depth':null}));});};