Built motion from commit (unavailable).|2.5.9
[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 _0xe643=['Searching\x20contact\x20with\x20phone','contactNumber','contacts','find','work_number','mobile_number','Contact\x20found:','endUserId','Contact\x20created:','POST','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','error','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','stripTrailingSlash','remoteUri','serverUrl','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length','email','adminEmail','info','Admin\x20found:','adminId','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','/api/contacts/filters','Getting\x20contacts\x20filter','filters','forEach','name','All\x20Contacts','Getting\x20contact\x20list'];(function(_0x57caab,_0x5db803){var _0x3935ce=function(_0x1f4cbc){while(--_0x1f4cbc){_0x57caab['push'](_0x57caab['shift']());}};_0x3935ce(++_0x5db803);}(_0xe643,0x84));var _0x3e64=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xe643[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x3e64('0x0'));var rp=require(_0x3e64('0x1'));var md5=require('md5');var util=require(_0x3e64('0x2'));var moment=require('moment');var Promise=require(_0x3e64('0x3'));var Redis=require(_0x3e64('0x4'));var intUtil=require(_0x3e64('0x5'));var config=require(_0x3e64('0x6'));var logger=require(_0x3e64('0x7'))('freshsales');config[_0x3e64('0x8')]=_[_0x3e64('0x9')](config[_0x3e64('0x8')],{'host':_0x3e64('0xa'),'port':0x18eb});var io=require(_0x3e64('0xb'))(new Redis(config[_0x3e64('0x8')]));function getAdminId(_0x51cb2b,_0x1cc6b9,_0x2ddf0e,_0x196e4e){return new Promise(function(_0x2fd0b7,_0x28c387){var _0x38dc01=![];var _0x1f11f1={'method':_0x3e64('0xc'),'uri':_0x196e4e+_0x3e64('0xd'),'json':!![]};_0x1f11f1[_0x3e64('0xe')]=_0x2ddf0e;logger['info'](_0x3e64('0xf'));return rp(_0x1f11f1)[_0x3e64('0x10')](function(_0x1ae3dd){if(_0x1ae3dd){var _0xe8dc1d=_0x1ae3dd[_0x3e64('0x11')];var _0x3418cf=null;for(_0x3418cf=0x0;_0x3418cf<_0xe8dc1d[_0x3e64('0x12')];_0x3418cf++){if(_0xe8dc1d[_0x3418cf][_0x3e64('0x13')]===_0x51cb2b[_0x3e64('0x14')]){_0x51cb2b['adminId']=_0xe8dc1d[_0x3418cf]['id'];_0x38dc01=!![];}}if(_0x38dc01){logger[_0x3e64('0x15')](_0x3e64('0x16'),_0x51cb2b[_0x3e64('0x17')]);_0x2fd0b7(_0x51cb2b);}else{_0x28c387({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x28c387({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x4bafd0){logger['error']('['+[_0x1cc6b9['toUpperCase']()]+']',_0x4bafd0[_0x3e64('0x18')]);_0x28c387(_0x4bafd0);});});}function getUser(_0x2a4a2b,_0x3992db,_0x1770a7){return function(_0x395fd6){return new Promise(function(_0x1c78a1,_0x33fb55){var _0x4659e8={'method':_0x3e64('0xc'),'uri':_0x1770a7+'/api/selector/owners','json':!![]};_0x4659e8[_0x3e64('0xe')]=_0x3992db;logger['info'](_0x3e64('0x19'));return rp(_0x4659e8)[_0x3e64('0x10')](function(_0xe43446){if(_0xe43446){var _0x5d4b86=_0xe43446[_0x3e64('0x11')];var _0x21eff6=![];var _0x1fb49e=null;if(_0x395fd6[_0x3e64('0x1a')]!==null){logger[_0x3e64('0x15')](_0x3e64('0x1b'),_0x395fd6[_0x3e64('0x1a')]);_0x395fd6['userEmail']=_0x395fd6['agentEmail'];for(_0x1fb49e=0x0;_0x1fb49e<_0x5d4b86[_0x3e64('0x12')];_0x1fb49e++){if(_0x5d4b86[_0x1fb49e][_0x3e64('0x13')]===_0x395fd6[_0x3e64('0x1a')]){_0x21eff6=!![];_0x395fd6[_0x3e64('0x1c')]=_0x5d4b86[_0x1fb49e]['id'];logger[_0x3e64('0x15')](_0x3e64('0x1d'),_0x395fd6[_0x3e64('0x1c')]);}}}if(!_0x21eff6){logger[_0x3e64('0x15')](_0x3e64('0x1e'));_0x395fd6[_0x3e64('0x1f')]=_0x395fd6['adminEmail'];_0x395fd6[_0x3e64('0x1c')]=_0x395fd6[_0x3e64('0x17')];_0x21eff6=!![];}if(_0x21eff6){_0x1c78a1(_0x395fd6);}else{_0x33fb55({'statusCode':0x194,'message':_0x3e64('0x20')});}}else{_0x33fb55({'statusCode':0x194,'message':_0x3e64('0x20')});}})[_0x3e64('0x21')](function(_0x13db72){logger['error']('['+[_0x2a4a2b[_0x3e64('0x22')]()]+']',_0x13db72[_0x3e64('0x18')]);_0x33fb55(_0x13db72);});});};}function getEndUser(_0x5e7614,_0x32e35b,_0x30b402){return function(_0x4cd027){return new Promise(function(_0x1062ff,_0x1355e0){var _0x35597f=0x0;var _0x30f7a2={'method':_0x3e64('0xc'),'uri':_0x30b402+_0x3e64('0x23'),'json':!![]};_0x30f7a2[_0x3e64('0xe')]=_0x32e35b;logger[_0x3e64('0x15')](_0x3e64('0x24'));return rp(_0x30f7a2)['then'](function(_0x2ddd4){_0x2ddd4[_0x3e64('0x25')][_0x3e64('0x26')](function(_0xcc78bf){if(_0xcc78bf[_0x3e64('0x27')]===_0x3e64('0x28')){_0x35597f=_0xcc78bf['id'];}});})[_0x3e64('0x10')](function(){logger[_0x3e64('0x15')](_0x3e64('0x29'));var _0x1da406={'method':_0x3e64('0xc'),'uri':_0x30b402+'/api/contacts/view/'+_0x35597f,'json':!![]};_0x1da406[_0x3e64('0xe')]=_0x32e35b;return rp(_0x1da406);})[_0x3e64('0x10')](function(_0x25e928){logger['info'](_0x3e64('0x2a'),_0x4cd027[_0x3e64('0x2b')]);if(_0x25e928[_0x3e64('0x2c')][_0x3e64('0x12')]>0x0){var _0x1926ac=_[_0x3e64('0x2d')](_0x25e928[_0x3e64('0x2c')],function(_0x5972bf){if(_0x5972bf[_0x3e64('0x2e')]===_0x4cd027[_0x3e64('0x2b')]||_0x5972bf[_0x3e64('0x2f')]===_0x4cd027['contactNumber']){return _0x5972bf;}});if(_0x1926ac){_0x4cd027['endUserId']=_0x1926ac['id'];logger[_0x3e64('0x15')](_0x3e64('0x30'),_0x4cd027[_0x3e64('0x31')]);_0x1062ff(_0x4cd027);}else{return createEndUser(_0x4cd027,_0x5e7614,_0x32e35b,_0x30b402)[_0x3e64('0x10')](function(_0x17bfda){logger[_0x3e64('0x15')](_0x3e64('0x32'),_0x4cd027[_0x3e64('0x31')]);_0x1062ff(_0x17bfda);});}}else{return createEndUser(_0x4cd027,_0x5e7614,_0x32e35b,_0x30b402)['then'](function(_0xadfe8c){logger[_0x3e64('0x15')](_0x3e64('0x32'),_0x4cd027[_0x3e64('0x31')]);_0x1062ff(_0xadfe8c);});}})[_0x3e64('0x21')](function(_0x7474eb){throw new Error(_0x7474eb[_0x3e64('0x18')]);});});};}function createEndUser(_0x592a6c,_0x1d096f,_0x3aa01f,_0xc5a8c7){return new Promise(function(_0x5bceba,_0x46383d){var _0x2c0c89=moment();var _0x4ef1dc={'method':_0x3e64('0x33'),'uri':_0xc5a8c7+_0x3e64('0x34'),'body':{'contact':{'last_name':_0x592a6c[_0x3e64('0x2b')],'work_number':_0x592a6c[_0x3e64('0x2b')],'mobile_number':_0x592a6c['contactNumber'],'owner_id':_0x592a6c['userId'],'created_at':_0x2c0c89[_0x3e64('0x35')](_0x3e64('0x36'))}},'json':!![]};_0x4ef1dc[_0x3e64('0xe')]=_0x3aa01f;logger[_0x3e64('0x15')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x4ef1dc)[_0x3e64('0x10')](function(_0x3dacbb){_0x592a6c['endUserId']=_0x3dacbb['contact']['id'];_0x5bceba(_0x592a6c);})[_0x3e64('0x21')](function(_0x3f6455){logger[_0x3e64('0x37')]('['+[_0x1d096f['toUpperCase']()]+']',_0x3f6455[_0x3e64('0x18')]);_0x46383d(_0x3f6455['message']);});});}function getTicket(_0x4b52de,_0x596b4b,_0x6b31ac,_0xfd0718,_0xdfada5){return function(_0x5442e6){logger['info'](_0x3e64('0x38'));return new Promise(function(_0x3c88d5,_0x49174f){var _0x42a1b0=moment();var _0x225fdf={'method':_0x3e64('0x33'),'uri':_0x6b31ac+_0x3e64('0x39'),'body':{'title':intUtil[_0x3e64('0x3a')](_0xfd0718[_0x3e64('0x3b')],_0xdfada5,'\x20'),'description':intUtil[_0x3e64('0x3a')](_0xfd0718[_0x3e64('0x3c')],_0xdfada5,'\x0a'),'owner_id':_0x5442e6[_0x3e64('0x1c')],'creater_id':_0x5442e6[_0x3e64('0x17')],'targetable_id':_0x5442e6['endUserId'],'targetable_type':'Contact','created_at':_0x42a1b0[_0x3e64('0x35')](_0x3e64('0x36')),'due_date':_0x42a1b0['add'](0x1e,'m')['format'](_0x3e64('0x36'))},'json':!![]};_0x225fdf[_0x3e64('0xe')]=_0x596b4b;return rp(_0x225fdf)[_0x3e64('0x10')](function(_0x12ee1d){_0x5442e6[_0x3e64('0x3d')]=_0x12ee1d['task']['id'];logger[_0x3e64('0x15')](_0x3e64('0x3e'),_0x5442e6[_0x3e64('0x3d')]);_0x3c88d5(_0x5442e6);})[_0x3e64('0x21')](function(_0x5a4fc8){logger['error']('['+[_0x4b52de['toUpperCase']()]+']',_0x5a4fc8[_0x3e64('0x18')]);_0x49174f(_0x5a4fc8[_0x3e64('0x18')]);});});};}function emit(_0x370f8b,_0x545cfc,_0x203baa){var _0x26bea4={'uri':_0x370f8b+_0x3e64('0x3f')+_0x203baa};io['to'](util[_0x3e64('0x35')](_0x3e64('0x40'),_0x545cfc))[_0x3e64('0x41')](_0x3e64('0x42'),_0x26bea4);}exports['cs']=function(_0x1ec7d1,_0x699c9a,_0x52e459,_0x386bed,_0x20e070,_0x2e147e,_0x9a1311,_0x25d613){var _0x1b4488={};var _0x5a5ae3={'Authorization':'Token\x20token='+_0x2e147e['apiKey']};_0x2e147e['remoteUri']=intUtil[_0x3e64('0x43')](_0x2e147e[_0x3e64('0x44')]);_0x2e147e['serverUrl']=intUtil[_0x3e64('0x43')](_0x2e147e[_0x3e64('0x45')]);var _0x5513b2=_0x2e147e['remoteUri'];_0x1b4488[_0x3e64('0x14')]=_0x2e147e['username'];_0x1b4488[_0x3e64('0x2b')]=_0x25d613['toLowerCase']()===_0x3e64('0x46')?_0x699c9a[_0x3e64('0x47')]:_0x699c9a[_0x3e64('0x48')];_0x1b4488[_0x3e64('0x49')]=_0x25d613===_0x3e64('0x4a')||_0x25d613===_0x3e64('0x4b')?_0x3e64('0x4a'):_0x3e64('0x46');if(_0x386bed){_0x1b4488[_0x3e64('0x1a')]=_0x386bed[_0x3e64('0x13')];}var _0x1a4e8f=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2e147e['serverUrl'],_0x699c9a[_0x3e64('0x4c')],md5(_0x699c9a[_0x3e64('0x4c')]));if(_0x20e070&&_0x20e070[_0x3e64('0x4d')]){logger[_0x3e64('0x15')](_0x3e64('0x4e'),_0x3e64('0x4f'));_0x699c9a['recordingURL']=_0x1a4e8f;}else if(_0x9a1311&&_0x9a1311[_0x3e64('0x50')]&&_0x9a1311[_0x3e64('0x50')]!==_0x3e64('0x51')){logger[_0x3e64('0x15')]('[OUTBOUND]',_0x3e64('0x4f'));_0x699c9a[_0x3e64('0x52')]=_0x1a4e8f;}else{_0x699c9a[_0x3e64('0x52')]='';}return getAdminId(_0x1b4488,_0x25d613,_0x5a5ae3,_0x5513b2)[_0x3e64('0x10')](getUser(_0x25d613,_0x5a5ae3,_0x5513b2))[_0x3e64('0x10')](getEndUser(_0x25d613,_0x5a5ae3,_0x5513b2))[_0x3e64('0x10')](getTicket(_0x25d613,_0x5a5ae3,_0x5513b2,_0x52e459,_0x699c9a))[_0x3e64('0x10')](function(_0x290672){logger[_0x3e64('0x15')](util[_0x3e64('0x35')](_0x3e64('0x53'),_0x290672['ticketId']));if(_0x25d613!==_0x3e64('0x4b')){logger[_0x3e64('0x15')]('['+[_0x25d613[_0x3e64('0x22')]()]+']',_0x3e64('0x54'));emit(_0x5513b2,_0x386bed[_0x3e64('0x27')],_0x290672[_0x3e64('0x31')]);}})[_0x3e64('0x21')](function(_0x36e743){logger[_0x3e64('0x37')]('['+[_0x25d613['toUpperCase']()]+_0x3e64('0x55'),util[_0x3e64('0x56')](_0x36e743,{'showHidden':!![],'depth':null}));});};