59759cbe9134e0e587dd47d371510734dc901d5a
[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 _0x8c51=['Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','/contacts/','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','callDirection','unmanaged','queue','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/logger','freshsales','redis','defaults','localhost','/api/selector/owners','info','Getting\x20admin\x20information','users','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','headers','Getting\x20user\x20list','then','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','adminEmail','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x8c51,0x166));var _0x18c5=function(_0x2953ae,_0x2b4fe2){_0x2953ae=_0x2953ae-0x0;var _0x21bf44=_0x8c51[_0x2953ae];return _0x21bf44;};'use strict';var _=require(_0x18c5('0x0'));var rp=require(_0x18c5('0x1'));var md5=require(_0x18c5('0x2'));var util=require('util');var moment=require(_0x18c5('0x3'));var Promise=require(_0x18c5('0x4'));var Redis=require(_0x18c5('0x5'));var intUtil=require(_0x18c5('0x6'));var config=require('../../../../config/environment');var logger=require(_0x18c5('0x7'))(_0x18c5('0x8'));config[_0x18c5('0x9')]=_[_0x18c5('0xa')](config[_0x18c5('0x9')],{'host':_0x18c5('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0xf7ad5d,_0x2cf106,_0x1c7f9e,_0x214fde){return new Promise(function(_0x3c2112,_0x3ece2a){var _0x16c026=![];var _0x48c69c={'method':'GET','uri':_0x214fde+_0x18c5('0xc'),'json':!![]};_0x48c69c['headers']=_0x1c7f9e;logger[_0x18c5('0xd')](_0x18c5('0xe'));return rp(_0x48c69c)['then'](function(_0xe5e131){if(_0xe5e131){var _0x3ad622=_0xe5e131[_0x18c5('0xf')];var _0x5e4865=null;for(_0x5e4865=0x0;_0x5e4865<_0x3ad622['length'];_0x5e4865++){if(_0x3ad622[_0x5e4865][_0x18c5('0x10')]===_0xf7ad5d['adminEmail']){_0xf7ad5d[_0x18c5('0x11')]=_0x3ad622[_0x5e4865]['id'];_0x16c026=!![];}}if(_0x16c026){logger['info'](_0x18c5('0x12'),_0xf7ad5d[_0x18c5('0x11')]);_0x3c2112(_0xf7ad5d);}else{_0x3ece2a({'statusCode':0x194,'message':_0x18c5('0x13')});}}else{_0x3ece2a({'statusCode':0x194,'message':_0x18c5('0x13')});}})[_0x18c5('0x14')](function(_0x593b44){logger[_0x18c5('0x15')]('['+[_0x2cf106[_0x18c5('0x16')]()]+']',_0x593b44[_0x18c5('0x17')]);_0x3ece2a(_0x593b44);});});}function getUser(_0x2dbdd3,_0x4a171f,_0x48bf65){return function(_0x2830aa){return new Promise(function(_0x49a8b2,_0x164fcc){var _0x5485fd={'method':'GET','uri':_0x48bf65+'/api/selector/owners','json':!![]};_0x5485fd[_0x18c5('0x18')]=_0x4a171f;logger[_0x18c5('0xd')](_0x18c5('0x19'));return rp(_0x5485fd)[_0x18c5('0x1a')](function(_0xd78cdd){if(_0xd78cdd){var _0x4ddc36=_0xd78cdd[_0x18c5('0xf')];var _0x4ef0b1=![];var _0x50e04e=null;if(_0x2830aa[_0x18c5('0x1b')]!==null){logger[_0x18c5('0xd')]('Getting\x20user\x20with\x20email',_0x2830aa[_0x18c5('0x1b')]);_0x2830aa[_0x18c5('0x1c')]=_0x2830aa[_0x18c5('0x1b')];for(_0x50e04e=0x0;_0x50e04e<_0x4ddc36['length'];_0x50e04e++){if(_0x4ddc36[_0x50e04e][_0x18c5('0x10')]===_0x2830aa[_0x18c5('0x1b')]){_0x4ef0b1=!![];_0x2830aa[_0x18c5('0x1d')]=_0x4ddc36[_0x50e04e]['id'];logger[_0x18c5('0xd')](_0x18c5('0x1e'),_0x2830aa[_0x18c5('0x1d')]);}}}if(!_0x4ef0b1){logger[_0x18c5('0xd')](_0x18c5('0x1f'));_0x2830aa[_0x18c5('0x1c')]=_0x2830aa[_0x18c5('0x20')];_0x2830aa[_0x18c5('0x1d')]=_0x2830aa[_0x18c5('0x11')];_0x4ef0b1=!![];}if(_0x4ef0b1){_0x49a8b2(_0x2830aa);}else{_0x164fcc({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x164fcc({'statusCode':0x194,'message':_0x18c5('0x13')});}})[_0x18c5('0x14')](function(_0x2ab225){logger[_0x18c5('0x15')]('['+[_0x2dbdd3[_0x18c5('0x16')]()]+']',_0x2ab225[_0x18c5('0x17')]);_0x164fcc(_0x2ab225);});});};}function searchContact(_0x33f82b,_0x27bcf5,_0x512a82,_0x1ed0aa){return new Promise(function(_0x204837,_0x125638){var _0x4ae193={'method':'GET','headers':_0x27bcf5,'uri':_0x33f82b+'/api/lookup?q='+_0x1ed0aa+_0x18c5('0x21')+_0x512a82+_0x18c5('0x22'),'json':!![]};rp(_0x4ae193)[_0x18c5('0x1a')](function(_0x5d2d56){var _0x43f084=_[_0x18c5('0x23')](_0x5d2d56[_0x18c5('0x24')][_0x18c5('0x24')],[_0x512a82,_0x1ed0aa]);_0x204837(_0x43f084);})[_0x18c5('0x14')](function(_0x310f35){_0x125638(_0x310f35);});});}function getEndUser(_0x125c66,_0x5f7561,_0x18190c){return function(_0x3ed3fe){return new Promise(function(_0x3c89ab,_0x4994ea){logger[_0x18c5('0xd')](util[_0x18c5('0x25')](_0x18c5('0x26'),_0x3ed3fe[_0x18c5('0x27')]));searchContact(_0x18190c,_0x5f7561,_0x18c5('0x28'),_0x3ed3fe[_0x18c5('0x27')])[_0x18c5('0x1a')](function(_0xe84e56){if(_0xe84e56){_0x3ed3fe[_0x18c5('0x29')]=_0xe84e56['id'];logger[_0x18c5('0xd')](_0x18c5('0x2a'),_0x3ed3fe['endUserId']);return _0x3c89ab(_0x3ed3fe);}searchContact(_0x18190c,_0x5f7561,_0x18c5('0x2b'),_0x3ed3fe[_0x18c5('0x27')])['then'](function(_0x3bd93e){if(_0x3bd93e){_0x3ed3fe[_0x18c5('0x29')]=_0x3bd93e['id'];logger['info'](_0x18c5('0x2c'),_0x3ed3fe['endUserId']);return _0x3c89ab(_0x3ed3fe);}createEndUser(_0x3ed3fe,_0x125c66,_0x5f7561,_0x18190c)[_0x18c5('0x1a')](function(_0x492e7f){logger[_0x18c5('0xd')](_0x18c5('0x2d'),_0x492e7f['endUserId']);return _0x3c89ab(_0x492e7f);});});})['catch'](function(_0x5e142e){_0x4994ea(_0x5e142e);});});};}function createEndUser(_0x4b7abd,_0x2a3cf6,_0x3bb68d,_0x220c3e){return new Promise(function(_0x14d3ff,_0x8d3220){var _0x2e34a7=moment();var _0x284c82={'method':_0x18c5('0x2e'),'uri':_0x220c3e+_0x18c5('0x2f'),'body':{'contact':{'last_name':_0x4b7abd[_0x18c5('0x27')],'work_number':_0x4b7abd['contactNumber'],'mobile_number':_0x4b7abd[_0x18c5('0x27')],'owner_id':_0x4b7abd['userId'],'created_at':_0x2e34a7[_0x18c5('0x25')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x284c82[_0x18c5('0x18')]=_0x3bb68d;logger[_0x18c5('0xd')](_0x18c5('0x30'));return rp(_0x284c82)[_0x18c5('0x1a')](function(_0x1998f0){_0x4b7abd[_0x18c5('0x29')]=_0x1998f0['contact']['id'];_0x14d3ff(_0x4b7abd);})[_0x18c5('0x14')](function(_0x2f338b){logger['error']('['+[_0x2a3cf6['toUpperCase']()]+']',_0x2f338b['message']);_0x8d3220(_0x2f338b[_0x18c5('0x17')]);});});}function getTicket(_0x3dae88,_0x4eba0a,_0x7f071e,_0x26f780,_0xd2c708){return function(_0x2bbc56){logger[_0x18c5('0xd')](_0x18c5('0x31'));return new Promise(function(_0x138736,_0x1d66f6){var _0x183165=moment();var _0x578d66={'method':_0x18c5('0x2e'),'uri':_0x7f071e+_0x18c5('0x32'),'body':{'title':intUtil[_0x18c5('0x33')](_0x26f780[_0x18c5('0x34')],_0xd2c708,'\x20'),'description':intUtil[_0x18c5('0x33')](_0x26f780[_0x18c5('0x35')],_0xd2c708,'\x0a'),'owner_id':_0x2bbc56['userId'],'creater_id':_0x2bbc56[_0x18c5('0x11')],'targetable_id':_0x2bbc56[_0x18c5('0x29')],'targetable_type':_0x18c5('0x36'),'created_at':_0x183165[_0x18c5('0x25')](_0x18c5('0x37')),'due_date':_0x183165[_0x18c5('0x38')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x578d66[_0x18c5('0x18')]=_0x4eba0a;return rp(_0x578d66)[_0x18c5('0x1a')](function(_0x501cbb){_0x2bbc56[_0x18c5('0x39')]=_0x501cbb['task']['id'];logger[_0x18c5('0xd')]('Task\x20created:',_0x2bbc56[_0x18c5('0x39')]);_0x138736(_0x2bbc56);})[_0x18c5('0x14')](function(_0x1fc711){logger['error']('['+[_0x3dae88[_0x18c5('0x16')]()]+']',_0x1fc711[_0x18c5('0x17')]);_0x1d66f6(_0x1fc711[_0x18c5('0x17')]);});});};}function emit(_0x151990,_0x2126ce,_0x4b41ad){var _0x6daec3={'uri':_0x151990+_0x18c5('0x3a')+_0x4b41ad};io['to'](util[_0x18c5('0x25')]('user:%s',_0x2126ce))[_0x18c5('0x3b')](_0x18c5('0x3c'),_0x6daec3);}exports['cs']=function(_0x5ddfd5,_0x239491,_0x37bbb8,_0x15c3b1,_0x31e66f,_0x5886d9,_0x5ce54a,_0x28c5dd){var _0x5bec09={};var _0x2dbf95={'Authorization':'Token\x20token='+_0x5886d9[_0x18c5('0x3d')]};_0x5886d9[_0x18c5('0x3e')]=intUtil[_0x18c5('0x3f')](_0x5886d9[_0x18c5('0x3e')]);_0x5886d9[_0x18c5('0x40')]=intUtil['stripTrailingSlash'](_0x5886d9[_0x18c5('0x40')]);var _0x39637d=_0x5886d9[_0x18c5('0x3e')];_0x5bec09[_0x18c5('0x20')]=_0x5886d9['username'];_0x5bec09[_0x18c5('0x27')]=_0x28c5dd[_0x18c5('0x41')]()===_0x18c5('0x42')?_0x239491['destcalleridnum']:_0x239491['calleridnum'];_0x5bec09[_0x18c5('0x43')]=_0x28c5dd==='queue'||_0x28c5dd===_0x18c5('0x44')?_0x18c5('0x45'):'outbound';if(_0x15c3b1){_0x5bec09['agentEmail']=_0x15c3b1[_0x18c5('0x10')];}var _0x5f4b92=util[_0x18c5('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5886d9[_0x18c5('0x40')],_0x239491[_0x18c5('0x46')],md5(_0x239491[_0x18c5('0x46')]));if(_0x31e66f&&_0x31e66f[_0x18c5('0x47')]){logger[_0x18c5('0xd')](_0x18c5('0x48'),_0x18c5('0x49'));_0x239491[_0x18c5('0x4a')]=_0x5f4b92;}else if(_0x5ce54a&&_0x5ce54a[_0x18c5('0x4b')]&&_0x5ce54a[_0x18c5('0x4b')]!==_0x18c5('0x4c')){logger[_0x18c5('0xd')](_0x18c5('0x4d'),_0x18c5('0x49'));_0x239491[_0x18c5('0x4a')]=_0x5f4b92;}else{_0x239491[_0x18c5('0x4a')]='';}return getAdminId(_0x5bec09,_0x28c5dd,_0x2dbf95,_0x39637d)[_0x18c5('0x1a')](getUser(_0x28c5dd,_0x2dbf95,_0x39637d))[_0x18c5('0x1a')](getEndUser(_0x28c5dd,_0x2dbf95,_0x39637d))['then'](getTicket(_0x28c5dd,_0x2dbf95,_0x39637d,_0x37bbb8,_0x239491))[_0x18c5('0x1a')](function(_0x355ee6){logger[_0x18c5('0xd')](util[_0x18c5('0x25')](_0x18c5('0x4e'),_0x355ee6[_0x18c5('0x39')]));if(_0x28c5dd!==_0x18c5('0x44')){logger[_0x18c5('0xd')]('['+[_0x28c5dd[_0x18c5('0x16')]()]+']',_0x18c5('0x4f'));emit(_0x39637d,_0x15c3b1[_0x18c5('0x50')],_0x355ee6[_0x18c5('0x29')]);}})['catch'](function(_0x4bbafc){logger[_0x18c5('0x15')]('['+[_0x28c5dd[_0x18c5('0x16')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x18c5('0x51')](_0x4bbafc,{'showHidden':!![],'depth':null}));});};