e40f5cc16eb20fdb2b1059a7ca10d5c54ab405f1
[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 _0x17b7=['apiKey','remoteUri','stripTrailingSlash','serverUrl','username','destcalleridnum','queue','outbound','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/logger','redis','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','message','/api/lookup?q=','&f=','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','format','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','task','Task\x20created:','emit','Token\x20token='];(function(_0x17bf4b,_0x4252b2){var _0x3dd5b0=function(_0x17a401){while(--_0x17a401){_0x17bf4b['push'](_0x17bf4b['shift']());}};_0x3dd5b0(++_0x4252b2);}(_0x17b7,0x142));var _0x717b=function(_0x3b94a5,_0x31411d){_0x3b94a5=_0x3b94a5-0x0;var _0x5c81f7=_0x17b7[_0x3b94a5];return _0x5c81f7;};'use strict';var _=require(_0x717b('0x0'));var rp=require(_0x717b('0x1'));var md5=require(_0x717b('0x2'));var util=require(_0x717b('0x3'));var moment=require(_0x717b('0x4'));var Promise=require(_0x717b('0x5'));var Redis=require(_0x717b('0x6'));var intUtil=require(_0x717b('0x7'));var config=require('../../../../config/environment');var logger=require(_0x717b('0x8'))('freshsales');config[_0x717b('0x9')]=_['defaults'](config[_0x717b('0x9')],{'host':_0x717b('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x717b('0x9')]));function getAdminId(_0x58daed,_0x37ec1d,_0x4dae53,_0x2332bb){return new Promise(function(_0x3267e2,_0x21d2fe){var _0x496a3c=![];var _0xdefd6={'method':_0x717b('0xb'),'uri':_0x2332bb+_0x717b('0xc'),'json':!![]};_0xdefd6[_0x717b('0xd')]=_0x4dae53;logger[_0x717b('0xe')](_0x717b('0xf'));return rp(_0xdefd6)[_0x717b('0x10')](function(_0x51ea61){if(_0x51ea61){var _0xaa3475=_0x51ea61[_0x717b('0x11')];var _0x3fe4de=null;for(_0x3fe4de=0x0;_0x3fe4de<_0xaa3475[_0x717b('0x12')];_0x3fe4de++){if(_0xaa3475[_0x3fe4de][_0x717b('0x13')]===_0x58daed['adminEmail']){_0x58daed[_0x717b('0x14')]=_0xaa3475[_0x3fe4de]['id'];_0x496a3c=!![];}}if(_0x496a3c){logger[_0x717b('0xe')](_0x717b('0x15'),_0x58daed[_0x717b('0x14')]);_0x3267e2(_0x58daed);}else{_0x21d2fe({'statusCode':0x194,'message':_0x717b('0x16')});}}else{_0x21d2fe({'statusCode':0x194,'message':_0x717b('0x16')});}})[_0x717b('0x17')](function(_0xb87d01){logger[_0x717b('0x18')]('['+[_0x37ec1d[_0x717b('0x19')]()]+']',_0xb87d01['message']);_0x21d2fe(_0xb87d01);});});}function getUser(_0x259d1d,_0xe0ce4,_0x49cb01){return function(_0x4e505d){return new Promise(function(_0x4a451a,_0x46cc1a){var _0x48f509={'method':_0x717b('0xb'),'uri':_0x49cb01+'/api/selector/owners','json':!![]};_0x48f509[_0x717b('0xd')]=_0xe0ce4;logger['info']('Getting\x20user\x20list');return rp(_0x48f509)['then'](function(_0x1be327){if(_0x1be327){var _0x18f394=_0x1be327[_0x717b('0x11')];var _0x112a7d=![];var _0x16d557=null;if(_0x4e505d[_0x717b('0x1a')]!==null){logger[_0x717b('0xe')](_0x717b('0x1b'),_0x4e505d[_0x717b('0x1a')]);_0x4e505d[_0x717b('0x1c')]=_0x4e505d[_0x717b('0x1a')];for(_0x16d557=0x0;_0x16d557<_0x18f394[_0x717b('0x12')];_0x16d557++){if(_0x18f394[_0x16d557][_0x717b('0x13')]===_0x4e505d[_0x717b('0x1a')]){_0x112a7d=!![];_0x4e505d[_0x717b('0x1d')]=_0x18f394[_0x16d557]['id'];logger[_0x717b('0xe')](_0x717b('0x1e'),_0x4e505d[_0x717b('0x1d')]);}}}if(!_0x112a7d){logger[_0x717b('0xe')]('Admin\x20selected');_0x4e505d[_0x717b('0x1c')]=_0x4e505d['adminEmail'];_0x4e505d['userId']=_0x4e505d[_0x717b('0x14')];_0x112a7d=!![];}if(_0x112a7d){_0x4a451a(_0x4e505d);}else{_0x46cc1a({'statusCode':0x194,'message':_0x717b('0x16')});}}else{_0x46cc1a({'statusCode':0x194,'message':_0x717b('0x16')});}})['catch'](function(_0x47098f){logger[_0x717b('0x18')]('['+[_0x259d1d[_0x717b('0x19')]()]+']',_0x47098f[_0x717b('0x1f')]);_0x46cc1a(_0x47098f);});});};}function searchContact(_0xafe867,_0x1790c8,_0x55d842,_0x1d176d){return new Promise(function(_0x128088,_0x2dfb40){var _0x2d0031={'method':_0x717b('0xb'),'headers':_0x1790c8,'uri':_0xafe867+_0x717b('0x20')+_0x1d176d+_0x717b('0x21')+_0x55d842+_0x717b('0x22'),'json':!![]};rp(_0x2d0031)[_0x717b('0x10')](function(_0x288b1a){var _0x46b916=_[_0x717b('0x23')](_0x288b1a[_0x717b('0x24')]['contacts'],[_0x55d842,_0x1d176d]);_0x128088(_0x46b916);})['catch'](function(_0x3049b5){_0x2dfb40(_0x3049b5);});});}function getEndUser(_0x347233,_0x38777b,_0x250b14){return function(_0x33f9af){return new Promise(function(_0x9c369c,_0x55464a){logger[_0x717b('0xe')](util['format'](_0x717b('0x25'),_0x33f9af[_0x717b('0x26')]));searchContact(_0x250b14,_0x38777b,_0x717b('0x27'),_0x33f9af['contactNumber'])[_0x717b('0x10')](function(_0xc0a819){if(_0xc0a819){_0x33f9af[_0x717b('0x28')]=_0xc0a819['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x33f9af[_0x717b('0x28')]);return _0x9c369c(_0x33f9af);}searchContact(_0x250b14,_0x38777b,_0x717b('0x29'),_0x33f9af[_0x717b('0x26')])[_0x717b('0x10')](function(_0x35a8e5){if(_0x35a8e5){_0x33f9af[_0x717b('0x28')]=_0x35a8e5['id'];logger[_0x717b('0xe')](_0x717b('0x2a'),_0x33f9af[_0x717b('0x28')]);return _0x9c369c(_0x33f9af);}createEndUser(_0x33f9af,_0x347233,_0x38777b,_0x250b14)[_0x717b('0x10')](function(_0x3e6359){logger[_0x717b('0xe')]('Contact\x20created:',_0x3e6359[_0x717b('0x28')]);return _0x9c369c(_0x3e6359);});});})[_0x717b('0x17')](function(_0x4d654d){_0x55464a(_0x4d654d);});});};}function createEndUser(_0x178178,_0x4c52d2,_0x4cceb6,_0x34d8de){return new Promise(function(_0x3e6299,_0x363df8){var _0x589ccf=moment();var _0x3fb3c8={'method':_0x717b('0x2b'),'uri':_0x34d8de+_0x717b('0x2c'),'body':{'contact':{'last_name':_0x178178[_0x717b('0x26')],'work_number':_0x178178[_0x717b('0x26')],'mobile_number':_0x178178[_0x717b('0x26')],'owner_id':_0x178178[_0x717b('0x1d')],'created_at':_0x589ccf[_0x717b('0x2d')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x3fb3c8['headers']=_0x4cceb6;logger[_0x717b('0xe')](_0x717b('0x2e'));return rp(_0x3fb3c8)[_0x717b('0x10')](function(_0x1dd17a){_0x178178[_0x717b('0x28')]=_0x1dd17a[_0x717b('0x2f')]['id'];_0x3e6299(_0x178178);})[_0x717b('0x17')](function(_0x226e60){logger[_0x717b('0x18')]('['+[_0x4c52d2[_0x717b('0x19')]()]+']',_0x226e60[_0x717b('0x1f')]);_0x363df8(_0x226e60[_0x717b('0x1f')]);});});}function getTicket(_0x1120ee,_0x198907,_0x2c68ec,_0x17b2ed,_0x15a1ba){return function(_0x8b30ce){logger[_0x717b('0xe')](_0x717b('0x30'));return new Promise(function(_0x17a469,_0x4cb700){var _0x457178=moment();var _0x496fe6={'method':_0x717b('0x2b'),'uri':_0x2c68ec+'/api/tasks','body':{'title':intUtil['getString'](_0x17b2ed['Subjects'],_0x15a1ba,'\x20'),'description':intUtil[_0x717b('0x31')](_0x17b2ed['Descriptions'],_0x15a1ba,'\x0a'),'owner_id':_0x8b30ce[_0x717b('0x1d')],'creater_id':_0x8b30ce[_0x717b('0x14')],'targetable_id':_0x8b30ce[_0x717b('0x28')],'targetable_type':_0x717b('0x32'),'created_at':_0x457178[_0x717b('0x2d')](_0x717b('0x33')),'due_date':_0x457178[_0x717b('0x34')](0x1e,'m')[_0x717b('0x2d')](_0x717b('0x33'))},'json':!![]};_0x496fe6[_0x717b('0xd')]=_0x198907;return rp(_0x496fe6)[_0x717b('0x10')](function(_0x598405){_0x8b30ce[_0x717b('0x35')]=_0x598405[_0x717b('0x36')]['id'];logger[_0x717b('0xe')](_0x717b('0x37'),_0x8b30ce[_0x717b('0x35')]);_0x17a469(_0x8b30ce);})[_0x717b('0x17')](function(_0x3724e7){logger[_0x717b('0x18')]('['+[_0x1120ee[_0x717b('0x19')]()]+']',_0x3724e7['message']);_0x4cb700(_0x3724e7[_0x717b('0x1f')]);});});};}function emit(_0x793846,_0x45fc15,_0x26a332){var _0x52f1e9={'uri':_0x793846+'/contacts/'+_0x26a332};io['to'](util[_0x717b('0x2d')]('user:%s',_0x45fc15))[_0x717b('0x38')]('trigger:browser:url',_0x52f1e9);}exports['cs']=function(_0x1ce728,_0x17baf2,_0x17cd43,_0x4b4b97,_0x2c5b14,_0x406a6b,_0x5fe31b,_0x13a1a9){var _0x25b6b4={};var _0x12eea9={'Authorization':_0x717b('0x39')+_0x406a6b[_0x717b('0x3a')]};_0x406a6b[_0x717b('0x3b')]=intUtil[_0x717b('0x3c')](_0x406a6b[_0x717b('0x3b')]);_0x406a6b[_0x717b('0x3d')]=intUtil['stripTrailingSlash'](_0x406a6b['serverUrl']);var _0x7c2c0f=_0x406a6b[_0x717b('0x3b')];_0x25b6b4['adminEmail']=_0x406a6b[_0x717b('0x3e')];_0x25b6b4['contactNumber']=_0x13a1a9['toLowerCase']()==='outbound'?_0x17baf2[_0x717b('0x3f')]:_0x17baf2['calleridnum'];_0x25b6b4['callDirection']=_0x13a1a9==='queue'||_0x13a1a9==='unmanaged'?_0x717b('0x40'):_0x717b('0x41');if(_0x4b4b97){_0x25b6b4['agentEmail']=_0x4b4b97[_0x717b('0x13')];}var _0x3a7edc=util[_0x717b('0x2d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x406a6b[_0x717b('0x3d')],_0x17baf2[_0x717b('0x42')],md5(_0x17baf2[_0x717b('0x42')]));if(_0x2c5b14&&_0x2c5b14[_0x717b('0x43')]){logger[_0x717b('0xe')]('[QUEUE]',_0x717b('0x44'));_0x17baf2[_0x717b('0x45')]=_0x3a7edc;}else if(_0x5fe31b&&_0x5fe31b[_0x717b('0x46')]&&_0x5fe31b[_0x717b('0x46')]!==_0x717b('0x47')){logger[_0x717b('0xe')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x17baf2[_0x717b('0x45')]=_0x3a7edc;}else{_0x17baf2['recordingURL']='';}return getAdminId(_0x25b6b4,_0x13a1a9,_0x12eea9,_0x7c2c0f)['then'](getUser(_0x13a1a9,_0x12eea9,_0x7c2c0f))['then'](getEndUser(_0x13a1a9,_0x12eea9,_0x7c2c0f))[_0x717b('0x10')](getTicket(_0x13a1a9,_0x12eea9,_0x7c2c0f,_0x17cd43,_0x17baf2))['then'](function(_0x154364){logger['info'](util[_0x717b('0x2d')](_0x717b('0x48'),_0x154364['ticketId']));if(_0x13a1a9!==_0x717b('0x49')){logger['info']('['+[_0x13a1a9['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x7c2c0f,_0x4b4b97[_0x717b('0x4a')],_0x154364[_0x717b('0x28')]);}})[_0x717b('0x17')](function(_0x4d1769){logger[_0x717b('0x18')]('['+[_0x13a1a9[_0x717b('0x19')]()]+_0x717b('0x4b'),util['inspect'](_0x4d1769,{'showHidden':!![],'depth':null}));});};