0169f7c5ca55cceb047d7ac35d138e0fa2eea751
[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 _0xeefe=['util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','GET','headers','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','catch','/api/lookup?q=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','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','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','ticketId','task','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','md5'];(function(_0x5d07fc,_0x5dbd72){var _0x32a519=function(_0x55c421){while(--_0x55c421){_0x5d07fc['push'](_0x5d07fc['shift']());}};_0x32a519(++_0x5dbd72);}(_0xeefe,0xab));var _0xeeef=function(_0x12edf4,_0x27b6af){_0x12edf4=_0x12edf4-0x0;var _0x3ed39d=_0xeefe[_0x12edf4];return _0x3ed39d;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xeeef('0x0'));var util=require(_0xeeef('0x1'));var moment=require(_0xeeef('0x2'));var Promise=require(_0xeeef('0x3'));var Redis=require('ioredis');var intUtil=require(_0xeeef('0x4'));var config=require(_0xeeef('0x5'));var logger=require(_0xeeef('0x6'))('freshsales');config[_0xeeef('0x7')]=_[_0xeeef('0x8')](config[_0xeeef('0x7')],{'host':_0xeeef('0x9'),'port':0x18eb});var io=require(_0xeeef('0xa'))(new Redis(config[_0xeeef('0x7')]));function getAdminId(_0x4673b7,_0xa28b41,_0x27ed49,_0x3129a9){return new Promise(function(_0x114571,_0x42a186){var _0x28e6fc=![];var _0x57b263={'method':'GET','uri':_0x3129a9+_0xeeef('0xb'),'json':!![]};_0x57b263['headers']=_0x27ed49;logger[_0xeeef('0xc')](_0xeeef('0xd'));return rp(_0x57b263)[_0xeeef('0xe')](function(_0x1ad0fb){if(_0x1ad0fb){var _0x3d0baf=_0x1ad0fb[_0xeeef('0xf')];var _0xbb5d37=null;for(_0xbb5d37=0x0;_0xbb5d37<_0x3d0baf[_0xeeef('0x10')];_0xbb5d37++){if(_0x3d0baf[_0xbb5d37][_0xeeef('0x11')]===_0x4673b7[_0xeeef('0x12')]){_0x4673b7[_0xeeef('0x13')]=_0x3d0baf[_0xbb5d37]['id'];_0x28e6fc=!![];}}if(_0x28e6fc){logger['info'](_0xeeef('0x14'),_0x4673b7['adminId']);_0x114571(_0x4673b7);}else{_0x42a186({'statusCode':0x194,'message':_0xeeef('0x15')});}}else{_0x42a186({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x4d0f88){logger[_0xeeef('0x16')]('['+[_0xa28b41[_0xeeef('0x17')]()]+']',_0x4d0f88[_0xeeef('0x18')]);_0x42a186(_0x4d0f88);});});}function getUser(_0x55d5ca,_0x4df490,_0x284cc7){return function(_0x349226){return new Promise(function(_0x3a7c21,_0x3ac426){var _0x117925={'method':_0xeeef('0x19'),'uri':_0x284cc7+_0xeeef('0xb'),'json':!![]};_0x117925[_0xeeef('0x1a')]=_0x4df490;logger['info']('Getting\x20user\x20list');return rp(_0x117925)[_0xeeef('0xe')](function(_0x4e430d){if(_0x4e430d){var _0x1edb3e=_0x4e430d[_0xeeef('0xf')];var _0x4ac682=![];var _0xaaff1c=null;if(_0x349226[_0xeeef('0x1b')]!==null){logger['info'](_0xeeef('0x1c'),_0x349226['agentEmail']);_0x349226['userEmail']=_0x349226['agentEmail'];for(_0xaaff1c=0x0;_0xaaff1c<_0x1edb3e[_0xeeef('0x10')];_0xaaff1c++){if(_0x1edb3e[_0xaaff1c][_0xeeef('0x11')]===_0x349226[_0xeeef('0x1b')]){_0x4ac682=!![];_0x349226[_0xeeef('0x1d')]=_0x1edb3e[_0xaaff1c]['id'];logger['info'](_0xeeef('0x1e'),_0x349226[_0xeeef('0x1d')]);}}}if(!_0x4ac682){logger[_0xeeef('0xc')](_0xeeef('0x1f'));_0x349226[_0xeeef('0x20')]=_0x349226[_0xeeef('0x12')];_0x349226[_0xeeef('0x1d')]=_0x349226[_0xeeef('0x13')];_0x4ac682=!![];}if(_0x4ac682){_0x3a7c21(_0x349226);}else{_0x3ac426({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x3ac426({'statusCode':0x194,'message':_0xeeef('0x15')});}})[_0xeeef('0x21')](function(_0x2af7fa){logger[_0xeeef('0x16')]('['+[_0x55d5ca[_0xeeef('0x17')]()]+']',_0x2af7fa[_0xeeef('0x18')]);_0x3ac426(_0x2af7fa);});});};}function searchContact(_0x2ba883,_0x2c177a,_0x30664d,_0x3a274d){return new Promise(function(_0x19f88a,_0x751c61){var _0x52aa17={'method':_0xeeef('0x19'),'headers':_0x2c177a,'uri':_0x2ba883+_0xeeef('0x22')+_0x3a274d+'&f='+_0x30664d+_0xeeef('0x23'),'json':!![]};rp(_0x52aa17)[_0xeeef('0xe')](function(_0x48dafc){var _0x469d86=_[_0xeeef('0x24')](_0x48dafc['contacts'][_0xeeef('0x25')],[_0x30664d,_0x3a274d]);_0x19f88a(_0x469d86);})[_0xeeef('0x21')](function(_0x5929e8){_0x751c61(_0x5929e8);});});}function getEndUser(_0x5d4ea0,_0x541025,_0x5149f9){return function(_0x1481cd){return new Promise(function(_0x28142b,_0x1e4b1c){logger[_0xeeef('0xc')](util[_0xeeef('0x26')](_0xeeef('0x27'),_0x1481cd[_0xeeef('0x28')]));searchContact(_0x5149f9,_0x541025,_0xeeef('0x29'),_0x1481cd['contactNumber'])[_0xeeef('0xe')](function(_0x36bc69){if(_0x36bc69){_0x1481cd[_0xeeef('0x2a')]=_0x36bc69['id'];logger[_0xeeef('0xc')](_0xeeef('0x2b'),_0x1481cd[_0xeeef('0x2a')]);return _0x28142b(_0x1481cd);}searchContact(_0x5149f9,_0x541025,_0xeeef('0x2c'),_0x1481cd['contactNumber'])[_0xeeef('0xe')](function(_0x62050e){if(_0x62050e){_0x1481cd[_0xeeef('0x2a')]=_0x62050e['id'];logger['info'](_0xeeef('0x2d'),_0x1481cd[_0xeeef('0x2a')]);return _0x28142b(_0x1481cd);}createEndUser(_0x1481cd,_0x5d4ea0,_0x541025,_0x5149f9)[_0xeeef('0xe')](function(_0x492cfd){logger[_0xeeef('0xc')](_0xeeef('0x2e'),_0x492cfd['endUserId']);return _0x28142b(_0x492cfd);});});})[_0xeeef('0x21')](function(_0x4d9e8f){_0x1e4b1c(_0x4d9e8f);});});};}function createEndUser(_0xace7a1,_0x32ed35,_0x1f4f7b,_0x188176){return new Promise(function(_0x2928e4,_0x4b25c8){var _0x128ef0=moment();var _0x57fb2a={'method':_0xeeef('0x2f'),'uri':_0x188176+'/api/contacts','body':{'contact':{'last_name':_0xace7a1[_0xeeef('0x28')],'work_number':_0xace7a1[_0xeeef('0x28')],'mobile_number':_0xace7a1[_0xeeef('0x28')],'owner_id':_0xace7a1[_0xeeef('0x1d')],'created_at':_0x128ef0[_0xeeef('0x26')](_0xeeef('0x30'))}},'json':!![]};_0x57fb2a[_0xeeef('0x1a')]=_0x1f4f7b;logger[_0xeeef('0xc')](_0xeeef('0x31'));return rp(_0x57fb2a)['then'](function(_0x5c63e4){_0xace7a1[_0xeeef('0x2a')]=_0x5c63e4[_0xeeef('0x32')]['id'];_0x2928e4(_0xace7a1);})[_0xeeef('0x21')](function(_0x58e61c){logger[_0xeeef('0x16')]('['+[_0x32ed35[_0xeeef('0x17')]()]+']',_0x58e61c['message']);_0x4b25c8(_0x58e61c['message']);});});}function getTicket(_0x419645,_0x1e7424,_0x3e4edb,_0x401df3,_0x18a556){return function(_0x3745e8){logger['info'](_0xeeef('0x33'));return new Promise(function(_0x4f0c30,_0x51aedc){var _0x12cf85=moment();var _0x48cc12={'method':_0xeeef('0x2f'),'uri':_0x3e4edb+_0xeeef('0x34'),'body':{'title':intUtil[_0xeeef('0x35')](_0x401df3[_0xeeef('0x36')],_0x18a556,'\x20'),'description':intUtil['getString'](_0x401df3[_0xeeef('0x37')],_0x18a556,'\x0a'),'owner_id':_0x3745e8[_0xeeef('0x1d')],'creater_id':_0x3745e8[_0xeeef('0x13')],'targetable_id':_0x3745e8[_0xeeef('0x2a')],'targetable_type':'Contact','created_at':_0x12cf85[_0xeeef('0x26')](_0xeeef('0x30')),'due_date':_0x12cf85['add'](0x1e,'m')[_0xeeef('0x26')](_0xeeef('0x30'))},'json':!![]};_0x48cc12['headers']=_0x1e7424;return rp(_0x48cc12)[_0xeeef('0xe')](function(_0x15f158){_0x3745e8[_0xeeef('0x38')]=_0x15f158[_0xeeef('0x39')]['id'];logger[_0xeeef('0xc')]('Task\x20created:',_0x3745e8['ticketId']);_0x4f0c30(_0x3745e8);})[_0xeeef('0x21')](function(_0x1812dc){logger[_0xeeef('0x16')]('['+[_0x419645[_0xeeef('0x17')]()]+']',_0x1812dc[_0xeeef('0x18')]);_0x51aedc(_0x1812dc[_0xeeef('0x18')]);});});};}function emit(_0x43ebde,_0x509257,_0x2cc049){var _0x5f33f5={'uri':_0x43ebde+_0xeeef('0x3a')+_0x2cc049};io['to'](util[_0xeeef('0x26')](_0xeeef('0x3b'),_0x509257))['emit'](_0xeeef('0x3c'),_0x5f33f5);}exports['cs']=function(_0x1a35d3,_0x3e9844,_0x40a406,_0x2e23fa,_0x2ab277,_0x3a5134,_0x476e92,_0x84fd1f){var _0x2c271c={};var _0x45fd0f={'Authorization':_0xeeef('0x3d')+_0x3a5134[_0xeeef('0x3e')]};_0x3a5134[_0xeeef('0x3f')]=intUtil[_0xeeef('0x40')](_0x3a5134[_0xeeef('0x3f')]);_0x3a5134[_0xeeef('0x41')]=intUtil[_0xeeef('0x40')](_0x3a5134['serverUrl']);var _0x35f043=_0x3a5134[_0xeeef('0x3f')];_0x2c271c[_0xeeef('0x12')]=_0x3a5134['username'];_0x2c271c[_0xeeef('0x28')]=_0x84fd1f[_0xeeef('0x42')]()===_0xeeef('0x43')?_0x3e9844[_0xeeef('0x44')]:_0x3e9844[_0xeeef('0x45')];_0x2c271c[_0xeeef('0x46')]=_0x84fd1f===_0xeeef('0x47')||_0x84fd1f===_0xeeef('0x48')?'queue':_0xeeef('0x43');if(_0x2e23fa){_0x2c271c['agentEmail']=_0x2e23fa[_0xeeef('0x11')];}var _0x2fb575=util[_0xeeef('0x26')](_0xeeef('0x49'),_0x3a5134[_0xeeef('0x41')],_0x3e9844[_0xeeef('0x4a')],md5(_0x3e9844[_0xeeef('0x4a')]));if(_0x2ab277&&_0x2ab277[_0xeeef('0x4b')]){logger[_0xeeef('0xc')](_0xeeef('0x4c'),_0xeeef('0x4d'));_0x3e9844[_0xeeef('0x4e')]=_0x2fb575;}else if(_0x476e92&&_0x476e92[_0xeeef('0x4f')]&&_0x476e92[_0xeeef('0x4f')]!==_0xeeef('0x50')){logger[_0xeeef('0xc')](_0xeeef('0x51'),'Recording\x20is\x20enabled!');_0x3e9844['recordingURL']=_0x2fb575;}else{_0x3e9844[_0xeeef('0x4e')]='';}return getAdminId(_0x2c271c,_0x84fd1f,_0x45fd0f,_0x35f043)[_0xeeef('0xe')](getUser(_0x84fd1f,_0x45fd0f,_0x35f043))[_0xeeef('0xe')](getEndUser(_0x84fd1f,_0x45fd0f,_0x35f043))[_0xeeef('0xe')](getTicket(_0x84fd1f,_0x45fd0f,_0x35f043,_0x40a406,_0x3e9844))[_0xeeef('0xe')](function(_0x2c0546){logger[_0xeeef('0xc')](util['format'](_0xeeef('0x52'),_0x2c0546['ticketId']));if(_0x84fd1f!==_0xeeef('0x48')){logger[_0xeeef('0xc')]('['+[_0x84fd1f[_0xeeef('0x17')]()]+']',_0xeeef('0x53'));emit(_0x35f043,_0x2e23fa[_0xeeef('0x54')],_0x2c0546[_0xeeef('0x2a')]);}})[_0xeeef('0x21')](function(_0x3049a7){logger[_0xeeef('0x16')]('['+[_0x84fd1f[_0xeeef('0x17')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xeeef('0x55')](_0x3049a7,{'showHidden':!![],'depth':null}));});};