Built motion from commit 994c64e1.|2.6.1
[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 _0x602a=[']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','userId','User\x20found:','Admin\x20selected','catch','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','getString','Subjects','Descriptions','add','ticketId','task','Task\x20created:','/contacts/','emit','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','adminEmail','toLowerCase','destcalleridnum','calleridnum','callDirection','unmanaged','queue','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0x602a,0x13e));var _0xa602=function(_0x48456a,_0x296843){_0x48456a=_0x48456a-0x0;var _0x2e6b02=_0x602a[_0x48456a];return _0x2e6b02;};'use strict';var _=require(_0xa602('0x0'));var rp=require('request-promise');var md5=require(_0xa602('0x1'));var util=require(_0xa602('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require('ioredis');var intUtil=require(_0xa602('0x3'));var config=require(_0xa602('0x4'));var logger=require(_0xa602('0x5'))('freshsales');config[_0xa602('0x6')]=_[_0xa602('0x7')](config[_0xa602('0x6')],{'host':_0xa602('0x8'),'port':0x18eb});var io=require(_0xa602('0x9'))(new Redis(config[_0xa602('0x6')]));function getAdminId(_0x2565af,_0x1ce49b,_0xea5fdc,_0x4b0d59){return new Promise(function(_0x37408c,_0x5f0004){var _0x6430c2=![];var _0x272787={'method':_0xa602('0xa'),'uri':_0x4b0d59+_0xa602('0xb'),'json':!![]};_0x272787[_0xa602('0xc')]=_0xea5fdc;logger[_0xa602('0xd')](_0xa602('0xe'));return rp(_0x272787)[_0xa602('0xf')](function(_0x25b978){if(_0x25b978){var _0xb313d8=_0x25b978[_0xa602('0x10')];var _0x28307d=null;for(_0x28307d=0x0;_0x28307d<_0xb313d8[_0xa602('0x11')];_0x28307d++){if(_0xb313d8[_0x28307d]['email']===_0x2565af['adminEmail']){_0x2565af['adminId']=_0xb313d8[_0x28307d]['id'];_0x6430c2=!![];}}if(_0x6430c2){logger[_0xa602('0xd')]('Admin\x20found:',_0x2565af[_0xa602('0x12')]);_0x37408c(_0x2565af);}else{_0x5f0004({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x5f0004({'statusCode':0x194,'message':_0xa602('0x13')});}})['catch'](function(_0x328bd6){logger[_0xa602('0x14')]('['+[_0x1ce49b[_0xa602('0x15')]()]+']',_0x328bd6[_0xa602('0x16')]);_0x5f0004(_0x328bd6);});});}function getUser(_0x6c679c,_0x53d6d2,_0x545f17){return function(_0x15a55b){return new Promise(function(_0x363854,_0x18ded4){var _0x3ec39f={'method':_0xa602('0xa'),'uri':_0x545f17+_0xa602('0xb'),'json':!![]};_0x3ec39f['headers']=_0x53d6d2;logger[_0xa602('0xd')](_0xa602('0x17'));return rp(_0x3ec39f)['then'](function(_0x57d10){if(_0x57d10){var _0x2dadf1=_0x57d10[_0xa602('0x10')];var _0x229d5=![];var _0x3552cb=null;if(_0x15a55b[_0xa602('0x18')]!==null){logger[_0xa602('0xd')](_0xa602('0x19'),_0x15a55b[_0xa602('0x18')]);_0x15a55b[_0xa602('0x1a')]=_0x15a55b[_0xa602('0x18')];for(_0x3552cb=0x0;_0x3552cb<_0x2dadf1[_0xa602('0x11')];_0x3552cb++){if(_0x2dadf1[_0x3552cb][_0xa602('0x1b')]===_0x15a55b[_0xa602('0x18')]){_0x229d5=!![];_0x15a55b[_0xa602('0x1c')]=_0x2dadf1[_0x3552cb]['id'];logger[_0xa602('0xd')](_0xa602('0x1d'),_0x15a55b[_0xa602('0x1c')]);}}}if(!_0x229d5){logger[_0xa602('0xd')](_0xa602('0x1e'));_0x15a55b[_0xa602('0x1a')]=_0x15a55b['adminEmail'];_0x15a55b['userId']=_0x15a55b[_0xa602('0x12')];_0x229d5=!![];}if(_0x229d5){_0x363854(_0x15a55b);}else{_0x18ded4({'statusCode':0x194,'message':_0xa602('0x13')});}}else{_0x18ded4({'statusCode':0x194,'message':_0xa602('0x13')});}})[_0xa602('0x1f')](function(_0x7c1097){logger[_0xa602('0x14')]('['+[_0x6c679c['toUpperCase']()]+']',_0x7c1097[_0xa602('0x16')]);_0x18ded4(_0x7c1097);});});};}function searchContact(_0x3a71bf,_0x1d45db,_0x42ff89,_0x4efb65){return new Promise(function(_0x3e0a66,_0x4a570d){var _0x2a01eb={'method':_0xa602('0xa'),'headers':_0x1d45db,'uri':_0x3a71bf+_0xa602('0x20')+_0x4efb65+_0xa602('0x21')+_0x42ff89+_0xa602('0x22'),'json':!![]};rp(_0x2a01eb)[_0xa602('0xf')](function(_0x4db588){var _0x405bc1=_[_0xa602('0x23')](_0x4db588['contacts'][_0xa602('0x24')],[_0x42ff89,_0x4efb65]);_0x3e0a66(_0x405bc1);})[_0xa602('0x1f')](function(_0x433531){_0x4a570d(_0x433531);});});}function getEndUser(_0x335ef6,_0x4da54d,_0xacc4d6){return function(_0x3ad0f1){return new Promise(function(_0x32d7cf,_0x40e204){logger[_0xa602('0xd')](util[_0xa602('0x25')](_0xa602('0x26'),_0x3ad0f1['contactNumber']));searchContact(_0xacc4d6,_0x4da54d,_0xa602('0x27'),_0x3ad0f1[_0xa602('0x28')])[_0xa602('0xf')](function(_0x43806e){if(_0x43806e){_0x3ad0f1[_0xa602('0x29')]=_0x43806e['id'];logger['info'](_0xa602('0x2a'),_0x3ad0f1[_0xa602('0x29')]);return _0x32d7cf(_0x3ad0f1);}searchContact(_0xacc4d6,_0x4da54d,'work_number',_0x3ad0f1[_0xa602('0x28')])[_0xa602('0xf')](function(_0x2c2bfd){if(_0x2c2bfd){_0x3ad0f1[_0xa602('0x29')]=_0x2c2bfd['id'];logger[_0xa602('0xd')]('Contact\x20found\x20work_number:',_0x3ad0f1[_0xa602('0x29')]);return _0x32d7cf(_0x3ad0f1);}createEndUser(_0x3ad0f1,_0x335ef6,_0x4da54d,_0xacc4d6)[_0xa602('0xf')](function(_0x148c2f){logger[_0xa602('0xd')](_0xa602('0x2b'),_0x148c2f[_0xa602('0x29')]);return _0x32d7cf(_0x148c2f);});});})[_0xa602('0x1f')](function(_0x2eaff0){_0x40e204(_0x2eaff0);});});};}function createEndUser(_0x262a3a,_0x42f7ed,_0x146d8a,_0x53cb07){return new Promise(function(_0x34dc4e,_0x6e4cd7){var _0x9d9070=moment();var _0x4d3168={'method':_0xa602('0x2c'),'uri':_0x53cb07+_0xa602('0x2d'),'body':{'contact':{'last_name':_0x262a3a['contactNumber'],'work_number':_0x262a3a[_0xa602('0x28')],'mobile_number':_0x262a3a[_0xa602('0x28')],'owner_id':_0x262a3a[_0xa602('0x1c')],'created_at':_0x9d9070[_0xa602('0x25')](_0xa602('0x2e'))}},'json':!![]};_0x4d3168[_0xa602('0xc')]=_0x146d8a;logger[_0xa602('0xd')](_0xa602('0x2f'));return rp(_0x4d3168)[_0xa602('0xf')](function(_0x258c9e){_0x262a3a[_0xa602('0x29')]=_0x258c9e['contact']['id'];_0x34dc4e(_0x262a3a);})[_0xa602('0x1f')](function(_0x450251){logger['error']('['+[_0x42f7ed['toUpperCase']()]+']',_0x450251[_0xa602('0x16')]);_0x6e4cd7(_0x450251['message']);});});}function getTicket(_0x4ee898,_0x20fd55,_0x34e539,_0x5112f9,_0x3f0cf0){return function(_0x4d76b4){logger[_0xa602('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x44c889,_0x3e3e5f){var _0x3dca3a=moment();var _0x22fabf={'method':_0xa602('0x2c'),'uri':_0x34e539+'/api/tasks','body':{'title':intUtil[_0xa602('0x30')](_0x5112f9[_0xa602('0x31')],_0x3f0cf0,'\x20'),'description':intUtil[_0xa602('0x30')](_0x5112f9[_0xa602('0x32')],_0x3f0cf0,'\x0a'),'owner_id':_0x4d76b4['userId'],'creater_id':_0x4d76b4['adminId'],'targetable_id':_0x4d76b4[_0xa602('0x29')],'targetable_type':'Contact','created_at':_0x3dca3a[_0xa602('0x25')](_0xa602('0x2e')),'due_date':_0x3dca3a[_0xa602('0x33')](0x1e,'m')[_0xa602('0x25')](_0xa602('0x2e'))},'json':!![]};_0x22fabf[_0xa602('0xc')]=_0x20fd55;return rp(_0x22fabf)[_0xa602('0xf')](function(_0x2a4a45){_0x4d76b4[_0xa602('0x34')]=_0x2a4a45[_0xa602('0x35')]['id'];logger[_0xa602('0xd')](_0xa602('0x36'),_0x4d76b4[_0xa602('0x34')]);_0x44c889(_0x4d76b4);})[_0xa602('0x1f')](function(_0x5b7b84){logger['error']('['+[_0x4ee898[_0xa602('0x15')]()]+']',_0x5b7b84[_0xa602('0x16')]);_0x3e3e5f(_0x5b7b84['message']);});});};}function emit(_0x5af8a2,_0x23251c,_0x31c986){var _0x2b8850={'uri':_0x5af8a2+_0xa602('0x37')+_0x31c986};io['to'](util[_0xa602('0x25')]('user:%s',_0x23251c))[_0xa602('0x38')]('trigger:browser:url',_0x2b8850);}exports['cs']=function(_0xfe6df4,_0x18d132,_0xc20a5a,_0x35aefb,_0x3449ea,_0x127221,_0x4e93d7,_0x526a6c){var _0x149d69={};var _0x7a5aeb={'Authorization':_0xa602('0x39')+_0x127221['apiKey']};_0x127221[_0xa602('0x3a')]=intUtil[_0xa602('0x3b')](_0x127221[_0xa602('0x3a')]);_0x127221[_0xa602('0x3c')]=intUtil[_0xa602('0x3b')](_0x127221[_0xa602('0x3c')]);var _0x3b63df=_0x127221['remoteUri'];_0x149d69[_0xa602('0x3d')]=_0x127221['username'];_0x149d69[_0xa602('0x28')]=_0x526a6c[_0xa602('0x3e')]()==='outbound'?_0x18d132[_0xa602('0x3f')]:_0x18d132[_0xa602('0x40')];_0x149d69[_0xa602('0x41')]=_0x526a6c==='queue'||_0x526a6c===_0xa602('0x42')?_0xa602('0x43'):'outbound';if(_0x35aefb){_0x149d69[_0xa602('0x18')]=_0x35aefb[_0xa602('0x1b')];}var _0x2b716f=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x127221[_0xa602('0x3c')],_0x18d132[_0xa602('0x44')],md5(_0x18d132['uniqueid']));if(_0x3449ea&&_0x3449ea['monitor_format']){logger[_0xa602('0xd')](_0xa602('0x45'),'Recording\x20is\x20enabled!');_0x18d132[_0xa602('0x46')]=_0x2b716f;}else if(_0x4e93d7&&_0x4e93d7['recordingFormat']&&_0x4e93d7[_0xa602('0x47')]!==_0xa602('0x48')){logger[_0xa602('0xd')]('[OUTBOUND]',_0xa602('0x49'));_0x18d132[_0xa602('0x46')]=_0x2b716f;}else{_0x18d132[_0xa602('0x46')]='';}return getAdminId(_0x149d69,_0x526a6c,_0x7a5aeb,_0x3b63df)[_0xa602('0xf')](getUser(_0x526a6c,_0x7a5aeb,_0x3b63df))[_0xa602('0xf')](getEndUser(_0x526a6c,_0x7a5aeb,_0x3b63df))['then'](getTicket(_0x526a6c,_0x7a5aeb,_0x3b63df,_0xc20a5a,_0x18d132))[_0xa602('0xf')](function(_0x5c7190){logger['info'](util[_0xa602('0x25')](_0xa602('0x4a'),_0x5c7190[_0xa602('0x34')]));if(_0x526a6c!==_0xa602('0x42')){logger[_0xa602('0xd')]('['+[_0x526a6c['toUpperCase']()]+']',_0xa602('0x4b'));emit(_0x3b63df,_0x35aefb[_0xa602('0x4c')],_0x5c7190[_0xa602('0x29')]);}})['catch'](function(_0x35c4d6){logger['error']('['+[_0x526a6c['toUpperCase']()]+_0xa602('0x4d'),util[_0xa602('0x4e')](_0x35c4d6,{'showHidden':!![],'depth':null}));});};