Built motion from commit a61a4a20.|2.5.46
[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 _0xe99c=['serverUrl','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','moment','bluebird','ioredis','redis','socket.io-emitter','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','info','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','GET','Getting\x20user\x20list','agentEmail','userEmail','User\x20found:','Admin\x20selected','/api/lookup?q=','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','userId','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xe99c,0x15c));var _0xce99=function(_0x13c1ae,_0x32c8bf){_0x13c1ae=_0x13c1ae-0x0;var _0x4bf12b=_0xe99c[_0x13c1ae];return _0x4bf12b;};'use strict';var _=require(_0xce99('0x0'));var rp=require(_0xce99('0x1'));var md5=require('md5');var util=require(_0xce99('0x2'));var moment=require(_0xce99('0x3'));var Promise=require(_0xce99('0x4'));var Redis=require(_0xce99('0x5'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require('../../../../config/logger')('freshsales');config[_0xce99('0x6')]=_['defaults'](config[_0xce99('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xce99('0x7'))(new Redis(config[_0xce99('0x6')]));function getAdminId(_0x4e9980,_0x38b7f6,_0x54007c,_0x167b0f){return new Promise(function(_0x5d422d,_0x2fa1a2){var _0xec7779=![];var _0x27f439={'method':'GET','uri':_0x167b0f+_0xce99('0x8'),'json':!![]};_0x27f439[_0xce99('0x9')]=_0x54007c;logger['info'](_0xce99('0xa'));return rp(_0x27f439)[_0xce99('0xb')](function(_0x4d267e){if(_0x4d267e){var _0x407473=_0x4d267e[_0xce99('0xc')];var _0x43325e=null;for(_0x43325e=0x0;_0x43325e<_0x407473[_0xce99('0xd')];_0x43325e++){if(_0x407473[_0x43325e][_0xce99('0xe')]===_0x4e9980[_0xce99('0xf')]){_0x4e9980[_0xce99('0x10')]=_0x407473[_0x43325e]['id'];_0xec7779=!![];}}if(_0xec7779){logger[_0xce99('0x11')]('Admin\x20found:',_0x4e9980[_0xce99('0x10')]);_0x5d422d(_0x4e9980);}else{_0x2fa1a2({'statusCode':0x194,'message':_0xce99('0x12')});}}else{_0x2fa1a2({'statusCode':0x194,'message':_0xce99('0x12')});}})[_0xce99('0x13')](function(_0x59e1df){logger[_0xce99('0x14')]('['+[_0x38b7f6[_0xce99('0x15')]()]+']',_0x59e1df[_0xce99('0x16')]);_0x2fa1a2(_0x59e1df);});});}function getUser(_0x20f451,_0x2f99ac,_0x46b90c){return function(_0x416cfd){return new Promise(function(_0x508a71,_0x1eba79){var _0x38ca0c={'method':_0xce99('0x17'),'uri':_0x46b90c+'/api/selector/owners','json':!![]};_0x38ca0c['headers']=_0x2f99ac;logger[_0xce99('0x11')](_0xce99('0x18'));return rp(_0x38ca0c)[_0xce99('0xb')](function(_0x45ad13){if(_0x45ad13){var _0x3460c7=_0x45ad13[_0xce99('0xc')];var _0x57588d=![];var _0xf987f4=null;if(_0x416cfd[_0xce99('0x19')]!==null){logger[_0xce99('0x11')]('Getting\x20user\x20with\x20email',_0x416cfd[_0xce99('0x19')]);_0x416cfd[_0xce99('0x1a')]=_0x416cfd[_0xce99('0x19')];for(_0xf987f4=0x0;_0xf987f4<_0x3460c7[_0xce99('0xd')];_0xf987f4++){if(_0x3460c7[_0xf987f4][_0xce99('0xe')]===_0x416cfd[_0xce99('0x19')]){_0x57588d=!![];_0x416cfd['userId']=_0x3460c7[_0xf987f4]['id'];logger[_0xce99('0x11')](_0xce99('0x1b'),_0x416cfd['userId']);}}}if(!_0x57588d){logger[_0xce99('0x11')](_0xce99('0x1c'));_0x416cfd['userEmail']=_0x416cfd[_0xce99('0xf')];_0x416cfd['userId']=_0x416cfd[_0xce99('0x10')];_0x57588d=!![];}if(_0x57588d){_0x508a71(_0x416cfd);}else{_0x1eba79({'statusCode':0x194,'message':_0xce99('0x12')});}}else{_0x1eba79({'statusCode':0x194,'message':_0xce99('0x12')});}})['catch'](function(_0x55b090){logger['error']('['+[_0x20f451[_0xce99('0x15')]()]+']',_0x55b090[_0xce99('0x16')]);_0x1eba79(_0x55b090);});});};}function searchContact(_0x54a484,_0x462bd5,_0x16153f,_0x43ea72){return new Promise(function(_0x1ec7fe,_0x40a36b){var _0x439827={'method':_0xce99('0x17'),'headers':_0x462bd5,'uri':_0x54a484+_0xce99('0x1d')+_0x43ea72+'&f='+_0x16153f+_0xce99('0x1e'),'json':!![]};rp(_0x439827)[_0xce99('0xb')](function(_0x4e7339){var _0x3d1d4b=_[_0xce99('0x1f')](_0x4e7339[_0xce99('0x20')][_0xce99('0x20')],[_0x16153f,_0x43ea72]);_0x1ec7fe(_0x3d1d4b);})['catch'](function(_0xc35256){_0x40a36b(_0xc35256);});});}function getEndUser(_0x280aca,_0x57ff50,_0x9e72eb){return function(_0x5bbf6a){return new Promise(function(_0x3cf978,_0x27ed59){logger['info'](util['format'](_0xce99('0x21'),_0x5bbf6a['contactNumber']));searchContact(_0x9e72eb,_0x57ff50,_0xce99('0x22'),_0x5bbf6a[_0xce99('0x23')])[_0xce99('0xb')](function(_0x38ad6c){if(_0x38ad6c){_0x5bbf6a[_0xce99('0x24')]=_0x38ad6c['id'];logger[_0xce99('0x11')](_0xce99('0x25'),_0x5bbf6a[_0xce99('0x24')]);return _0x3cf978(_0x5bbf6a);}searchContact(_0x9e72eb,_0x57ff50,'work_number',_0x5bbf6a[_0xce99('0x23')])[_0xce99('0xb')](function(_0x138ff5){if(_0x138ff5){_0x5bbf6a[_0xce99('0x24')]=_0x138ff5['id'];logger[_0xce99('0x11')](_0xce99('0x26'),_0x5bbf6a[_0xce99('0x24')]);return _0x3cf978(_0x5bbf6a);}createEndUser(_0x5bbf6a,_0x280aca,_0x57ff50,_0x9e72eb)[_0xce99('0xb')](function(_0x2dd930){logger[_0xce99('0x11')](_0xce99('0x27'),_0x2dd930[_0xce99('0x24')]);return _0x3cf978(_0x2dd930);});});})[_0xce99('0x13')](function(_0x3ccf17){_0x27ed59(_0x3ccf17);});});};}function createEndUser(_0x4fa27b,_0x49713e,_0x2b6c09,_0x2bcf5b){return new Promise(function(_0xdff07a,_0x3538f9){var _0x4006e4=moment();var _0x1cee99={'method':_0xce99('0x28'),'uri':_0x2bcf5b+'/api/contacts','body':{'contact':{'last_name':_0x4fa27b[_0xce99('0x23')],'work_number':_0x4fa27b[_0xce99('0x23')],'mobile_number':_0x4fa27b[_0xce99('0x23')],'owner_id':_0x4fa27b[_0xce99('0x29')],'created_at':_0x4006e4[_0xce99('0x2a')](_0xce99('0x2b'))}},'json':!![]};_0x1cee99[_0xce99('0x9')]=_0x2b6c09;logger['info'](_0xce99('0x2c'));return rp(_0x1cee99)['then'](function(_0x4b34ee){_0x4fa27b[_0xce99('0x24')]=_0x4b34ee[_0xce99('0x2d')]['id'];_0xdff07a(_0x4fa27b);})[_0xce99('0x13')](function(_0x18d355){logger[_0xce99('0x14')]('['+[_0x49713e[_0xce99('0x15')]()]+']',_0x18d355['message']);_0x3538f9(_0x18d355[_0xce99('0x16')]);});});}function getTicket(_0x4549f7,_0x2f6968,_0x26e349,_0x7f9d9e,_0x1de91e){return function(_0x2f8aa4){logger[_0xce99('0x11')](_0xce99('0x2e'));return new Promise(function(_0x1553d7,_0x53e42b){var _0x59ac56=moment();var _0x130837={'method':_0xce99('0x28'),'uri':_0x26e349+'/api/tasks','body':{'title':intUtil[_0xce99('0x2f')](_0x7f9d9e[_0xce99('0x30')],_0x1de91e,'\x20'),'description':intUtil[_0xce99('0x2f')](_0x7f9d9e[_0xce99('0x31')],_0x1de91e,'\x0a'),'owner_id':_0x2f8aa4[_0xce99('0x29')],'creater_id':_0x2f8aa4[_0xce99('0x10')],'targetable_id':_0x2f8aa4['endUserId'],'targetable_type':_0xce99('0x32'),'created_at':_0x59ac56[_0xce99('0x2a')](_0xce99('0x2b')),'due_date':_0x59ac56[_0xce99('0x33')](0x1e,'m')[_0xce99('0x2a')](_0xce99('0x2b'))},'json':!![]};_0x130837[_0xce99('0x9')]=_0x2f6968;return rp(_0x130837)[_0xce99('0xb')](function(_0x853478){_0x2f8aa4[_0xce99('0x34')]=_0x853478[_0xce99('0x35')]['id'];logger[_0xce99('0x11')](_0xce99('0x36'),_0x2f8aa4[_0xce99('0x34')]);_0x1553d7(_0x2f8aa4);})[_0xce99('0x13')](function(_0x5aa6fb){logger['error']('['+[_0x4549f7[_0xce99('0x15')]()]+']',_0x5aa6fb[_0xce99('0x16')]);_0x53e42b(_0x5aa6fb[_0xce99('0x16')]);});});};}function emit(_0x1b5ad5,_0x429a22,_0x41d06a){var _0x58508a={'uri':_0x1b5ad5+_0xce99('0x37')+_0x41d06a};io['to'](util[_0xce99('0x2a')](_0xce99('0x38'),_0x429a22))[_0xce99('0x39')](_0xce99('0x3a'),_0x58508a);}exports['cs']=function(_0x462c15,_0x5338e7,_0x665f39,_0x2fdfb4,_0x216efc,_0x1bb102,_0x5f235a,_0x2fd502){var _0x8c2be0={};var _0x22d960={'Authorization':'Token\x20token='+_0x1bb102[_0xce99('0x3b')]};_0x1bb102[_0xce99('0x3c')]=intUtil[_0xce99('0x3d')](_0x1bb102[_0xce99('0x3c')]);_0x1bb102[_0xce99('0x3e')]=intUtil[_0xce99('0x3d')](_0x1bb102[_0xce99('0x3e')]);var _0x13925d=_0x1bb102['remoteUri'];_0x8c2be0['adminEmail']=_0x1bb102['username'];_0x8c2be0[_0xce99('0x23')]=_0x2fd502[_0xce99('0x3f')]()===_0xce99('0x40')?_0x5338e7[_0xce99('0x41')]:_0x5338e7[_0xce99('0x42')];_0x8c2be0[_0xce99('0x43')]=_0x2fd502===_0xce99('0x44')||_0x2fd502===_0xce99('0x45')?'queue':_0xce99('0x40');if(_0x2fdfb4){_0x8c2be0[_0xce99('0x19')]=_0x2fdfb4[_0xce99('0xe')];}var _0x47b618=util[_0xce99('0x2a')](_0xce99('0x46'),_0x1bb102[_0xce99('0x3e')],_0x5338e7['uniqueid'],md5(_0x5338e7['uniqueid']));if(_0x216efc&&_0x216efc['monitor_format']){logger[_0xce99('0x11')](_0xce99('0x47'),_0xce99('0x48'));_0x5338e7['recordingURL']=_0x47b618;}else if(_0x5f235a&&_0x5f235a[_0xce99('0x49')]&&_0x5f235a[_0xce99('0x49')]!==_0xce99('0x4a')){logger[_0xce99('0x11')](_0xce99('0x4b'),_0xce99('0x48'));_0x5338e7[_0xce99('0x4c')]=_0x47b618;}else{_0x5338e7[_0xce99('0x4c')]='';}return getAdminId(_0x8c2be0,_0x2fd502,_0x22d960,_0x13925d)[_0xce99('0xb')](getUser(_0x2fd502,_0x22d960,_0x13925d))[_0xce99('0xb')](getEndUser(_0x2fd502,_0x22d960,_0x13925d))[_0xce99('0xb')](getTicket(_0x2fd502,_0x22d960,_0x13925d,_0x665f39,_0x5338e7))['then'](function(_0x5d6808){logger[_0xce99('0x11')](util[_0xce99('0x2a')](_0xce99('0x4d'),_0x5d6808[_0xce99('0x34')]));if(_0x2fd502!==_0xce99('0x45')){logger['info']('['+[_0x2fd502[_0xce99('0x15')]()]+']',_0xce99('0x4e'));emit(_0x13925d,_0x2fdfb4[_0xce99('0x4f')],_0x5d6808[_0xce99('0x24')]);}})[_0xce99('0x13')](function(_0x452c82){logger[_0xce99('0x14')]('['+[_0x2fd502[_0xce99('0x15')]()]+_0xce99('0x50'),util[_0xce99('0x51')](_0x452c82,{'showHidden':!![],'depth':null}));});};