Built motion from commit 1ea47bf4.|2.6.34
[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 _0xdde8=['%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminId','Requested\x20Resource\x20not\x20Found','catch','error','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','User\x20found:','adminEmail','userId','&f=','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','toUpperCase','message','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Contact','add','task','ticketId','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','toLowerCase','outbound','destcalleridnum','calleridnum','unmanaged','queue'];(function(_0x146214,_0x13482f){var _0x2c2acb=function(_0xb0ad23){while(--_0xb0ad23){_0x146214['push'](_0x146214['shift']());}};_0x2c2acb(++_0x13482f);}(_0xdde8,0x158));var _0x8dde=function(_0x2f6057,_0x1bf849){_0x2f6057=_0x2f6057-0x0;var _0x5012f7=_0xdde8[_0x2f6057];return _0x5012f7;};'use strict';var _=require(_0x8dde('0x0'));var rp=require(_0x8dde('0x1'));var md5=require(_0x8dde('0x2'));var util=require(_0x8dde('0x3'));var moment=require(_0x8dde('0x4'));var Promise=require(_0x8dde('0x5'));var Redis=require(_0x8dde('0x6'));var intUtil=require('./util');var config=require(_0x8dde('0x7'));var logger=require(_0x8dde('0x8'))('freshsales');config['redis']=_['defaults'](config[_0x8dde('0x9')],{'host':_0x8dde('0xa'),'port':0x18eb});var io=require(_0x8dde('0xb'))(new Redis(config['redis']));function getAdminId(_0xfca0b7,_0x53fc60,_0x47a8e5,_0x36e418){return new Promise(function(_0x15e5b4,_0x4de727){var _0x5a773c=![];var _0x230bda={'method':_0x8dde('0xc'),'uri':_0x36e418+_0x8dde('0xd'),'json':!![]};_0x230bda[_0x8dde('0xe')]=_0x47a8e5;logger[_0x8dde('0xf')](_0x8dde('0x10'));return rp(_0x230bda)[_0x8dde('0x11')](function(_0x6a68d4){if(_0x6a68d4){var _0x365d35=_0x6a68d4[_0x8dde('0x12')];var _0xf2f4ef=null;for(_0xf2f4ef=0x0;_0xf2f4ef<_0x365d35[_0x8dde('0x13')];_0xf2f4ef++){if(_0x365d35[_0xf2f4ef]['email']===_0xfca0b7['adminEmail']){_0xfca0b7[_0x8dde('0x14')]=_0x365d35[_0xf2f4ef]['id'];_0x5a773c=!![];}}if(_0x5a773c){logger[_0x8dde('0xf')]('Admin\x20found:',_0xfca0b7['adminId']);_0x15e5b4(_0xfca0b7);}else{_0x4de727({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x4de727({'statusCode':0x194,'message':_0x8dde('0x15')});}})[_0x8dde('0x16')](function(_0x4eaeda){logger[_0x8dde('0x17')]('['+[_0x53fc60['toUpperCase']()]+']',_0x4eaeda['message']);_0x4de727(_0x4eaeda);});});}function getUser(_0x4ee947,_0x50d8a1,_0x1cfc73){return function(_0x45192c){return new Promise(function(_0x1a6a51,_0x5d57f5){var _0x3954e4={'method':_0x8dde('0xc'),'uri':_0x1cfc73+'/api/selector/owners','json':!![]};_0x3954e4[_0x8dde('0xe')]=_0x50d8a1;logger[_0x8dde('0xf')](_0x8dde('0x18'));return rp(_0x3954e4)[_0x8dde('0x11')](function(_0x729e9a){if(_0x729e9a){var _0x2bf03f=_0x729e9a[_0x8dde('0x12')];var _0x1cbc70=![];var _0x456840=null;if(_0x45192c[_0x8dde('0x19')]!==null){logger[_0x8dde('0xf')](_0x8dde('0x1a'),_0x45192c[_0x8dde('0x19')]);_0x45192c[_0x8dde('0x1b')]=_0x45192c['agentEmail'];for(_0x456840=0x0;_0x456840<_0x2bf03f[_0x8dde('0x13')];_0x456840++){if(_0x2bf03f[_0x456840][_0x8dde('0x1c')]===_0x45192c[_0x8dde('0x19')]){_0x1cbc70=!![];_0x45192c['userId']=_0x2bf03f[_0x456840]['id'];logger[_0x8dde('0xf')](_0x8dde('0x1d'),_0x45192c['userId']);}}}if(!_0x1cbc70){logger[_0x8dde('0xf')]('Admin\x20selected');_0x45192c['userEmail']=_0x45192c[_0x8dde('0x1e')];_0x45192c[_0x8dde('0x1f')]=_0x45192c['adminId'];_0x1cbc70=!![];}if(_0x1cbc70){_0x1a6a51(_0x45192c);}else{_0x5d57f5({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x5d57f5({'statusCode':0x194,'message':_0x8dde('0x15')});}})[_0x8dde('0x16')](function(_0xde7fd4){logger['error']('['+[_0x4ee947['toUpperCase']()]+']',_0xde7fd4['message']);_0x5d57f5(_0xde7fd4);});});};}function searchContact(_0x39d270,_0x2b30ba,_0x5e0aaa,_0x206afc){return new Promise(function(_0x50b25c,_0x283aa4){var _0x1372c9={'method':_0x8dde('0xc'),'headers':_0x2b30ba,'uri':_0x39d270+'/api/lookup?q='+_0x206afc+_0x8dde('0x20')+_0x5e0aaa+'&entities=contact','json':!![]};rp(_0x1372c9)[_0x8dde('0x11')](function(_0x46dbc9){var _0x44aac4=_['find'](_0x46dbc9['contacts'][_0x8dde('0x21')],[_0x5e0aaa,_0x206afc]);_0x50b25c(_0x44aac4);})[_0x8dde('0x16')](function(_0x1a5385){_0x283aa4(_0x1a5385);});});}function getEndUser(_0x8874b3,_0x3b1df7,_0x559142){return function(_0x1d6712){return new Promise(function(_0x31b447,_0x42123c){logger[_0x8dde('0xf')](util[_0x8dde('0x22')](_0x8dde('0x23'),_0x1d6712[_0x8dde('0x24')]));searchContact(_0x559142,_0x3b1df7,'mobile_number',_0x1d6712[_0x8dde('0x24')])[_0x8dde('0x11')](function(_0x1bebd2){if(_0x1bebd2){_0x1d6712[_0x8dde('0x25')]=_0x1bebd2['id'];logger[_0x8dde('0xf')](_0x8dde('0x26'),_0x1d6712['endUserId']);return _0x31b447(_0x1d6712);}searchContact(_0x559142,_0x3b1df7,_0x8dde('0x27'),_0x1d6712['contactNumber'])['then'](function(_0x7a915a){if(_0x7a915a){_0x1d6712[_0x8dde('0x25')]=_0x7a915a['id'];logger[_0x8dde('0xf')](_0x8dde('0x28'),_0x1d6712[_0x8dde('0x25')]);return _0x31b447(_0x1d6712);}createEndUser(_0x1d6712,_0x8874b3,_0x3b1df7,_0x559142)[_0x8dde('0x11')](function(_0x33e39c){logger[_0x8dde('0xf')](_0x8dde('0x29'),_0x33e39c[_0x8dde('0x25')]);return _0x31b447(_0x33e39c);});});})[_0x8dde('0x16')](function(_0x5068bf){_0x42123c(_0x5068bf);});});};}function createEndUser(_0x605c8a,_0x23d095,_0x4b2979,_0x171ec6){return new Promise(function(_0x49771f,_0x276c41){var _0x9b1317=moment();var _0x1e0438={'method':'POST','uri':_0x171ec6+_0x8dde('0x2a'),'body':{'contact':{'last_name':_0x605c8a[_0x8dde('0x24')],'work_number':_0x605c8a['contactNumber'],'mobile_number':_0x605c8a[_0x8dde('0x24')],'owner_id':_0x605c8a[_0x8dde('0x1f')],'created_at':_0x9b1317['format'](_0x8dde('0x2b'))}},'json':!![]};_0x1e0438['headers']=_0x4b2979;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x1e0438)[_0x8dde('0x11')](function(_0x477b50){_0x605c8a['endUserId']=_0x477b50[_0x8dde('0x2c')]['id'];_0x49771f(_0x605c8a);})[_0x8dde('0x16')](function(_0xeb6a4e){logger[_0x8dde('0x17')]('['+[_0x23d095[_0x8dde('0x2d')]()]+']',_0xeb6a4e[_0x8dde('0x2e')]);_0x276c41(_0xeb6a4e[_0x8dde('0x2e')]);});});}function getTicket(_0x589392,_0x13fee6,_0x594f85,_0x39a68a,_0x5d8629){return function(_0x474435){logger[_0x8dde('0xf')](_0x8dde('0x2f'));return new Promise(function(_0x2acd7f,_0x274dd0){var _0x4aca84=moment();var _0xd5e1a4={'method':_0x8dde('0x30'),'uri':_0x594f85+_0x8dde('0x31'),'body':{'title':intUtil[_0x8dde('0x32')](_0x39a68a[_0x8dde('0x33')],_0x5d8629,'\x20'),'description':intUtil[_0x8dde('0x32')](_0x39a68a['Descriptions'],_0x5d8629,'\x0a'),'owner_id':_0x474435[_0x8dde('0x1f')],'creater_id':_0x474435[_0x8dde('0x14')],'targetable_id':_0x474435[_0x8dde('0x25')],'targetable_type':_0x8dde('0x34'),'created_at':_0x4aca84['format'](_0x8dde('0x2b')),'due_date':_0x4aca84[_0x8dde('0x35')](0x1e,'m')[_0x8dde('0x22')](_0x8dde('0x2b'))},'json':!![]};_0xd5e1a4[_0x8dde('0xe')]=_0x13fee6;return rp(_0xd5e1a4)[_0x8dde('0x11')](function(_0x1de905){_0x474435['ticketId']=_0x1de905[_0x8dde('0x36')]['id'];logger['info']('Task\x20created:',_0x474435[_0x8dde('0x37')]);_0x2acd7f(_0x474435);})['catch'](function(_0x121ced){logger[_0x8dde('0x17')]('['+[_0x589392[_0x8dde('0x2d')]()]+']',_0x121ced['message']);_0x274dd0(_0x121ced[_0x8dde('0x2e')]);});});};}function emit(_0x4c9dc4,_0x481dfa,_0x590ef7){var _0x1a71dc={'uri':_0x4c9dc4+_0x8dde('0x38')+_0x590ef7};io['to'](util[_0x8dde('0x22')](_0x8dde('0x39'),_0x481dfa))[_0x8dde('0x3a')](_0x8dde('0x3b'),_0x1a71dc);}exports['cs']=function(_0x2e54dc,_0x463f9c,_0x2d8689,_0x23ac6a,_0x440cd5,_0x3c7c53,_0x1e5bd9,_0x33d906){var _0x16f20f={};var _0x5aee52={'Authorization':_0x8dde('0x3c')+_0x3c7c53[_0x8dde('0x3d')]};_0x3c7c53[_0x8dde('0x3e')]=intUtil['stripTrailingSlash'](_0x3c7c53[_0x8dde('0x3e')]);_0x3c7c53[_0x8dde('0x3f')]=intUtil[_0x8dde('0x40')](_0x3c7c53[_0x8dde('0x3f')]);var _0x127ad0=_0x3c7c53[_0x8dde('0x3e')];_0x16f20f[_0x8dde('0x1e')]=_0x3c7c53['username'];_0x16f20f[_0x8dde('0x24')]=_0x33d906[_0x8dde('0x41')]()===_0x8dde('0x42')?_0x463f9c[_0x8dde('0x43')]:_0x463f9c[_0x8dde('0x44')];_0x16f20f['callDirection']=_0x33d906==='queue'||_0x33d906===_0x8dde('0x45')?_0x8dde('0x46'):'outbound';if(_0x23ac6a){_0x16f20f[_0x8dde('0x19')]=_0x23ac6a[_0x8dde('0x1c')];}var _0x2df84a=util[_0x8dde('0x22')](_0x8dde('0x47'),_0x3c7c53[_0x8dde('0x3f')],_0x463f9c[_0x8dde('0x48')],md5(_0x463f9c['uniqueid']));if(_0x440cd5&&_0x440cd5[_0x8dde('0x49')]){logger['info'](_0x8dde('0x4a'),'Recording\x20is\x20enabled!');_0x463f9c[_0x8dde('0x4b')]=_0x2df84a;}else if(_0x1e5bd9&&_0x1e5bd9[_0x8dde('0x4c')]&&_0x1e5bd9[_0x8dde('0x4c')]!==_0x8dde('0x4d')){logger['info']('[OUTBOUND]',_0x8dde('0x4e'));_0x463f9c[_0x8dde('0x4b')]=_0x2df84a;}else{_0x463f9c[_0x8dde('0x4b')]='';}return getAdminId(_0x16f20f,_0x33d906,_0x5aee52,_0x127ad0)[_0x8dde('0x11')](getUser(_0x33d906,_0x5aee52,_0x127ad0))[_0x8dde('0x11')](getEndUser(_0x33d906,_0x5aee52,_0x127ad0))[_0x8dde('0x11')](getTicket(_0x33d906,_0x5aee52,_0x127ad0,_0x2d8689,_0x463f9c))[_0x8dde('0x11')](function(_0x2d5c61){logger[_0x8dde('0xf')](util[_0x8dde('0x22')]('The\x20ticket\x20ID\x20is:\x20%s',_0x2d5c61[_0x8dde('0x37')]));if(_0x33d906!==_0x8dde('0x45')){logger[_0x8dde('0xf')]('['+[_0x33d906[_0x8dde('0x2d')]()]+']',_0x8dde('0x4f'));emit(_0x127ad0,_0x23ac6a[_0x8dde('0x50')],_0x2d5c61[_0x8dde('0x25')]);}})[_0x8dde('0x16')](function(_0x26c804){logger['error']('['+[_0x33d906[_0x8dde('0x2d')]()]+_0x8dde('0x51'),util[_0x8dde('0x52')](_0x26c804,{'showHidden':!![],'depth':null}));});};