Built motion from commit da617fac.|2.6.6
[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 _0x2151=['Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','toUpperCase','&f=','find','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','message','Creating\x20new\x20task','/api/tasks','getString','Subjects','Contact','add','ticketId','task','user:%s','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','name','inspect','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','localhost','socket.io-emitter','GET','/api/selector/owners','info'];(function(_0x17bf4e,_0x43e95b){var _0x3156ce=function(_0x1cece4){while(--_0x1cece4){_0x17bf4e['push'](_0x17bf4e['shift']());}};_0x3156ce(++_0x43e95b);}(_0x2151,0xe3));var _0x1215=function(_0x4eeaa5,_0x5b9da2){_0x4eeaa5=_0x4eeaa5-0x0;var _0x23ba49=_0x2151[_0x4eeaa5];return _0x23ba49;};'use strict';var _=require(_0x1215('0x0'));var rp=require(_0x1215('0x1'));var md5=require(_0x1215('0x2'));var util=require(_0x1215('0x3'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0x1215('0x4'));var intUtil=require(_0x1215('0x5'));var config=require(_0x1215('0x6'));var logger=require(_0x1215('0x7'))(_0x1215('0x8'));config['redis']=_[_0x1215('0x9')](config[_0x1215('0xa')],{'host':_0x1215('0xb'),'port':0x18eb});var io=require(_0x1215('0xc'))(new Redis(config[_0x1215('0xa')]));function getAdminId(_0x248146,_0x393e53,_0x825a7,_0x31ca4a){return new Promise(function(_0x5a63ee,_0x33cd4d){var _0x2c7cc0=![];var _0x38f92b={'method':_0x1215('0xd'),'uri':_0x31ca4a+_0x1215('0xe'),'json':!![]};_0x38f92b['headers']=_0x825a7;logger[_0x1215('0xf')](_0x1215('0x10'));return rp(_0x38f92b)[_0x1215('0x11')](function(_0x290af6){if(_0x290af6){var _0x520e14=_0x290af6[_0x1215('0x12')];var _0x5e81f0=null;for(_0x5e81f0=0x0;_0x5e81f0<_0x520e14[_0x1215('0x13')];_0x5e81f0++){if(_0x520e14[_0x5e81f0][_0x1215('0x14')]===_0x248146[_0x1215('0x15')]){_0x248146[_0x1215('0x16')]=_0x520e14[_0x5e81f0]['id'];_0x2c7cc0=!![];}}if(_0x2c7cc0){logger[_0x1215('0xf')]('Admin\x20found:',_0x248146[_0x1215('0x16')]);_0x5a63ee(_0x248146);}else{_0x33cd4d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x33cd4d({'statusCode':0x194,'message':_0x1215('0x17')});}})[_0x1215('0x18')](function(_0xb00131){logger[_0x1215('0x19')]('['+[_0x393e53['toUpperCase']()]+']',_0xb00131['message']);_0x33cd4d(_0xb00131);});});}function getUser(_0x4847dd,_0xac48a4,_0x45e045){return function(_0x3d446b){return new Promise(function(_0x4bc514,_0x3a5f36){var _0x2b4188={'method':_0x1215('0xd'),'uri':_0x45e045+'/api/selector/owners','json':!![]};_0x2b4188[_0x1215('0x1a')]=_0xac48a4;logger[_0x1215('0xf')](_0x1215('0x1b'));return rp(_0x2b4188)[_0x1215('0x11')](function(_0x1992aa){if(_0x1992aa){var _0x1313a7=_0x1992aa[_0x1215('0x12')];var _0x47c653=![];var _0x1a7987=null;if(_0x3d446b[_0x1215('0x1c')]!==null){logger[_0x1215('0xf')](_0x1215('0x1d'),_0x3d446b['agentEmail']);_0x3d446b['userEmail']=_0x3d446b[_0x1215('0x1c')];for(_0x1a7987=0x0;_0x1a7987<_0x1313a7[_0x1215('0x13')];_0x1a7987++){if(_0x1313a7[_0x1a7987]['email']===_0x3d446b[_0x1215('0x1c')]){_0x47c653=!![];_0x3d446b[_0x1215('0x1e')]=_0x1313a7[_0x1a7987]['id'];logger[_0x1215('0xf')](_0x1215('0x1f'),_0x3d446b[_0x1215('0x1e')]);}}}if(!_0x47c653){logger[_0x1215('0xf')](_0x1215('0x20'));_0x3d446b[_0x1215('0x21')]=_0x3d446b[_0x1215('0x15')];_0x3d446b[_0x1215('0x1e')]=_0x3d446b['adminId'];_0x47c653=!![];}if(_0x47c653){_0x4bc514(_0x3d446b);}else{_0x3a5f36({'statusCode':0x194,'message':_0x1215('0x17')});}}else{_0x3a5f36({'statusCode':0x194,'message':_0x1215('0x17')});}})['catch'](function(_0x2bffeb){logger[_0x1215('0x19')]('['+[_0x4847dd[_0x1215('0x22')]()]+']',_0x2bffeb['message']);_0x3a5f36(_0x2bffeb);});});};}function searchContact(_0x217cc6,_0xe2efcf,_0x1cdd91,_0x56195f){return new Promise(function(_0x513479,_0x2adc49){var _0x108ac1={'method':_0x1215('0xd'),'headers':_0xe2efcf,'uri':_0x217cc6+'/api/lookup?q='+_0x56195f+_0x1215('0x23')+_0x1cdd91+'&entities=contact','json':!![]};rp(_0x108ac1)[_0x1215('0x11')](function(_0x28dc5c){var _0x2a5379=_[_0x1215('0x24')](_0x28dc5c['contacts'][_0x1215('0x25')],[_0x1cdd91,_0x56195f]);_0x513479(_0x2a5379);})['catch'](function(_0x545d82){_0x2adc49(_0x545d82);});});}function getEndUser(_0x6a862f,_0x185914,_0x35df72){return function(_0x327b56){return new Promise(function(_0x4fec83,_0x1808d3){logger[_0x1215('0xf')](util[_0x1215('0x26')]('Searching\x20contact\x20with\x20phone\x20%s',_0x327b56[_0x1215('0x27')]));searchContact(_0x35df72,_0x185914,_0x1215('0x28'),_0x327b56[_0x1215('0x27')])['then'](function(_0x2e62c8){if(_0x2e62c8){_0x327b56[_0x1215('0x29')]=_0x2e62c8['id'];logger[_0x1215('0xf')](_0x1215('0x2a'),_0x327b56[_0x1215('0x29')]);return _0x4fec83(_0x327b56);}searchContact(_0x35df72,_0x185914,_0x1215('0x2b'),_0x327b56[_0x1215('0x27')])[_0x1215('0x11')](function(_0x366e3d){if(_0x366e3d){_0x327b56[_0x1215('0x29')]=_0x366e3d['id'];logger[_0x1215('0xf')](_0x1215('0x2c'),_0x327b56['endUserId']);return _0x4fec83(_0x327b56);}createEndUser(_0x327b56,_0x6a862f,_0x185914,_0x35df72)['then'](function(_0x4126f1){logger[_0x1215('0xf')](_0x1215('0x2d'),_0x4126f1[_0x1215('0x29')]);return _0x4fec83(_0x4126f1);});});})[_0x1215('0x18')](function(_0x4ee9ee){_0x1808d3(_0x4ee9ee);});});};}function createEndUser(_0x46b500,_0x309281,_0x39ad38,_0x1edc8c){return new Promise(function(_0xfd87c7,_0x39ddcf){var _0x486cb7=moment();var _0x30e637={'method':_0x1215('0x2e'),'uri':_0x1edc8c+'/api/contacts','body':{'contact':{'last_name':_0x46b500['contactNumber'],'work_number':_0x46b500[_0x1215('0x27')],'mobile_number':_0x46b500[_0x1215('0x27')],'owner_id':_0x46b500[_0x1215('0x1e')],'created_at':_0x486cb7['format'](_0x1215('0x2f'))}},'json':!![]};_0x30e637[_0x1215('0x1a')]=_0x39ad38;logger[_0x1215('0xf')](_0x1215('0x30'));return rp(_0x30e637)[_0x1215('0x11')](function(_0x347a2b){_0x46b500[_0x1215('0x29')]=_0x347a2b[_0x1215('0x31')]['id'];_0xfd87c7(_0x46b500);})['catch'](function(_0x3ed1c2){logger[_0x1215('0x19')]('['+[_0x309281[_0x1215('0x22')]()]+']',_0x3ed1c2[_0x1215('0x32')]);_0x39ddcf(_0x3ed1c2[_0x1215('0x32')]);});});}function getTicket(_0x1fc21c,_0x36cd73,_0x297403,_0x52ed93,_0x37b7c4){return function(_0x1ba4b0){logger[_0x1215('0xf')](_0x1215('0x33'));return new Promise(function(_0x4d2df6,_0x2362fa){var _0x1fb800=moment();var _0x38a512={'method':_0x1215('0x2e'),'uri':_0x297403+_0x1215('0x34'),'body':{'title':intUtil[_0x1215('0x35')](_0x52ed93[_0x1215('0x36')],_0x37b7c4,'\x20'),'description':intUtil[_0x1215('0x35')](_0x52ed93['Descriptions'],_0x37b7c4,'\x0a'),'owner_id':_0x1ba4b0[_0x1215('0x1e')],'creater_id':_0x1ba4b0['adminId'],'targetable_id':_0x1ba4b0[_0x1215('0x29')],'targetable_type':_0x1215('0x37'),'created_at':_0x1fb800['format']('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x1fb800[_0x1215('0x38')](0x1e,'m')[_0x1215('0x26')](_0x1215('0x2f'))},'json':!![]};_0x38a512[_0x1215('0x1a')]=_0x36cd73;return rp(_0x38a512)[_0x1215('0x11')](function(_0x4f3bd3){_0x1ba4b0[_0x1215('0x39')]=_0x4f3bd3[_0x1215('0x3a')]['id'];logger[_0x1215('0xf')]('Task\x20created:',_0x1ba4b0[_0x1215('0x39')]);_0x4d2df6(_0x1ba4b0);})['catch'](function(_0x2eca3b){logger[_0x1215('0x19')]('['+[_0x1fc21c[_0x1215('0x22')]()]+']',_0x2eca3b['message']);_0x2362fa(_0x2eca3b[_0x1215('0x32')]);});});};}function emit(_0x4384c4,_0x4b58e5,_0x241fbc){var _0x10171b={'uri':_0x4384c4+'/contacts/'+_0x241fbc};io['to'](util[_0x1215('0x26')](_0x1215('0x3b'),_0x4b58e5))['emit'](_0x1215('0x3c'),_0x10171b);}exports['cs']=function(_0x52ead4,_0x26001c,_0x547001,_0x3ee436,_0x514dd4,_0x3bf0a7,_0x21fbb6,_0x4525ca){var _0x3b5405={};var _0x59d2c9={'Authorization':'Token\x20token='+_0x3bf0a7[_0x1215('0x3d')]};_0x3bf0a7[_0x1215('0x3e')]=intUtil[_0x1215('0x3f')](_0x3bf0a7[_0x1215('0x3e')]);_0x3bf0a7[_0x1215('0x40')]=intUtil[_0x1215('0x3f')](_0x3bf0a7[_0x1215('0x40')]);var _0x3e3ce6=_0x3bf0a7['remoteUri'];_0x3b5405['adminEmail']=_0x3bf0a7[_0x1215('0x41')];_0x3b5405[_0x1215('0x27')]=_0x4525ca[_0x1215('0x42')]()===_0x1215('0x43')?_0x26001c[_0x1215('0x44')]:_0x26001c['calleridnum'];_0x3b5405[_0x1215('0x45')]=_0x4525ca===_0x1215('0x46')||_0x4525ca===_0x1215('0x47')?_0x1215('0x46'):_0x1215('0x43');if(_0x3ee436){_0x3b5405[_0x1215('0x1c')]=_0x3ee436[_0x1215('0x14')];}var _0x2741e2=util[_0x1215('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3bf0a7['serverUrl'],_0x26001c['uniqueid'],md5(_0x26001c[_0x1215('0x48')]));if(_0x514dd4&&_0x514dd4[_0x1215('0x49')]){logger[_0x1215('0xf')]('[QUEUE]',_0x1215('0x4a'));_0x26001c[_0x1215('0x4b')]=_0x2741e2;}else if(_0x21fbb6&&_0x21fbb6[_0x1215('0x4c')]&&_0x21fbb6[_0x1215('0x4c')]!==_0x1215('0x4d')){logger[_0x1215('0xf')]('[OUTBOUND]',_0x1215('0x4a'));_0x26001c['recordingURL']=_0x2741e2;}else{_0x26001c[_0x1215('0x4b')]='';}return getAdminId(_0x3b5405,_0x4525ca,_0x59d2c9,_0x3e3ce6)[_0x1215('0x11')](getUser(_0x4525ca,_0x59d2c9,_0x3e3ce6))[_0x1215('0x11')](getEndUser(_0x4525ca,_0x59d2c9,_0x3e3ce6))[_0x1215('0x11')](getTicket(_0x4525ca,_0x59d2c9,_0x3e3ce6,_0x547001,_0x26001c))[_0x1215('0x11')](function(_0x130268){logger['info'](util['format'](_0x1215('0x4e'),_0x130268[_0x1215('0x39')]));if(_0x4525ca!==_0x1215('0x47')){logger[_0x1215('0xf')]('['+[_0x4525ca[_0x1215('0x22')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x3e3ce6,_0x3ee436[_0x1215('0x4f')],_0x130268[_0x1215('0x29')]);}})['catch'](function(_0x5e8c5e){logger[_0x1215('0x19')]('['+[_0x4525ca[_0x1215('0x22')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x1215('0x50')](_0x5e8c5e,{'showHidden':!![],'depth':null}));});};