Built motion from commit e6806ed6.|2.6.0
[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 _0xe9d3=['inspect','md5','util','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','users','email','adminEmail','info','adminId','Requested\x20Resource\x20not\x20Found','catch','message','Getting\x20user\x20list','then','Getting\x20user\x20with\x20email','agentEmail','userEmail','length','userId','Admin\x20selected','error','toUpperCase','/api/lookup?q=','&f=','find','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','Subjects','getString','Descriptions','Contact','add','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','calleridnum','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name'];(function(_0x27576a,_0x258892){var _0x4b54f3=function(_0x333cd7){while(--_0x333cd7){_0x27576a['push'](_0x27576a['shift']());}};_0x4b54f3(++_0x258892);}(_0xe9d3,0x191));var _0x3e9d=function(_0x50b3a6,_0x303493){_0x50b3a6=_0x50b3a6-0x0;var _0x2da2b2=_0xe9d3[_0x50b3a6];return _0x2da2b2;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x3e9d('0x0'));var util=require(_0x3e9d('0x1'));var moment=require('moment');var Promise=require(_0x3e9d('0x2'));var Redis=require(_0x3e9d('0x3'));var intUtil=require('./util');var config=require(_0x3e9d('0x4'));var logger=require(_0x3e9d('0x5'))(_0x3e9d('0x6'));config[_0x3e9d('0x7')]=_[_0x3e9d('0x8')](config[_0x3e9d('0x7')],{'host':_0x3e9d('0x9'),'port':0x18eb});var io=require(_0x3e9d('0xa'))(new Redis(config[_0x3e9d('0x7')]));function getAdminId(_0x1cb872,_0x4d279e,_0x23b367,_0x3efe59){return new Promise(function(_0x270b7f,_0x1aded9){var _0x26c7d9=![];var _0x1dbeb8={'method':_0x3e9d('0xb'),'uri':_0x3efe59+_0x3e9d('0xc'),'json':!![]};_0x1dbeb8[_0x3e9d('0xd')]=_0x23b367;logger['info'](_0x3e9d('0xe'));return rp(_0x1dbeb8)['then'](function(_0x4f7f62){if(_0x4f7f62){var _0x47ddea=_0x4f7f62[_0x3e9d('0xf')];var _0x573a29=null;for(_0x573a29=0x0;_0x573a29<_0x47ddea['length'];_0x573a29++){if(_0x47ddea[_0x573a29][_0x3e9d('0x10')]===_0x1cb872[_0x3e9d('0x11')]){_0x1cb872['adminId']=_0x47ddea[_0x573a29]['id'];_0x26c7d9=!![];}}if(_0x26c7d9){logger[_0x3e9d('0x12')]('Admin\x20found:',_0x1cb872[_0x3e9d('0x13')]);_0x270b7f(_0x1cb872);}else{_0x1aded9({'statusCode':0x194,'message':_0x3e9d('0x14')});}}else{_0x1aded9({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x3e9d('0x15')](function(_0x40f4f7){logger['error']('['+[_0x4d279e['toUpperCase']()]+']',_0x40f4f7[_0x3e9d('0x16')]);_0x1aded9(_0x40f4f7);});});}function getUser(_0x48c796,_0xa7a5f8,_0x4b60cf){return function(_0x22cba8){return new Promise(function(_0x1d8886,_0x152da5){var _0x4013f8={'method':'GET','uri':_0x4b60cf+_0x3e9d('0xc'),'json':!![]};_0x4013f8['headers']=_0xa7a5f8;logger[_0x3e9d('0x12')](_0x3e9d('0x17'));return rp(_0x4013f8)[_0x3e9d('0x18')](function(_0x41a451){if(_0x41a451){var _0x61d3fc=_0x41a451[_0x3e9d('0xf')];var _0x2a06c0=![];var _0x485668=null;if(_0x22cba8['agentEmail']!==null){logger['info'](_0x3e9d('0x19'),_0x22cba8[_0x3e9d('0x1a')]);_0x22cba8[_0x3e9d('0x1b')]=_0x22cba8['agentEmail'];for(_0x485668=0x0;_0x485668<_0x61d3fc[_0x3e9d('0x1c')];_0x485668++){if(_0x61d3fc[_0x485668][_0x3e9d('0x10')]===_0x22cba8['agentEmail']){_0x2a06c0=!![];_0x22cba8[_0x3e9d('0x1d')]=_0x61d3fc[_0x485668]['id'];logger[_0x3e9d('0x12')]('User\x20found:',_0x22cba8[_0x3e9d('0x1d')]);}}}if(!_0x2a06c0){logger['info'](_0x3e9d('0x1e'));_0x22cba8['userEmail']=_0x22cba8[_0x3e9d('0x11')];_0x22cba8['userId']=_0x22cba8[_0x3e9d('0x13')];_0x2a06c0=!![];}if(_0x2a06c0){_0x1d8886(_0x22cba8);}else{_0x152da5({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x152da5({'statusCode':0x194,'message':_0x3e9d('0x14')});}})['catch'](function(_0xbc106a){logger[_0x3e9d('0x1f')]('['+[_0x48c796[_0x3e9d('0x20')]()]+']',_0xbc106a[_0x3e9d('0x16')]);_0x152da5(_0xbc106a);});});};}function searchContact(_0x14f526,_0x19007e,_0x332658,_0x26ad3f){return new Promise(function(_0x54c2d4,_0x173ac8){var _0x10329a={'method':'GET','headers':_0x19007e,'uri':_0x14f526+_0x3e9d('0x21')+_0x26ad3f+_0x3e9d('0x22')+_0x332658+'&entities=contact','json':!![]};rp(_0x10329a)['then'](function(_0x2eb5d8){var _0x5cf39b=_[_0x3e9d('0x23')](_0x2eb5d8[_0x3e9d('0x24')][_0x3e9d('0x24')],[_0x332658,_0x26ad3f]);_0x54c2d4(_0x5cf39b);})[_0x3e9d('0x15')](function(_0x5bd741){_0x173ac8(_0x5bd741);});});}function getEndUser(_0x212091,_0x49048b,_0x15ba00){return function(_0x1abdac){return new Promise(function(_0x33ac39,_0x4840fa){logger[_0x3e9d('0x12')](util[_0x3e9d('0x25')]('Searching\x20contact\x20with\x20phone\x20%s',_0x1abdac[_0x3e9d('0x26')]));searchContact(_0x15ba00,_0x49048b,_0x3e9d('0x27'),_0x1abdac[_0x3e9d('0x26')])[_0x3e9d('0x18')](function(_0x49a79){if(_0x49a79){_0x1abdac[_0x3e9d('0x28')]=_0x49a79['id'];logger['info'](_0x3e9d('0x29'),_0x1abdac[_0x3e9d('0x28')]);return _0x33ac39(_0x1abdac);}searchContact(_0x15ba00,_0x49048b,_0x3e9d('0x2a'),_0x1abdac['contactNumber'])[_0x3e9d('0x18')](function(_0x4d58bf){if(_0x4d58bf){_0x1abdac[_0x3e9d('0x28')]=_0x4d58bf['id'];logger[_0x3e9d('0x12')](_0x3e9d('0x2b'),_0x1abdac[_0x3e9d('0x28')]);return _0x33ac39(_0x1abdac);}createEndUser(_0x1abdac,_0x212091,_0x49048b,_0x15ba00)[_0x3e9d('0x18')](function(_0x20163d){logger[_0x3e9d('0x12')]('Contact\x20created:',_0x20163d[_0x3e9d('0x28')]);return _0x33ac39(_0x20163d);});});})[_0x3e9d('0x15')](function(_0x1ddb7c){_0x4840fa(_0x1ddb7c);});});};}function createEndUser(_0x1a7adf,_0x554f54,_0x43fe84,_0x1bfcc4){return new Promise(function(_0x1202d8,_0x25f61d){var _0x427777=moment();var _0xb82cea={'method':_0x3e9d('0x2c'),'uri':_0x1bfcc4+_0x3e9d('0x2d'),'body':{'contact':{'last_name':_0x1a7adf[_0x3e9d('0x26')],'work_number':_0x1a7adf[_0x3e9d('0x26')],'mobile_number':_0x1a7adf[_0x3e9d('0x26')],'owner_id':_0x1a7adf[_0x3e9d('0x1d')],'created_at':_0x427777[_0x3e9d('0x25')](_0x3e9d('0x2e'))}},'json':!![]};_0xb82cea['headers']=_0x43fe84;logger[_0x3e9d('0x12')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0xb82cea)[_0x3e9d('0x18')](function(_0xdaa4fc){_0x1a7adf[_0x3e9d('0x28')]=_0xdaa4fc[_0x3e9d('0x2f')]['id'];_0x1202d8(_0x1a7adf);})[_0x3e9d('0x15')](function(_0x32f79e){logger['error']('['+[_0x554f54[_0x3e9d('0x20')]()]+']',_0x32f79e['message']);_0x25f61d(_0x32f79e[_0x3e9d('0x16')]);});});}function getTicket(_0x2797ac,_0x259c47,_0x2ef7d0,_0x1a0555,_0xb3185f){return function(_0x11c945){logger[_0x3e9d('0x12')]('Creating\x20new\x20task');return new Promise(function(_0x428882,_0x55d7fe){var _0x32d27f=moment();var _0x323287={'method':_0x3e9d('0x2c'),'uri':_0x2ef7d0+'/api/tasks','body':{'title':intUtil['getString'](_0x1a0555[_0x3e9d('0x30')],_0xb3185f,'\x20'),'description':intUtil[_0x3e9d('0x31')](_0x1a0555[_0x3e9d('0x32')],_0xb3185f,'\x0a'),'owner_id':_0x11c945[_0x3e9d('0x1d')],'creater_id':_0x11c945[_0x3e9d('0x13')],'targetable_id':_0x11c945[_0x3e9d('0x28')],'targetable_type':_0x3e9d('0x33'),'created_at':_0x32d27f[_0x3e9d('0x25')](_0x3e9d('0x2e')),'due_date':_0x32d27f[_0x3e9d('0x34')](0x1e,'m')[_0x3e9d('0x25')](_0x3e9d('0x2e'))},'json':!![]};_0x323287[_0x3e9d('0xd')]=_0x259c47;return rp(_0x323287)[_0x3e9d('0x18')](function(_0x4583a9){_0x11c945['ticketId']=_0x4583a9[_0x3e9d('0x35')]['id'];logger[_0x3e9d('0x12')](_0x3e9d('0x36'),_0x11c945[_0x3e9d('0x37')]);_0x428882(_0x11c945);})[_0x3e9d('0x15')](function(_0x4795e0){logger[_0x3e9d('0x1f')]('['+[_0x2797ac['toUpperCase']()]+']',_0x4795e0['message']);_0x55d7fe(_0x4795e0['message']);});});};}function emit(_0x18b601,_0xaf7686,_0x4c9a6c){var _0x10350c={'uri':_0x18b601+_0x3e9d('0x38')+_0x4c9a6c};io['to'](util[_0x3e9d('0x25')](_0x3e9d('0x39'),_0xaf7686))[_0x3e9d('0x3a')](_0x3e9d('0x3b'),_0x10350c);}exports['cs']=function(_0x1392fe,_0xc50083,_0x3b1db7,_0x1c02d7,_0x341112,_0x30ad6d,_0x53ce27,_0x1f5b84){var _0x180372={};var _0x3048ac={'Authorization':'Token\x20token='+_0x30ad6d[_0x3e9d('0x3c')]};_0x30ad6d[_0x3e9d('0x3d')]=intUtil[_0x3e9d('0x3e')](_0x30ad6d[_0x3e9d('0x3d')]);_0x30ad6d[_0x3e9d('0x3f')]=intUtil[_0x3e9d('0x3e')](_0x30ad6d[_0x3e9d('0x3f')]);var _0x196af8=_0x30ad6d[_0x3e9d('0x3d')];_0x180372[_0x3e9d('0x11')]=_0x30ad6d[_0x3e9d('0x40')];_0x180372[_0x3e9d('0x26')]=_0x1f5b84[_0x3e9d('0x41')]()===_0x3e9d('0x42')?_0xc50083['destcalleridnum']:_0xc50083[_0x3e9d('0x43')];_0x180372['callDirection']=_0x1f5b84===_0x3e9d('0x44')||_0x1f5b84===_0x3e9d('0x45')?_0x3e9d('0x44'):'outbound';if(_0x1c02d7){_0x180372[_0x3e9d('0x1a')]=_0x1c02d7['email'];}var _0x1ccc53=util[_0x3e9d('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x30ad6d[_0x3e9d('0x3f')],_0xc50083[_0x3e9d('0x46')],md5(_0xc50083['uniqueid']));if(_0x341112&&_0x341112[_0x3e9d('0x47')]){logger['info'](_0x3e9d('0x48'),_0x3e9d('0x49'));_0xc50083['recordingURL']=_0x1ccc53;}else if(_0x53ce27&&_0x53ce27[_0x3e9d('0x4a')]&&_0x53ce27[_0x3e9d('0x4a')]!==_0x3e9d('0x4b')){logger[_0x3e9d('0x12')]('[OUTBOUND]',_0x3e9d('0x49'));_0xc50083[_0x3e9d('0x4c')]=_0x1ccc53;}else{_0xc50083[_0x3e9d('0x4c')]='';}return getAdminId(_0x180372,_0x1f5b84,_0x3048ac,_0x196af8)['then'](getUser(_0x1f5b84,_0x3048ac,_0x196af8))['then'](getEndUser(_0x1f5b84,_0x3048ac,_0x196af8))[_0x3e9d('0x18')](getTicket(_0x1f5b84,_0x3048ac,_0x196af8,_0x3b1db7,_0xc50083))[_0x3e9d('0x18')](function(_0x4d994f){logger[_0x3e9d('0x12')](util[_0x3e9d('0x25')]('The\x20ticket\x20ID\x20is:\x20%s',_0x4d994f[_0x3e9d('0x37')]));if(_0x1f5b84!==_0x3e9d('0x45')){logger[_0x3e9d('0x12')]('['+[_0x1f5b84[_0x3e9d('0x20')]()]+']',_0x3e9d('0x4d'));emit(_0x196af8,_0x1c02d7[_0x3e9d('0x4e')],_0x4d994f['endUserId']);}})[_0x3e9d('0x15')](function(_0x324af6){logger[_0x3e9d('0x1f')]('['+[_0x1f5b84[_0x3e9d('0x20')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x3e9d('0x4f')](_0x324af6,{'showHidden':!![],'depth':null}));});};