Built motion from commit 953226e6.|2.6.32
[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 _0x53ec=['getString','YYYY-MM-DDTHH:mm:ss','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','stripTrailingSlash','remoteUri','serverUrl','username','outbound','calleridnum','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','../../../../config/logger','redis','localhost','socket.io-emitter','GET','/api/selector/owners','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','message','headers','info','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','Admin\x20selected','toUpperCase','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','error'];(function(_0x338338,_0x782573){var _0x3cf852=function(_0x3016d8){while(--_0x3016d8){_0x338338['push'](_0x338338['shift']());}};_0x3cf852(++_0x782573);}(_0x53ec,0x114));var _0xc53e=function(_0x4f345d,_0x22f2ea){_0x4f345d=_0x4f345d-0x0;var _0x4e75d5=_0x53ec[_0x4f345d];return _0x4e75d5;};'use strict';var _=require(_0xc53e('0x0'));var rp=require(_0xc53e('0x1'));var md5=require(_0xc53e('0x2'));var util=require(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var Promise=require(_0xc53e('0x5'));var Redis=require(_0xc53e('0x6'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xc53e('0x7'))('freshsales');config['redis']=_['defaults'](config[_0xc53e('0x8')],{'host':_0xc53e('0x9'),'port':0x18eb});var io=require(_0xc53e('0xa'))(new Redis(config['redis']));function getAdminId(_0x41e48d,_0x3d6478,_0x4ca215,_0x2f8cce){return new Promise(function(_0x52789c,_0x1a5c46){var _0x54ccf7=![];var _0x5f301d={'method':_0xc53e('0xb'),'uri':_0x2f8cce+_0xc53e('0xc'),'json':!![]};_0x5f301d['headers']=_0x4ca215;logger['info'](_0xc53e('0xd'));return rp(_0x5f301d)[_0xc53e('0xe')](function(_0xc2f096){if(_0xc2f096){var _0x4481a9=_0xc2f096[_0xc53e('0xf')];var _0x20cc21=null;for(_0x20cc21=0x0;_0x20cc21<_0x4481a9[_0xc53e('0x10')];_0x20cc21++){if(_0x4481a9[_0x20cc21][_0xc53e('0x11')]===_0x41e48d[_0xc53e('0x12')]){_0x41e48d[_0xc53e('0x13')]=_0x4481a9[_0x20cc21]['id'];_0x54ccf7=!![];}}if(_0x54ccf7){logger['info'](_0xc53e('0x14'),_0x41e48d[_0xc53e('0x13')]);_0x52789c(_0x41e48d);}else{_0x1a5c46({'statusCode':0x194,'message':_0xc53e('0x15')});}}else{_0x1a5c46({'statusCode':0x194,'message':_0xc53e('0x15')});}})[_0xc53e('0x16')](function(_0x4ad757){logger['error']('['+[_0x3d6478['toUpperCase']()]+']',_0x4ad757[_0xc53e('0x17')]);_0x1a5c46(_0x4ad757);});});}function getUser(_0x34f0de,_0x2df579,_0x14831b){return function(_0x3bc033){return new Promise(function(_0x2a82c4,_0x5b68d5){var _0x15797a={'method':_0xc53e('0xb'),'uri':_0x14831b+_0xc53e('0xc'),'json':!![]};_0x15797a[_0xc53e('0x18')]=_0x2df579;logger[_0xc53e('0x19')](_0xc53e('0x1a'));return rp(_0x15797a)['then'](function(_0x24b93b){if(_0x24b93b){var _0x269825=_0x24b93b[_0xc53e('0xf')];var _0x29a7a6=![];var _0x13dac1=null;if(_0x3bc033['agentEmail']!==null){logger[_0xc53e('0x19')](_0xc53e('0x1b'),_0x3bc033[_0xc53e('0x1c')]);_0x3bc033[_0xc53e('0x1d')]=_0x3bc033['agentEmail'];for(_0x13dac1=0x0;_0x13dac1<_0x269825['length'];_0x13dac1++){if(_0x269825[_0x13dac1][_0xc53e('0x11')]===_0x3bc033[_0xc53e('0x1c')]){_0x29a7a6=!![];_0x3bc033[_0xc53e('0x1e')]=_0x269825[_0x13dac1]['id'];logger[_0xc53e('0x19')]('User\x20found:',_0x3bc033[_0xc53e('0x1e')]);}}}if(!_0x29a7a6){logger[_0xc53e('0x19')](_0xc53e('0x1f'));_0x3bc033[_0xc53e('0x1d')]=_0x3bc033['adminEmail'];_0x3bc033[_0xc53e('0x1e')]=_0x3bc033[_0xc53e('0x13')];_0x29a7a6=!![];}if(_0x29a7a6){_0x2a82c4(_0x3bc033);}else{_0x5b68d5({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x5b68d5({'statusCode':0x194,'message':_0xc53e('0x15')});}})[_0xc53e('0x16')](function(_0x28ca1b){logger['error']('['+[_0x34f0de[_0xc53e('0x20')]()]+']',_0x28ca1b['message']);_0x5b68d5(_0x28ca1b);});});};}function searchContact(_0x8f5f20,_0x5e3dff,_0x32ab96,_0x419e5d){return new Promise(function(_0x1fac42,_0x580ad1){var _0x320b46={'method':'GET','headers':_0x5e3dff,'uri':_0x8f5f20+_0xc53e('0x21')+_0x419e5d+_0xc53e('0x22')+_0x32ab96+_0xc53e('0x23'),'json':!![]};rp(_0x320b46)[_0xc53e('0xe')](function(_0x12acec){var _0x59ae9e=_[_0xc53e('0x24')](_0x12acec[_0xc53e('0x25')][_0xc53e('0x25')],[_0x32ab96,_0x419e5d]);_0x1fac42(_0x59ae9e);})[_0xc53e('0x16')](function(_0x45d631){_0x580ad1(_0x45d631);});});}function getEndUser(_0x2a9d44,_0x125e08,_0x557d20){return function(_0x30967b){return new Promise(function(_0x5b3c84,_0x49226c){logger[_0xc53e('0x19')](util[_0xc53e('0x26')](_0xc53e('0x27'),_0x30967b['contactNumber']));searchContact(_0x557d20,_0x125e08,_0xc53e('0x28'),_0x30967b[_0xc53e('0x29')])['then'](function(_0x4d1483){if(_0x4d1483){_0x30967b['endUserId']=_0x4d1483['id'];logger['info'](_0xc53e('0x2a'),_0x30967b[_0xc53e('0x2b')]);return _0x5b3c84(_0x30967b);}searchContact(_0x557d20,_0x125e08,_0xc53e('0x2c'),_0x30967b[_0xc53e('0x29')])[_0xc53e('0xe')](function(_0x5c25ff){if(_0x5c25ff){_0x30967b[_0xc53e('0x2b')]=_0x5c25ff['id'];logger['info'](_0xc53e('0x2d'),_0x30967b['endUserId']);return _0x5b3c84(_0x30967b);}createEndUser(_0x30967b,_0x2a9d44,_0x125e08,_0x557d20)[_0xc53e('0xe')](function(_0x356a5d){logger[_0xc53e('0x19')](_0xc53e('0x2e'),_0x356a5d[_0xc53e('0x2b')]);return _0x5b3c84(_0x356a5d);});});})['catch'](function(_0x5f55e2){_0x49226c(_0x5f55e2);});});};}function createEndUser(_0x57e8a3,_0x4668b3,_0x386591,_0x2e7969){return new Promise(function(_0x5f3155,_0x46c17b){var _0x54a9c9=moment();var _0x302e6a={'method':_0xc53e('0x2f'),'uri':_0x2e7969+_0xc53e('0x30'),'body':{'contact':{'last_name':_0x57e8a3['contactNumber'],'work_number':_0x57e8a3['contactNumber'],'mobile_number':_0x57e8a3[_0xc53e('0x29')],'owner_id':_0x57e8a3['userId'],'created_at':_0x54a9c9['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x302e6a[_0xc53e('0x18')]=_0x386591;logger[_0xc53e('0x19')](_0xc53e('0x31'));return rp(_0x302e6a)['then'](function(_0x1ada4a){_0x57e8a3[_0xc53e('0x2b')]=_0x1ada4a[_0xc53e('0x32')]['id'];_0x5f3155(_0x57e8a3);})[_0xc53e('0x16')](function(_0x1d018b){logger[_0xc53e('0x33')]('['+[_0x4668b3[_0xc53e('0x20')]()]+']',_0x1d018b[_0xc53e('0x17')]);_0x46c17b(_0x1d018b[_0xc53e('0x17')]);});});}function getTicket(_0x143493,_0x464894,_0x513518,_0x153a65,_0x4f4466){return function(_0x42d13f){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x529c82,_0x1d5943){var _0x190649=moment();var _0x129f56={'method':_0xc53e('0x2f'),'uri':_0x513518+'/api/tasks','body':{'title':intUtil[_0xc53e('0x34')](_0x153a65['Subjects'],_0x4f4466,'\x20'),'description':intUtil['getString'](_0x153a65['Descriptions'],_0x4f4466,'\x0a'),'owner_id':_0x42d13f[_0xc53e('0x1e')],'creater_id':_0x42d13f[_0xc53e('0x13')],'targetable_id':_0x42d13f[_0xc53e('0x2b')],'targetable_type':'Contact','created_at':_0x190649[_0xc53e('0x26')](_0xc53e('0x35')),'due_date':_0x190649[_0xc53e('0x36')](0x1e,'m')['format'](_0xc53e('0x35'))},'json':!![]};_0x129f56[_0xc53e('0x18')]=_0x464894;return rp(_0x129f56)[_0xc53e('0xe')](function(_0xbad3db){_0x42d13f[_0xc53e('0x37')]=_0xbad3db['task']['id'];logger[_0xc53e('0x19')](_0xc53e('0x38'),_0x42d13f[_0xc53e('0x37')]);_0x529c82(_0x42d13f);})['catch'](function(_0x1e58a8){logger[_0xc53e('0x33')]('['+[_0x143493['toUpperCase']()]+']',_0x1e58a8[_0xc53e('0x17')]);_0x1d5943(_0x1e58a8[_0xc53e('0x17')]);});});};}function emit(_0x59813,_0x5d5c3e,_0x435660){var _0x390b96={'uri':_0x59813+_0xc53e('0x39')+_0x435660};io['to'](util[_0xc53e('0x26')](_0xc53e('0x3a'),_0x5d5c3e))[_0xc53e('0x3b')](_0xc53e('0x3c'),_0x390b96);}exports['cs']=function(_0x311e7d,_0x208d18,_0x195e11,_0x24b155,_0x44ead,_0xa469d6,_0x53178d,_0x5207c0){var _0x4f6123={};var _0x1b953e={'Authorization':_0xc53e('0x3d')+_0xa469d6['apiKey']};_0xa469d6['remoteUri']=intUtil[_0xc53e('0x3e')](_0xa469d6[_0xc53e('0x3f')]);_0xa469d6[_0xc53e('0x40')]=intUtil['stripTrailingSlash'](_0xa469d6[_0xc53e('0x40')]);var _0x4c778e=_0xa469d6[_0xc53e('0x3f')];_0x4f6123[_0xc53e('0x12')]=_0xa469d6[_0xc53e('0x41')];_0x4f6123[_0xc53e('0x29')]=_0x5207c0['toLowerCase']()===_0xc53e('0x42')?_0x208d18['destcalleridnum']:_0x208d18[_0xc53e('0x43')];_0x4f6123['callDirection']=_0x5207c0==='queue'||_0x5207c0==='unmanaged'?_0xc53e('0x44'):_0xc53e('0x42');if(_0x24b155){_0x4f6123['agentEmail']=_0x24b155[_0xc53e('0x11')];}var _0x456493=util[_0xc53e('0x26')](_0xc53e('0x45'),_0xa469d6['serverUrl'],_0x208d18['uniqueid'],md5(_0x208d18[_0xc53e('0x46')]));if(_0x44ead&&_0x44ead[_0xc53e('0x47')]){logger[_0xc53e('0x19')]('[QUEUE]',_0xc53e('0x48'));_0x208d18[_0xc53e('0x49')]=_0x456493;}else if(_0x53178d&&_0x53178d[_0xc53e('0x4a')]&&_0x53178d[_0xc53e('0x4a')]!=='none'){logger[_0xc53e('0x19')](_0xc53e('0x4b'),_0xc53e('0x48'));_0x208d18[_0xc53e('0x49')]=_0x456493;}else{_0x208d18[_0xc53e('0x49')]='';}return getAdminId(_0x4f6123,_0x5207c0,_0x1b953e,_0x4c778e)[_0xc53e('0xe')](getUser(_0x5207c0,_0x1b953e,_0x4c778e))[_0xc53e('0xe')](getEndUser(_0x5207c0,_0x1b953e,_0x4c778e))[_0xc53e('0xe')](getTicket(_0x5207c0,_0x1b953e,_0x4c778e,_0x195e11,_0x208d18))[_0xc53e('0xe')](function(_0x2c335d){logger[_0xc53e('0x19')](util[_0xc53e('0x26')](_0xc53e('0x4c'),_0x2c335d['ticketId']));if(_0x5207c0!==_0xc53e('0x4d')){logger['info']('['+[_0x5207c0[_0xc53e('0x20')]()]+']',_0xc53e('0x4e'));emit(_0x4c778e,_0x24b155[_0xc53e('0x4f')],_0x2c335d['endUserId']);}})['catch'](function(_0x424041){logger[_0xc53e('0x33')]('['+[_0x5207c0[_0xc53e('0x20')]()]+_0xc53e('0x50'),util[_0xc53e('0x51')](_0x424041,{'showHidden':!![],'depth':null}));});};