Built motion from commit 092f8824.|2.5.49
[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 _0xa5e9=['catch','toUpperCase','message','headers','then','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','userId','User\x20found:','Admin\x20selected','adminEmail','error','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','task','Task\x20created:','/contacts/','user:%s','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','outbound','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','ticketId','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','localhost','socket.io-emitter','redis','GET','/api/selector/owners','info','Getting\x20admin\x20information','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found'];(function(_0x246169,_0x3fb8c6){var _0x428b3a=function(_0x477912){while(--_0x477912){_0x246169['push'](_0x246169['shift']());}};_0x428b3a(++_0x3fb8c6);}(_0xa5e9,0x144));var _0x9a5e=function(_0x3e21f4,_0x43d310){_0x3e21f4=_0x3e21f4-0x0;var _0x40fc49=_0xa5e9[_0x3e21f4];return _0x40fc49;};'use strict';var _=require(_0x9a5e('0x0'));var rp=require('request-promise');var md5=require(_0x9a5e('0x1'));var util=require(_0x9a5e('0x2'));var moment=require('moment');var Promise=require(_0x9a5e('0x3'));var Redis=require(_0x9a5e('0x4'));var intUtil=require(_0x9a5e('0x5'));var config=require(_0x9a5e('0x6'));var logger=require(_0x9a5e('0x7'))(_0x9a5e('0x8'));config['redis']=_[_0x9a5e('0x9')](config['redis'],{'host':_0x9a5e('0xa'),'port':0x18eb});var io=require(_0x9a5e('0xb'))(new Redis(config[_0x9a5e('0xc')]));function getAdminId(_0x181043,_0x5dabe3,_0x5b9d77,_0xeff473){return new Promise(function(_0x5781c0,_0x131afd){var _0x324faa=![];var _0x16324a={'method':_0x9a5e('0xd'),'uri':_0xeff473+_0x9a5e('0xe'),'json':!![]};_0x16324a['headers']=_0x5b9d77;logger[_0x9a5e('0xf')](_0x9a5e('0x10'));return rp(_0x16324a)['then'](function(_0x48f895){if(_0x48f895){var _0xe002f4=_0x48f895['users'];var _0x16e3b0=null;for(_0x16e3b0=0x0;_0x16e3b0<_0xe002f4['length'];_0x16e3b0++){if(_0xe002f4[_0x16e3b0]['email']===_0x181043['adminEmail']){_0x181043[_0x9a5e('0x11')]=_0xe002f4[_0x16e3b0]['id'];_0x324faa=!![];}}if(_0x324faa){logger[_0x9a5e('0xf')](_0x9a5e('0x12'),_0x181043[_0x9a5e('0x11')]);_0x5781c0(_0x181043);}else{_0x131afd({'statusCode':0x194,'message':_0x9a5e('0x13')});}}else{_0x131afd({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x9a5e('0x14')](function(_0x25fe18){logger['error']('['+[_0x5dabe3[_0x9a5e('0x15')]()]+']',_0x25fe18[_0x9a5e('0x16')]);_0x131afd(_0x25fe18);});});}function getUser(_0x2345c1,_0x22c81c,_0x3b5004){return function(_0x4aa3f3){return new Promise(function(_0x29ad9e,_0x2ecacc){var _0x3b4110={'method':'GET','uri':_0x3b5004+_0x9a5e('0xe'),'json':!![]};_0x3b4110[_0x9a5e('0x17')]=_0x22c81c;logger[_0x9a5e('0xf')]('Getting\x20user\x20list');return rp(_0x3b4110)[_0x9a5e('0x18')](function(_0x30fb75){if(_0x30fb75){var _0x4391b0=_0x30fb75[_0x9a5e('0x19')];var _0x2b1a4f=![];var _0x3a1209=null;if(_0x4aa3f3[_0x9a5e('0x1a')]!==null){logger[_0x9a5e('0xf')](_0x9a5e('0x1b'),_0x4aa3f3['agentEmail']);_0x4aa3f3[_0x9a5e('0x1c')]=_0x4aa3f3[_0x9a5e('0x1a')];for(_0x3a1209=0x0;_0x3a1209<_0x4391b0['length'];_0x3a1209++){if(_0x4391b0[_0x3a1209][_0x9a5e('0x1d')]===_0x4aa3f3[_0x9a5e('0x1a')]){_0x2b1a4f=!![];_0x4aa3f3[_0x9a5e('0x1e')]=_0x4391b0[_0x3a1209]['id'];logger['info'](_0x9a5e('0x1f'),_0x4aa3f3[_0x9a5e('0x1e')]);}}}if(!_0x2b1a4f){logger['info'](_0x9a5e('0x20'));_0x4aa3f3[_0x9a5e('0x1c')]=_0x4aa3f3[_0x9a5e('0x21')];_0x4aa3f3[_0x9a5e('0x1e')]=_0x4aa3f3[_0x9a5e('0x11')];_0x2b1a4f=!![];}if(_0x2b1a4f){_0x29ad9e(_0x4aa3f3);}else{_0x2ecacc({'statusCode':0x194,'message':_0x9a5e('0x13')});}}else{_0x2ecacc({'statusCode':0x194,'message':_0x9a5e('0x13')});}})['catch'](function(_0x4db406){logger[_0x9a5e('0x22')]('['+[_0x2345c1[_0x9a5e('0x15')]()]+']',_0x4db406[_0x9a5e('0x16')]);_0x2ecacc(_0x4db406);});});};}function searchContact(_0x32bab5,_0x43f5fd,_0xe09a54,_0x42d164){return new Promise(function(_0x2c95bb,_0x24e6bb){var _0x1314a2={'method':_0x9a5e('0xd'),'headers':_0x43f5fd,'uri':_0x32bab5+_0x9a5e('0x23')+_0x42d164+_0x9a5e('0x24')+_0xe09a54+_0x9a5e('0x25'),'json':!![]};rp(_0x1314a2)[_0x9a5e('0x18')](function(_0xc17699){var _0xe0f68f=_[_0x9a5e('0x26')](_0xc17699[_0x9a5e('0x27')][_0x9a5e('0x27')],[_0xe09a54,_0x42d164]);_0x2c95bb(_0xe0f68f);})[_0x9a5e('0x14')](function(_0x118270){_0x24e6bb(_0x118270);});});}function getEndUser(_0x427f5c,_0xdcb636,_0x5c2bbc){return function(_0xc6243f){return new Promise(function(_0x349acb,_0x1655eb){logger[_0x9a5e('0xf')](util[_0x9a5e('0x28')](_0x9a5e('0x29'),_0xc6243f[_0x9a5e('0x2a')]));searchContact(_0x5c2bbc,_0xdcb636,_0x9a5e('0x2b'),_0xc6243f[_0x9a5e('0x2a')])[_0x9a5e('0x18')](function(_0x36c865){if(_0x36c865){_0xc6243f['endUserId']=_0x36c865['id'];logger[_0x9a5e('0xf')](_0x9a5e('0x2c'),_0xc6243f[_0x9a5e('0x2d')]);return _0x349acb(_0xc6243f);}searchContact(_0x5c2bbc,_0xdcb636,'work_number',_0xc6243f[_0x9a5e('0x2a')])['then'](function(_0xe172ee){if(_0xe172ee){_0xc6243f[_0x9a5e('0x2d')]=_0xe172ee['id'];logger[_0x9a5e('0xf')](_0x9a5e('0x2e'),_0xc6243f[_0x9a5e('0x2d')]);return _0x349acb(_0xc6243f);}createEndUser(_0xc6243f,_0x427f5c,_0xdcb636,_0x5c2bbc)[_0x9a5e('0x18')](function(_0x30d0de){logger[_0x9a5e('0xf')](_0x9a5e('0x2f'),_0x30d0de[_0x9a5e('0x2d')]);return _0x349acb(_0x30d0de);});});})['catch'](function(_0x3719e2){_0x1655eb(_0x3719e2);});});};}function createEndUser(_0xd9c9e,_0x15ddad,_0x3d15fd,_0x354273){return new Promise(function(_0x214b32,_0x158161){var _0x1894d6=moment();var _0x2a0009={'method':_0x9a5e('0x30'),'uri':_0x354273+_0x9a5e('0x31'),'body':{'contact':{'last_name':_0xd9c9e[_0x9a5e('0x2a')],'work_number':_0xd9c9e[_0x9a5e('0x2a')],'mobile_number':_0xd9c9e[_0x9a5e('0x2a')],'owner_id':_0xd9c9e[_0x9a5e('0x1e')],'created_at':_0x1894d6[_0x9a5e('0x28')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x2a0009[_0x9a5e('0x17')]=_0x3d15fd;logger[_0x9a5e('0xf')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x2a0009)[_0x9a5e('0x18')](function(_0x8c0a01){_0xd9c9e[_0x9a5e('0x2d')]=_0x8c0a01['contact']['id'];_0x214b32(_0xd9c9e);})[_0x9a5e('0x14')](function(_0x510447){logger[_0x9a5e('0x22')]('['+[_0x15ddad['toUpperCase']()]+']',_0x510447[_0x9a5e('0x16')]);_0x158161(_0x510447[_0x9a5e('0x16')]);});});}function getTicket(_0x1af0b6,_0x55013c,_0x59d5,_0x3f8ed9,_0xbede2c){return function(_0x343617){logger[_0x9a5e('0xf')](_0x9a5e('0x32'));return new Promise(function(_0x9d0c7a,_0x10eabc){var _0x58ec46=moment();var _0x7ab95a={'method':'POST','uri':_0x59d5+'/api/tasks','body':{'title':intUtil[_0x9a5e('0x33')](_0x3f8ed9[_0x9a5e('0x34')],_0xbede2c,'\x20'),'description':intUtil[_0x9a5e('0x33')](_0x3f8ed9[_0x9a5e('0x35')],_0xbede2c,'\x0a'),'owner_id':_0x343617[_0x9a5e('0x1e')],'creater_id':_0x343617['adminId'],'targetable_id':_0x343617[_0x9a5e('0x2d')],'targetable_type':_0x9a5e('0x36'),'created_at':_0x58ec46['format'](_0x9a5e('0x37')),'due_date':_0x58ec46[_0x9a5e('0x38')](0x1e,'m')[_0x9a5e('0x28')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x7ab95a['headers']=_0x55013c;return rp(_0x7ab95a)['then'](function(_0x10e5d0){_0x343617['ticketId']=_0x10e5d0[_0x9a5e('0x39')]['id'];logger[_0x9a5e('0xf')](_0x9a5e('0x3a'),_0x343617['ticketId']);_0x9d0c7a(_0x343617);})[_0x9a5e('0x14')](function(_0x1bbc1b){logger[_0x9a5e('0x22')]('['+[_0x1af0b6[_0x9a5e('0x15')]()]+']',_0x1bbc1b[_0x9a5e('0x16')]);_0x10eabc(_0x1bbc1b[_0x9a5e('0x16')]);});});};}function emit(_0x384013,_0x18e5d3,_0x4408b6){var _0x403dd4={'uri':_0x384013+_0x9a5e('0x3b')+_0x4408b6};io['to'](util[_0x9a5e('0x28')](_0x9a5e('0x3c'),_0x18e5d3))[_0x9a5e('0x3d')]('trigger:browser:url',_0x403dd4);}exports['cs']=function(_0x43bd15,_0x255b68,_0x4cccf0,_0x97fe03,_0x3f8abc,_0x2cd4b9,_0x2ce9e0,_0xf32f61){var _0xe92e49={};var _0x6868fc={'Authorization':_0x9a5e('0x3e')+_0x2cd4b9[_0x9a5e('0x3f')]};_0x2cd4b9[_0x9a5e('0x40')]=intUtil[_0x9a5e('0x41')](_0x2cd4b9[_0x9a5e('0x40')]);_0x2cd4b9['serverUrl']=intUtil['stripTrailingSlash'](_0x2cd4b9['serverUrl']);var _0x53126a=_0x2cd4b9['remoteUri'];_0xe92e49[_0x9a5e('0x21')]=_0x2cd4b9[_0x9a5e('0x42')];_0xe92e49['contactNumber']=_0xf32f61['toLowerCase']()===_0x9a5e('0x43')?_0x255b68[_0x9a5e('0x44')]:_0x255b68['calleridnum'];_0xe92e49[_0x9a5e('0x45')]=_0xf32f61===_0x9a5e('0x46')||_0xf32f61===_0x9a5e('0x47')?_0x9a5e('0x46'):_0x9a5e('0x43');if(_0x97fe03){_0xe92e49['agentEmail']=_0x97fe03[_0x9a5e('0x1d')];}var _0x1e2a11=util['format'](_0x9a5e('0x48'),_0x2cd4b9[_0x9a5e('0x49')],_0x255b68['uniqueid'],md5(_0x255b68[_0x9a5e('0x4a')]));if(_0x3f8abc&&_0x3f8abc[_0x9a5e('0x4b')]){logger[_0x9a5e('0xf')](_0x9a5e('0x4c'),'Recording\x20is\x20enabled!');_0x255b68[_0x9a5e('0x4d')]=_0x1e2a11;}else if(_0x2ce9e0&&_0x2ce9e0[_0x9a5e('0x4e')]&&_0x2ce9e0[_0x9a5e('0x4e')]!==_0x9a5e('0x4f')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x255b68[_0x9a5e('0x4d')]=_0x1e2a11;}else{_0x255b68[_0x9a5e('0x4d')]='';}return getAdminId(_0xe92e49,_0xf32f61,_0x6868fc,_0x53126a)[_0x9a5e('0x18')](getUser(_0xf32f61,_0x6868fc,_0x53126a))['then'](getEndUser(_0xf32f61,_0x6868fc,_0x53126a))[_0x9a5e('0x18')](getTicket(_0xf32f61,_0x6868fc,_0x53126a,_0x4cccf0,_0x255b68))[_0x9a5e('0x18')](function(_0x5356fb){logger[_0x9a5e('0xf')](util[_0x9a5e('0x28')](_0x9a5e('0x50'),_0x5356fb[_0x9a5e('0x51')]));if(_0xf32f61!==_0x9a5e('0x47')){logger[_0x9a5e('0xf')]('['+[_0xf32f61[_0x9a5e('0x15')]()]+']',_0x9a5e('0x52'));emit(_0x53126a,_0x97fe03[_0x9a5e('0x53')],_0x5356fb['endUserId']);}})[_0x9a5e('0x14')](function(_0x547a26){logger['error']('['+[_0xf32f61[_0x9a5e('0x15')]()]+_0x9a5e('0x54'),util[_0x9a5e('0x55')](_0x547a26,{'showHidden':!![],'depth':null}));});};