7f3278f55171ab16dac3781034c9ec5d3518a489
[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 _0xb715=['Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','task','/contacts/','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','unmanaged','outbound','agentEmail','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','ticketId','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','request-promise','util','moment','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','GET','Getting\x20user\x20list','Getting\x20user\x20with\x20email','userEmail','userId','Admin\x20selected','message','/api/lookup?q=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','work_number','endUserId','Contact\x20found\x20work_number:'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xb715,0x16d));var _0x5b71=function(_0x37564a,_0x5ec382){_0x37564a=_0x37564a-0x0;var _0x4c1d0f=_0xb715[_0x37564a];return _0x4c1d0f;};'use strict';var _=require('lodash');var rp=require(_0x5b71('0x0'));var md5=require('md5');var util=require(_0x5b71('0x1'));var moment=require(_0x5b71('0x2'));var Promise=require('bluebird');var Redis=require(_0x5b71('0x3'));var intUtil=require('./util');var config=require(_0x5b71('0x4'));var logger=require(_0x5b71('0x5'))('freshsales');config['redis']=_[_0x5b71('0x6')](config[_0x5b71('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5b71('0x7')]));function getAdminId(_0x37c945,_0x19a401,_0xdd9897,_0x30cc6d){return new Promise(function(_0x285e4f,_0x2f42cb){var _0x3e0f28=![];var _0x370ec0={'method':'GET','uri':_0x30cc6d+_0x5b71('0x8'),'json':!![]};_0x370ec0[_0x5b71('0x9')]=_0xdd9897;logger[_0x5b71('0xa')](_0x5b71('0xb'));return rp(_0x370ec0)[_0x5b71('0xc')](function(_0x32100e){if(_0x32100e){var _0x448732=_0x32100e[_0x5b71('0xd')];var _0xc5b01e=null;for(_0xc5b01e=0x0;_0xc5b01e<_0x448732[_0x5b71('0xe')];_0xc5b01e++){if(_0x448732[_0xc5b01e][_0x5b71('0xf')]===_0x37c945[_0x5b71('0x10')]){_0x37c945[_0x5b71('0x11')]=_0x448732[_0xc5b01e]['id'];_0x3e0f28=!![];}}if(_0x3e0f28){logger[_0x5b71('0xa')]('Admin\x20found:',_0x37c945[_0x5b71('0x11')]);_0x285e4f(_0x37c945);}else{_0x2f42cb({'statusCode':0x194,'message':_0x5b71('0x12')});}}else{_0x2f42cb({'statusCode':0x194,'message':_0x5b71('0x12')});}})[_0x5b71('0x13')](function(_0x3f0615){logger[_0x5b71('0x14')]('['+[_0x19a401[_0x5b71('0x15')]()]+']',_0x3f0615['message']);_0x2f42cb(_0x3f0615);});});}function getUser(_0x42fe55,_0x10a817,_0x493d6d){return function(_0x4f5164){return new Promise(function(_0x33a1db,_0x54f9ce){var _0x17a03c={'method':_0x5b71('0x16'),'uri':_0x493d6d+_0x5b71('0x8'),'json':!![]};_0x17a03c[_0x5b71('0x9')]=_0x10a817;logger[_0x5b71('0xa')](_0x5b71('0x17'));return rp(_0x17a03c)[_0x5b71('0xc')](function(_0x36560e){if(_0x36560e){var _0x3b389d=_0x36560e[_0x5b71('0xd')];var _0x10400c=![];var _0x7a5296=null;if(_0x4f5164['agentEmail']!==null){logger[_0x5b71('0xa')](_0x5b71('0x18'),_0x4f5164['agentEmail']);_0x4f5164[_0x5b71('0x19')]=_0x4f5164['agentEmail'];for(_0x7a5296=0x0;_0x7a5296<_0x3b389d[_0x5b71('0xe')];_0x7a5296++){if(_0x3b389d[_0x7a5296][_0x5b71('0xf')]===_0x4f5164['agentEmail']){_0x10400c=!![];_0x4f5164[_0x5b71('0x1a')]=_0x3b389d[_0x7a5296]['id'];logger['info']('User\x20found:',_0x4f5164['userId']);}}}if(!_0x10400c){logger[_0x5b71('0xa')](_0x5b71('0x1b'));_0x4f5164[_0x5b71('0x19')]=_0x4f5164['adminEmail'];_0x4f5164['userId']=_0x4f5164[_0x5b71('0x11')];_0x10400c=!![];}if(_0x10400c){_0x33a1db(_0x4f5164);}else{_0x54f9ce({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x54f9ce({'statusCode':0x194,'message':_0x5b71('0x12')});}})[_0x5b71('0x13')](function(_0x33eff4){logger[_0x5b71('0x14')]('['+[_0x42fe55['toUpperCase']()]+']',_0x33eff4[_0x5b71('0x1c')]);_0x54f9ce(_0x33eff4);});});};}function searchContact(_0x2b2d8f,_0x2d4ba0,_0x37ab31,_0x2821a4){return new Promise(function(_0x453db6,_0x561e2e){var _0x4f8b42={'method':_0x5b71('0x16'),'headers':_0x2d4ba0,'uri':_0x2b2d8f+_0x5b71('0x1d')+_0x2821a4+'&f='+_0x37ab31+'&entities=contact','json':!![]};rp(_0x4f8b42)[_0x5b71('0xc')](function(_0xd71245){var _0x3669a7=_[_0x5b71('0x1e')](_0xd71245[_0x5b71('0x1f')]['contacts'],[_0x37ab31,_0x2821a4]);_0x453db6(_0x3669a7);})[_0x5b71('0x13')](function(_0x20e206){_0x561e2e(_0x20e206);});});}function getEndUser(_0x4c53c9,_0x37b537,_0x180e40){return function(_0x149760){return new Promise(function(_0x425a35,_0x24ff0c){logger[_0x5b71('0xa')](util[_0x5b71('0x20')](_0x5b71('0x21'),_0x149760[_0x5b71('0x22')]));searchContact(_0x180e40,_0x37b537,_0x5b71('0x23'),_0x149760[_0x5b71('0x22')])['then'](function(_0x4335f1){if(_0x4335f1){_0x149760['endUserId']=_0x4335f1['id'];logger[_0x5b71('0xa')](_0x5b71('0x24'),_0x149760['endUserId']);return _0x425a35(_0x149760);}searchContact(_0x180e40,_0x37b537,_0x5b71('0x25'),_0x149760[_0x5b71('0x22')])[_0x5b71('0xc')](function(_0x38ac11){if(_0x38ac11){_0x149760[_0x5b71('0x26')]=_0x38ac11['id'];logger[_0x5b71('0xa')](_0x5b71('0x27'),_0x149760[_0x5b71('0x26')]);return _0x425a35(_0x149760);}createEndUser(_0x149760,_0x4c53c9,_0x37b537,_0x180e40)[_0x5b71('0xc')](function(_0x5e29fd){logger[_0x5b71('0xa')](_0x5b71('0x28'),_0x5e29fd['endUserId']);return _0x425a35(_0x5e29fd);});});})[_0x5b71('0x13')](function(_0x128752){_0x24ff0c(_0x128752);});});};}function createEndUser(_0x3c333e,_0x574857,_0x14382b,_0x4ee737){return new Promise(function(_0x24fdaa,_0x571d32){var _0x41d2c4=moment();var _0x23574b={'method':_0x5b71('0x29'),'uri':_0x4ee737+_0x5b71('0x2a'),'body':{'contact':{'last_name':_0x3c333e[_0x5b71('0x22')],'work_number':_0x3c333e['contactNumber'],'mobile_number':_0x3c333e[_0x5b71('0x22')],'owner_id':_0x3c333e[_0x5b71('0x1a')],'created_at':_0x41d2c4[_0x5b71('0x20')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x23574b[_0x5b71('0x9')]=_0x14382b;logger[_0x5b71('0xa')](_0x5b71('0x2b'));return rp(_0x23574b)[_0x5b71('0xc')](function(_0x22ce23){_0x3c333e[_0x5b71('0x26')]=_0x22ce23[_0x5b71('0x2c')]['id'];_0x24fdaa(_0x3c333e);})[_0x5b71('0x13')](function(_0x31b1c1){logger[_0x5b71('0x14')]('['+[_0x574857[_0x5b71('0x15')]()]+']',_0x31b1c1[_0x5b71('0x1c')]);_0x571d32(_0x31b1c1[_0x5b71('0x1c')]);});});}function getTicket(_0x2e7727,_0x2b34d9,_0xf6ca3,_0x31fe82,_0x45feb4){return function(_0x38c5b0){logger[_0x5b71('0xa')]('Creating\x20new\x20task');return new Promise(function(_0x3797b1,_0x14cb3a){var _0x99e7fe=moment();var _0x326bd1={'method':_0x5b71('0x29'),'uri':_0xf6ca3+_0x5b71('0x2d'),'body':{'title':intUtil[_0x5b71('0x2e')](_0x31fe82[_0x5b71('0x2f')],_0x45feb4,'\x20'),'description':intUtil[_0x5b71('0x2e')](_0x31fe82[_0x5b71('0x30')],_0x45feb4,'\x0a'),'owner_id':_0x38c5b0['userId'],'creater_id':_0x38c5b0['adminId'],'targetable_id':_0x38c5b0[_0x5b71('0x26')],'targetable_type':_0x5b71('0x31'),'created_at':_0x99e7fe[_0x5b71('0x20')](_0x5b71('0x32')),'due_date':_0x99e7fe[_0x5b71('0x33')](0x1e,'m')[_0x5b71('0x20')](_0x5b71('0x32'))},'json':!![]};_0x326bd1['headers']=_0x2b34d9;return rp(_0x326bd1)[_0x5b71('0xc')](function(_0x395950){_0x38c5b0['ticketId']=_0x395950[_0x5b71('0x34')]['id'];logger[_0x5b71('0xa')]('Task\x20created:',_0x38c5b0['ticketId']);_0x3797b1(_0x38c5b0);})['catch'](function(_0x24e823){logger[_0x5b71('0x14')]('['+[_0x2e7727['toUpperCase']()]+']',_0x24e823[_0x5b71('0x1c')]);_0x14cb3a(_0x24e823['message']);});});};}function emit(_0x200ac8,_0x39d9d9,_0x4af475){var _0x173a59={'uri':_0x200ac8+_0x5b71('0x35')+_0x4af475};io['to'](util[_0x5b71('0x20')]('user:%s',_0x39d9d9))['emit'](_0x5b71('0x36'),_0x173a59);}exports['cs']=function(_0x371717,_0x5596b1,_0x4cf914,_0x21250a,_0xeb2a06,_0x2d8ebc,_0x14bd25,_0x4e6edb){var _0x1ec77b={};var _0x165043={'Authorization':'Token\x20token='+_0x2d8ebc[_0x5b71('0x37')]};_0x2d8ebc[_0x5b71('0x38')]=intUtil[_0x5b71('0x39')](_0x2d8ebc[_0x5b71('0x38')]);_0x2d8ebc[_0x5b71('0x3a')]=intUtil[_0x5b71('0x39')](_0x2d8ebc['serverUrl']);var _0x5195fc=_0x2d8ebc[_0x5b71('0x38')];_0x1ec77b[_0x5b71('0x10')]=_0x2d8ebc[_0x5b71('0x3b')];_0x1ec77b[_0x5b71('0x22')]=_0x4e6edb[_0x5b71('0x3c')]()==='outbound'?_0x5596b1[_0x5b71('0x3d')]:_0x5596b1[_0x5b71('0x3e')];_0x1ec77b[_0x5b71('0x3f')]=_0x4e6edb===_0x5b71('0x40')||_0x4e6edb===_0x5b71('0x41')?'queue':_0x5b71('0x42');if(_0x21250a){_0x1ec77b[_0x5b71('0x43')]=_0x21250a[_0x5b71('0xf')];}var _0x3446b3=util[_0x5b71('0x20')](_0x5b71('0x44'),_0x2d8ebc['serverUrl'],_0x5596b1[_0x5b71('0x45')],md5(_0x5596b1[_0x5b71('0x45')]));if(_0xeb2a06&&_0xeb2a06[_0x5b71('0x46')]){logger[_0x5b71('0xa')](_0x5b71('0x47'),_0x5b71('0x48'));_0x5596b1[_0x5b71('0x49')]=_0x3446b3;}else if(_0x14bd25&&_0x14bd25[_0x5b71('0x4a')]&&_0x14bd25[_0x5b71('0x4a')]!==_0x5b71('0x4b')){logger[_0x5b71('0xa')](_0x5b71('0x4c'),_0x5b71('0x48'));_0x5596b1[_0x5b71('0x49')]=_0x3446b3;}else{_0x5596b1[_0x5b71('0x49')]='';}return getAdminId(_0x1ec77b,_0x4e6edb,_0x165043,_0x5195fc)[_0x5b71('0xc')](getUser(_0x4e6edb,_0x165043,_0x5195fc))[_0x5b71('0xc')](getEndUser(_0x4e6edb,_0x165043,_0x5195fc))[_0x5b71('0xc')](getTicket(_0x4e6edb,_0x165043,_0x5195fc,_0x4cf914,_0x5596b1))[_0x5b71('0xc')](function(_0x173f5a){logger['info'](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x173f5a[_0x5b71('0x4d')]));if(_0x4e6edb!==_0x5b71('0x41')){logger[_0x5b71('0xa')]('['+[_0x4e6edb[_0x5b71('0x15')]()]+']',_0x5b71('0x4e'));emit(_0x5195fc,_0x21250a[_0x5b71('0x4f')],_0x173f5a[_0x5b71('0x26')]);}})[_0x5b71('0x13')](function(_0x5add28){logger[_0x5b71('0x14')]('['+[_0x4e6edb[_0x5b71('0x15')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x5b71('0x50')](_0x5add28,{'showHidden':!![],'depth':null}));});};