Built motion from commit c116dc8b.|2.6.30
[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 _0xca5f=['&entities=contact','find','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','contactNumber','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','message','getString','Subjects','Descriptions','Contact','add','ticketId','task','/contacts/','user:%s','trigger:browser:url','apiKey','stripTrailingSlash','remoteUri','serverUrl','toLowerCase','destcalleridnum','callDirection','queue','unmanaged','outbound','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','name','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','then','users','length','email','adminEmail','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','Getting\x20user\x20list','agentEmail','userEmail','userId','Admin\x20selected','adminId','catch','/api/lookup?q=','&f='];(function(_0x19d0ed,_0xc6ad42){var _0x4c7fcf=function(_0x270fe2){while(--_0x270fe2){_0x19d0ed['push'](_0x19d0ed['shift']());}};_0x4c7fcf(++_0xc6ad42);}(_0xca5f,0xc8));var _0xfca5=function(_0x4ee96a,_0x186362){_0x4ee96a=_0x4ee96a-0x0;var _0x18acb1=_0xca5f[_0x4ee96a];return _0x18acb1;};'use strict';var _=require('lodash');var rp=require(_0xfca5('0x0'));var md5=require(_0xfca5('0x1'));var util=require(_0xfca5('0x2'));var moment=require(_0xfca5('0x3'));var Promise=require(_0xfca5('0x4'));var Redis=require(_0xfca5('0x5'));var intUtil=require(_0xfca5('0x6'));var config=require(_0xfca5('0x7'));var logger=require('../../../../config/logger')('freshsales');config['redis']=_[_0xfca5('0x8')](config[_0xfca5('0x9')],{'host':_0xfca5('0xa'),'port':0x18eb});var io=require(_0xfca5('0xb'))(new Redis(config[_0xfca5('0x9')]));function getAdminId(_0x38da3f,_0xfeaa77,_0x4a2be0,_0x21409a){return new Promise(function(_0x1b399d,_0x23039a){var _0x35a2ab=![];var _0x71f012={'method':_0xfca5('0xc'),'uri':_0x21409a+_0xfca5('0xd'),'json':!![]};_0x71f012[_0xfca5('0xe')]=_0x4a2be0;logger['info']('Getting\x20admin\x20information');return rp(_0x71f012)[_0xfca5('0xf')](function(_0x4477cc){if(_0x4477cc){var _0x5ab7c8=_0x4477cc[_0xfca5('0x10')];var _0x414f6d=null;for(_0x414f6d=0x0;_0x414f6d<_0x5ab7c8[_0xfca5('0x11')];_0x414f6d++){if(_0x5ab7c8[_0x414f6d][_0xfca5('0x12')]===_0x38da3f[_0xfca5('0x13')]){_0x38da3f['adminId']=_0x5ab7c8[_0x414f6d]['id'];_0x35a2ab=!![];}}if(_0x35a2ab){logger[_0xfca5('0x14')](_0xfca5('0x15'),_0x38da3f['adminId']);_0x1b399d(_0x38da3f);}else{_0x23039a({'statusCode':0x194,'message':_0xfca5('0x16')});}}else{_0x23039a({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x2723aa){logger[_0xfca5('0x17')]('['+[_0xfeaa77[_0xfca5('0x18')]()]+']',_0x2723aa['message']);_0x23039a(_0x2723aa);});});}function getUser(_0x1084b4,_0x24ab70,_0x5d660d){return function(_0x9842db){return new Promise(function(_0x70bcd5,_0x44e25a){var _0xcdddb7={'method':_0xfca5('0xc'),'uri':_0x5d660d+_0xfca5('0xd'),'json':!![]};_0xcdddb7[_0xfca5('0xe')]=_0x24ab70;logger[_0xfca5('0x14')](_0xfca5('0x19'));return rp(_0xcdddb7)[_0xfca5('0xf')](function(_0x2eaf28){if(_0x2eaf28){var _0x1cfba0=_0x2eaf28[_0xfca5('0x10')];var _0x538cc8=![];var _0x51dc40=null;if(_0x9842db['agentEmail']!==null){logger['info']('Getting\x20user\x20with\x20email',_0x9842db[_0xfca5('0x1a')]);_0x9842db[_0xfca5('0x1b')]=_0x9842db['agentEmail'];for(_0x51dc40=0x0;_0x51dc40<_0x1cfba0[_0xfca5('0x11')];_0x51dc40++){if(_0x1cfba0[_0x51dc40]['email']===_0x9842db['agentEmail']){_0x538cc8=!![];_0x9842db[_0xfca5('0x1c')]=_0x1cfba0[_0x51dc40]['id'];logger[_0xfca5('0x14')]('User\x20found:',_0x9842db[_0xfca5('0x1c')]);}}}if(!_0x538cc8){logger[_0xfca5('0x14')](_0xfca5('0x1d'));_0x9842db[_0xfca5('0x1b')]=_0x9842db[_0xfca5('0x13')];_0x9842db[_0xfca5('0x1c')]=_0x9842db[_0xfca5('0x1e')];_0x538cc8=!![];}if(_0x538cc8){_0x70bcd5(_0x9842db);}else{_0x44e25a({'statusCode':0x194,'message':_0xfca5('0x16')});}}else{_0x44e25a({'statusCode':0x194,'message':_0xfca5('0x16')});}})[_0xfca5('0x1f')](function(_0x52e3ff){logger[_0xfca5('0x17')]('['+[_0x1084b4[_0xfca5('0x18')]()]+']',_0x52e3ff['message']);_0x44e25a(_0x52e3ff);});});};}function searchContact(_0x9bd379,_0x3f7253,_0x341365,_0xf27b1b){return new Promise(function(_0x1927c0,_0x1ca1e1){var _0x3a9654={'method':_0xfca5('0xc'),'headers':_0x3f7253,'uri':_0x9bd379+_0xfca5('0x20')+_0xf27b1b+_0xfca5('0x21')+_0x341365+_0xfca5('0x22'),'json':!![]};rp(_0x3a9654)[_0xfca5('0xf')](function(_0x5e9bb8){var _0x571709=_[_0xfca5('0x23')](_0x5e9bb8['contacts']['contacts'],[_0x341365,_0xf27b1b]);_0x1927c0(_0x571709);})['catch'](function(_0x30526a){_0x1ca1e1(_0x30526a);});});}function getEndUser(_0x39af0b,_0x54e99d,_0x53d483){return function(_0x537af3){return new Promise(function(_0x2e3dff,_0x1bd18d){logger[_0xfca5('0x14')](util[_0xfca5('0x24')](_0xfca5('0x25'),_0x537af3['contactNumber']));searchContact(_0x53d483,_0x54e99d,_0xfca5('0x26'),_0x537af3['contactNumber'])[_0xfca5('0xf')](function(_0x37988e){if(_0x37988e){_0x537af3[_0xfca5('0x27')]=_0x37988e['id'];logger[_0xfca5('0x14')](_0xfca5('0x28'),_0x537af3[_0xfca5('0x27')]);return _0x2e3dff(_0x537af3);}searchContact(_0x53d483,_0x54e99d,_0xfca5('0x29'),_0x537af3[_0xfca5('0x2a')])['then'](function(_0x51350a){if(_0x51350a){_0x537af3[_0xfca5('0x27')]=_0x51350a['id'];logger[_0xfca5('0x14')]('Contact\x20found\x20work_number:',_0x537af3[_0xfca5('0x27')]);return _0x2e3dff(_0x537af3);}createEndUser(_0x537af3,_0x39af0b,_0x54e99d,_0x53d483)[_0xfca5('0xf')](function(_0x29ac30){logger[_0xfca5('0x14')](_0xfca5('0x2b'),_0x29ac30[_0xfca5('0x27')]);return _0x2e3dff(_0x29ac30);});});})['catch'](function(_0x12c958){_0x1bd18d(_0x12c958);});});};}function createEndUser(_0x1a0a96,_0x17e4c3,_0x306469,_0x26d5ad){return new Promise(function(_0x2ec8ef,_0x4d0a60){var _0x44539a=moment();var _0x5e602f={'method':_0xfca5('0x2c'),'uri':_0x26d5ad+_0xfca5('0x2d'),'body':{'contact':{'last_name':_0x1a0a96[_0xfca5('0x2a')],'work_number':_0x1a0a96[_0xfca5('0x2a')],'mobile_number':_0x1a0a96['contactNumber'],'owner_id':_0x1a0a96[_0xfca5('0x1c')],'created_at':_0x44539a['format'](_0xfca5('0x2e'))}},'json':!![]};_0x5e602f['headers']=_0x306469;logger[_0xfca5('0x14')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x5e602f)['then'](function(_0x5cf3fe){_0x1a0a96[_0xfca5('0x27')]=_0x5cf3fe[_0xfca5('0x2f')]['id'];_0x2ec8ef(_0x1a0a96);})[_0xfca5('0x1f')](function(_0x5b1de9){logger[_0xfca5('0x17')]('['+[_0x17e4c3[_0xfca5('0x18')]()]+']',_0x5b1de9[_0xfca5('0x30')]);_0x4d0a60(_0x5b1de9[_0xfca5('0x30')]);});});}function getTicket(_0x20db15,_0x279471,_0x94fe7f,_0x2677db,_0x331b91){return function(_0x1f39a3){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x54fd6f,_0xfbdedc){var _0x10e5bc=moment();var _0x4abe74={'method':_0xfca5('0x2c'),'uri':_0x94fe7f+'/api/tasks','body':{'title':intUtil[_0xfca5('0x31')](_0x2677db[_0xfca5('0x32')],_0x331b91,'\x20'),'description':intUtil['getString'](_0x2677db[_0xfca5('0x33')],_0x331b91,'\x0a'),'owner_id':_0x1f39a3[_0xfca5('0x1c')],'creater_id':_0x1f39a3[_0xfca5('0x1e')],'targetable_id':_0x1f39a3[_0xfca5('0x27')],'targetable_type':_0xfca5('0x34'),'created_at':_0x10e5bc[_0xfca5('0x24')](_0xfca5('0x2e')),'due_date':_0x10e5bc[_0xfca5('0x35')](0x1e,'m')[_0xfca5('0x24')](_0xfca5('0x2e'))},'json':!![]};_0x4abe74['headers']=_0x279471;return rp(_0x4abe74)[_0xfca5('0xf')](function(_0x40d5b2){_0x1f39a3[_0xfca5('0x36')]=_0x40d5b2[_0xfca5('0x37')]['id'];logger[_0xfca5('0x14')]('Task\x20created:',_0x1f39a3['ticketId']);_0x54fd6f(_0x1f39a3);})[_0xfca5('0x1f')](function(_0x3496cc){logger['error']('['+[_0x20db15[_0xfca5('0x18')]()]+']',_0x3496cc[_0xfca5('0x30')]);_0xfbdedc(_0x3496cc[_0xfca5('0x30')]);});});};}function emit(_0x29cae9,_0x30206f,_0x2279a8){var _0x28181f={'uri':_0x29cae9+_0xfca5('0x38')+_0x2279a8};io['to'](util['format'](_0xfca5('0x39'),_0x30206f))['emit'](_0xfca5('0x3a'),_0x28181f);}exports['cs']=function(_0x2bfb9d,_0x510c46,_0x2e6877,_0x25f863,_0x24fbe1,_0x6c58d0,_0x3124b8,_0x1e3b92){var _0x11ff9c={};var _0x65fde3={'Authorization':'Token\x20token='+_0x6c58d0[_0xfca5('0x3b')]};_0x6c58d0['remoteUri']=intUtil[_0xfca5('0x3c')](_0x6c58d0[_0xfca5('0x3d')]);_0x6c58d0[_0xfca5('0x3e')]=intUtil[_0xfca5('0x3c')](_0x6c58d0[_0xfca5('0x3e')]);var _0x2814ec=_0x6c58d0[_0xfca5('0x3d')];_0x11ff9c['adminEmail']=_0x6c58d0['username'];_0x11ff9c['contactNumber']=_0x1e3b92[_0xfca5('0x3f')]()==='outbound'?_0x510c46[_0xfca5('0x40')]:_0x510c46['calleridnum'];_0x11ff9c[_0xfca5('0x41')]=_0x1e3b92===_0xfca5('0x42')||_0x1e3b92===_0xfca5('0x43')?_0xfca5('0x42'):_0xfca5('0x44');if(_0x25f863){_0x11ff9c[_0xfca5('0x1a')]=_0x25f863[_0xfca5('0x12')];}var _0x41fb2d=util[_0xfca5('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x6c58d0[_0xfca5('0x3e')],_0x510c46[_0xfca5('0x45')],md5(_0x510c46[_0xfca5('0x45')]));if(_0x24fbe1&&_0x24fbe1[_0xfca5('0x46')]){logger[_0xfca5('0x14')]('[QUEUE]',_0xfca5('0x47'));_0x510c46['recordingURL']=_0x41fb2d;}else if(_0x3124b8&&_0x3124b8['recordingFormat']&&_0x3124b8[_0xfca5('0x48')]!==_0xfca5('0x49')){logger[_0xfca5('0x14')](_0xfca5('0x4a'),'Recording\x20is\x20enabled!');_0x510c46[_0xfca5('0x4b')]=_0x41fb2d;}else{_0x510c46[_0xfca5('0x4b')]='';}return getAdminId(_0x11ff9c,_0x1e3b92,_0x65fde3,_0x2814ec)[_0xfca5('0xf')](getUser(_0x1e3b92,_0x65fde3,_0x2814ec))['then'](getEndUser(_0x1e3b92,_0x65fde3,_0x2814ec))[_0xfca5('0xf')](getTicket(_0x1e3b92,_0x65fde3,_0x2814ec,_0x2e6877,_0x510c46))['then'](function(_0x5f59a6){logger['info'](util['format'](_0xfca5('0x4c'),_0x5f59a6[_0xfca5('0x36')]));if(_0x1e3b92!==_0xfca5('0x43')){logger[_0xfca5('0x14')]('['+[_0x1e3b92['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x2814ec,_0x25f863[_0xfca5('0x4d')],_0x5f59a6[_0xfca5('0x27')]);}})[_0xfca5('0x1f')](function(_0x1eb631){logger['error']('['+[_0x1e3b92[_0xfca5('0x18')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x1eb631,{'showHidden':!![],'depth':null}));});};