e4f7800405df8af4e8e5cd3997be699e31deeaa6
[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 _0xd79c=['./util','../../../../config/environment','../../../../config/logger','defaults','localhost','socket.io-emitter','redis','GET','/api/selector/owners','headers','info','users','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','message','Getting\x20user\x20list','then','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','User\x20found:','userId','error','toUpperCase','/api/lookup?q=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','getString','Subjects','Descriptions','Contact','add','Task\x20created:','ticketId','user:%s','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','md5','util','moment','bluebird','ioredis'];(function(_0x34edec,_0x228935){var _0x2d276d=function(_0x1e1888){while(--_0x1e1888){_0x34edec['push'](_0x34edec['shift']());}};_0x2d276d(++_0x228935);}(_0xd79c,0xee));var _0xcd79=function(_0x2c6249,_0x4fc5d1){_0x2c6249=_0x2c6249-0x0;var _0x2eae85=_0xd79c[_0x2c6249];return _0x2eae85;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xcd79('0x0'));var util=require(_0xcd79('0x1'));var moment=require(_0xcd79('0x2'));var Promise=require(_0xcd79('0x3'));var Redis=require(_0xcd79('0x4'));var intUtil=require(_0xcd79('0x5'));var config=require(_0xcd79('0x6'));var logger=require(_0xcd79('0x7'))('freshsales');config['redis']=_[_0xcd79('0x8')](config['redis'],{'host':_0xcd79('0x9'),'port':0x18eb});var io=require(_0xcd79('0xa'))(new Redis(config[_0xcd79('0xb')]));function getAdminId(_0x226a7f,_0x3b00fa,_0x29ead1,_0x27652a){return new Promise(function(_0x2012bf,_0x5a2c63){var _0x3de8b0=![];var _0x412dca={'method':_0xcd79('0xc'),'uri':_0x27652a+_0xcd79('0xd'),'json':!![]};_0x412dca[_0xcd79('0xe')]=_0x29ead1;logger[_0xcd79('0xf')]('Getting\x20admin\x20information');return rp(_0x412dca)['then'](function(_0x58c18a){if(_0x58c18a){var _0x137056=_0x58c18a[_0xcd79('0x10')];var _0x10202b=null;for(_0x10202b=0x0;_0x10202b<_0x137056['length'];_0x10202b++){if(_0x137056[_0x10202b][_0xcd79('0x11')]===_0x226a7f[_0xcd79('0x12')]){_0x226a7f[_0xcd79('0x13')]=_0x137056[_0x10202b]['id'];_0x3de8b0=!![];}}if(_0x3de8b0){logger[_0xcd79('0xf')](_0xcd79('0x14'),_0x226a7f['adminId']);_0x2012bf(_0x226a7f);}else{_0x5a2c63({'statusCode':0x194,'message':_0xcd79('0x15')});}}else{_0x5a2c63({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xcd79('0x16')](function(_0x1aeba2){logger['error']('['+[_0x3b00fa['toUpperCase']()]+']',_0x1aeba2[_0xcd79('0x17')]);_0x5a2c63(_0x1aeba2);});});}function getUser(_0x40f2ac,_0x6b75dd,_0x3968f5){return function(_0x4945d0){return new Promise(function(_0x49b053,_0xc7d174){var _0x2258ff={'method':_0xcd79('0xc'),'uri':_0x3968f5+_0xcd79('0xd'),'json':!![]};_0x2258ff[_0xcd79('0xe')]=_0x6b75dd;logger['info'](_0xcd79('0x18'));return rp(_0x2258ff)[_0xcd79('0x19')](function(_0x51c64a){if(_0x51c64a){var _0x5e0bff=_0x51c64a[_0xcd79('0x10')];var _0x1a280f=![];var _0x24edcc=null;if(_0x4945d0[_0xcd79('0x1a')]!==null){logger['info'](_0xcd79('0x1b'),_0x4945d0[_0xcd79('0x1a')]);_0x4945d0[_0xcd79('0x1c')]=_0x4945d0[_0xcd79('0x1a')];for(_0x24edcc=0x0;_0x24edcc<_0x5e0bff[_0xcd79('0x1d')];_0x24edcc++){if(_0x5e0bff[_0x24edcc][_0xcd79('0x11')]===_0x4945d0[_0xcd79('0x1a')]){_0x1a280f=!![];_0x4945d0['userId']=_0x5e0bff[_0x24edcc]['id'];logger[_0xcd79('0xf')](_0xcd79('0x1e'),_0x4945d0[_0xcd79('0x1f')]);}}}if(!_0x1a280f){logger[_0xcd79('0xf')]('Admin\x20selected');_0x4945d0[_0xcd79('0x1c')]=_0x4945d0[_0xcd79('0x12')];_0x4945d0[_0xcd79('0x1f')]=_0x4945d0[_0xcd79('0x13')];_0x1a280f=!![];}if(_0x1a280f){_0x49b053(_0x4945d0);}else{_0xc7d174({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0xc7d174({'statusCode':0x194,'message':_0xcd79('0x15')});}})['catch'](function(_0x57f887){logger[_0xcd79('0x20')]('['+[_0x40f2ac[_0xcd79('0x21')]()]+']',_0x57f887[_0xcd79('0x17')]);_0xc7d174(_0x57f887);});});};}function searchContact(_0x519f7b,_0x3c9615,_0x91067d,_0x3f7807){return new Promise(function(_0x34c120,_0x26e4ad){var _0xd7b9a8={'method':_0xcd79('0xc'),'headers':_0x3c9615,'uri':_0x519f7b+_0xcd79('0x22')+_0x3f7807+'&f='+_0x91067d+_0xcd79('0x23'),'json':!![]};rp(_0xd7b9a8)[_0xcd79('0x19')](function(_0x173db4){var _0x4ff156=_[_0xcd79('0x24')](_0x173db4[_0xcd79('0x25')][_0xcd79('0x25')],[_0x91067d,_0x3f7807]);_0x34c120(_0x4ff156);})[_0xcd79('0x16')](function(_0x2864a1){_0x26e4ad(_0x2864a1);});});}function getEndUser(_0x1397f7,_0x59699b,_0x21ee85){return function(_0x3ff30c){return new Promise(function(_0x29ac6a,_0x141cfc){logger[_0xcd79('0xf')](util[_0xcd79('0x26')](_0xcd79('0x27'),_0x3ff30c[_0xcd79('0x28')]));searchContact(_0x21ee85,_0x59699b,_0xcd79('0x29'),_0x3ff30c[_0xcd79('0x28')])[_0xcd79('0x19')](function(_0x4c9d6d){if(_0x4c9d6d){_0x3ff30c[_0xcd79('0x2a')]=_0x4c9d6d['id'];logger[_0xcd79('0xf')](_0xcd79('0x2b'),_0x3ff30c[_0xcd79('0x2a')]);return _0x29ac6a(_0x3ff30c);}searchContact(_0x21ee85,_0x59699b,_0xcd79('0x2c'),_0x3ff30c[_0xcd79('0x28')])['then'](function(_0x596680){if(_0x596680){_0x3ff30c['endUserId']=_0x596680['id'];logger[_0xcd79('0xf')]('Contact\x20found\x20work_number:',_0x3ff30c[_0xcd79('0x2a')]);return _0x29ac6a(_0x3ff30c);}createEndUser(_0x3ff30c,_0x1397f7,_0x59699b,_0x21ee85)[_0xcd79('0x19')](function(_0xec62f1){logger['info'](_0xcd79('0x2d'),_0xec62f1[_0xcd79('0x2a')]);return _0x29ac6a(_0xec62f1);});});})['catch'](function(_0x1ac174){_0x141cfc(_0x1ac174);});});};}function createEndUser(_0xdf0377,_0x42fe96,_0x631ab7,_0x3727cd){return new Promise(function(_0xa00da6,_0x255645){var _0x4b4d7d=moment();var _0x1cc761={'method':_0xcd79('0x2e'),'uri':_0x3727cd+_0xcd79('0x2f'),'body':{'contact':{'last_name':_0xdf0377['contactNumber'],'work_number':_0xdf0377[_0xcd79('0x28')],'mobile_number':_0xdf0377[_0xcd79('0x28')],'owner_id':_0xdf0377[_0xcd79('0x1f')],'created_at':_0x4b4d7d[_0xcd79('0x26')](_0xcd79('0x30'))}},'json':!![]};_0x1cc761[_0xcd79('0xe')]=_0x631ab7;logger['info'](_0xcd79('0x31'));return rp(_0x1cc761)['then'](function(_0x22f4aa){_0xdf0377['endUserId']=_0x22f4aa[_0xcd79('0x32')]['id'];_0xa00da6(_0xdf0377);})['catch'](function(_0x411803){logger[_0xcd79('0x20')]('['+[_0x42fe96['toUpperCase']()]+']',_0x411803[_0xcd79('0x17')]);_0x255645(_0x411803[_0xcd79('0x17')]);});});}function getTicket(_0x1a4168,_0x49a7d4,_0xd47d7b,_0x41a774,_0x359931){return function(_0x146683){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x111089,_0x1b0294){var _0x2075da=moment();var _0x1ed2fb={'method':_0xcd79('0x2e'),'uri':_0xd47d7b+'/api/tasks','body':{'title':intUtil[_0xcd79('0x33')](_0x41a774[_0xcd79('0x34')],_0x359931,'\x20'),'description':intUtil[_0xcd79('0x33')](_0x41a774[_0xcd79('0x35')],_0x359931,'\x0a'),'owner_id':_0x146683[_0xcd79('0x1f')],'creater_id':_0x146683[_0xcd79('0x13')],'targetable_id':_0x146683[_0xcd79('0x2a')],'targetable_type':_0xcd79('0x36'),'created_at':_0x2075da[_0xcd79('0x26')](_0xcd79('0x30')),'due_date':_0x2075da[_0xcd79('0x37')](0x1e,'m')[_0xcd79('0x26')](_0xcd79('0x30'))},'json':!![]};_0x1ed2fb[_0xcd79('0xe')]=_0x49a7d4;return rp(_0x1ed2fb)[_0xcd79('0x19')](function(_0x5cef7a){_0x146683['ticketId']=_0x5cef7a['task']['id'];logger[_0xcd79('0xf')](_0xcd79('0x38'),_0x146683[_0xcd79('0x39')]);_0x111089(_0x146683);})['catch'](function(_0xce4ab8){logger[_0xcd79('0x20')]('['+[_0x1a4168[_0xcd79('0x21')]()]+']',_0xce4ab8[_0xcd79('0x17')]);_0x1b0294(_0xce4ab8['message']);});});};}function emit(_0x23c028,_0x43b155,_0x3c0c1d){var _0x3bdfa7={'uri':_0x23c028+'/contacts/'+_0x3c0c1d};io['to'](util[_0xcd79('0x26')](_0xcd79('0x3a'),_0x43b155))['emit']('trigger:browser:url',_0x3bdfa7);}exports['cs']=function(_0x4b4f36,_0x32f642,_0x5b0679,_0x35fa5,_0x14577f,_0x1bba6b,_0x100f42,_0xcdda18){var _0x4f390f={};var _0x539f96={'Authorization':_0xcd79('0x3b')+_0x1bba6b['apiKey']};_0x1bba6b[_0xcd79('0x3c')]=intUtil[_0xcd79('0x3d')](_0x1bba6b['remoteUri']);_0x1bba6b[_0xcd79('0x3e')]=intUtil['stripTrailingSlash'](_0x1bba6b[_0xcd79('0x3e')]);var _0x5e251c=_0x1bba6b[_0xcd79('0x3c')];_0x4f390f[_0xcd79('0x12')]=_0x1bba6b[_0xcd79('0x3f')];_0x4f390f['contactNumber']=_0xcdda18[_0xcd79('0x40')]()===_0xcd79('0x41')?_0x32f642['destcalleridnum']:_0x32f642[_0xcd79('0x42')];_0x4f390f[_0xcd79('0x43')]=_0xcdda18===_0xcd79('0x44')||_0xcdda18===_0xcd79('0x45')?_0xcd79('0x44'):_0xcd79('0x41');if(_0x35fa5){_0x4f390f['agentEmail']=_0x35fa5[_0xcd79('0x11')];}var _0x2bee61=util[_0xcd79('0x26')](_0xcd79('0x46'),_0x1bba6b[_0xcd79('0x3e')],_0x32f642[_0xcd79('0x47')],md5(_0x32f642['uniqueid']));if(_0x14577f&&_0x14577f['monitor_format']){logger['info'](_0xcd79('0x48'),_0xcd79('0x49'));_0x32f642['recordingURL']=_0x2bee61;}else if(_0x100f42&&_0x100f42[_0xcd79('0x4a')]&&_0x100f42[_0xcd79('0x4a')]!==_0xcd79('0x4b')){logger[_0xcd79('0xf')](_0xcd79('0x4c'),_0xcd79('0x49'));_0x32f642[_0xcd79('0x4d')]=_0x2bee61;}else{_0x32f642[_0xcd79('0x4d')]='';}return getAdminId(_0x4f390f,_0xcdda18,_0x539f96,_0x5e251c)[_0xcd79('0x19')](getUser(_0xcdda18,_0x539f96,_0x5e251c))[_0xcd79('0x19')](getEndUser(_0xcdda18,_0x539f96,_0x5e251c))[_0xcd79('0x19')](getTicket(_0xcdda18,_0x539f96,_0x5e251c,_0x5b0679,_0x32f642))[_0xcd79('0x19')](function(_0x3133d9){logger[_0xcd79('0xf')](util[_0xcd79('0x26')]('The\x20ticket\x20ID\x20is:\x20%s',_0x3133d9[_0xcd79('0x39')]));if(_0xcdda18!==_0xcd79('0x45')){logger['info']('['+[_0xcdda18[_0xcd79('0x21')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x5e251c,_0x35fa5[_0xcd79('0x4e')],_0x3133d9['endUserId']);}})[_0xcd79('0x16')](function(_0x66ede0){logger[_0xcd79('0x20')]('['+[_0xcdda18[_0xcd79('0x21')]()]+_0xcd79('0x4f'),util[_0xcd79('0x50')](_0x66ede0,{'showHidden':!![],'depth':null}));});};