8aa1ec38cac67bd1ec6a02f034c7821a27f438b0
[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 _0x1c5a=['add','ticketId','task','Task\x20created:','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!','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','freshsales','redis','defaults','localhost','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','Getting\x20user\x20list','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','message','/api/lookup?q=','&f=','&entities=contact','then','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','contact','/api/tasks','getString','Subjects','Contact'];(function(_0xe7ac42,_0x21eff5){var _0x53be1b=function(_0x489238){while(--_0x489238){_0xe7ac42['push'](_0xe7ac42['shift']());}};_0x53be1b(++_0x21eff5);}(_0x1c5a,0x173));var _0xa1c5=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x1c5a[_0x21549c];return _0x426cbd;};'use strict';var _=require(_0xa1c5('0x0'));var rp=require(_0xa1c5('0x1'));var md5=require(_0xa1c5('0x2'));var util=require(_0xa1c5('0x3'));var moment=require(_0xa1c5('0x4'));var Promise=require(_0xa1c5('0x5'));var Redis=require(_0xa1c5('0x6'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xa1c5('0x7'))(_0xa1c5('0x8'));config[_0xa1c5('0x9')]=_[_0xa1c5('0xa')](config[_0xa1c5('0x9')],{'host':_0xa1c5('0xb'),'port':0x18eb});var io=require(_0xa1c5('0xc'))(new Redis(config[_0xa1c5('0x9')]));function getAdminId(_0x5807c4,_0x2ba8dc,_0x44c95b,_0x43ed65){return new Promise(function(_0x537eef,_0x13698b){var _0x10e7b5=![];var _0x141524={'method':_0xa1c5('0xd'),'uri':_0x43ed65+'/api/selector/owners','json':!![]};_0x141524[_0xa1c5('0xe')]=_0x44c95b;logger[_0xa1c5('0xf')](_0xa1c5('0x10'));return rp(_0x141524)['then'](function(_0x412c72){if(_0x412c72){var _0x252161=_0x412c72[_0xa1c5('0x11')];var _0x2bf045=null;for(_0x2bf045=0x0;_0x2bf045<_0x252161[_0xa1c5('0x12')];_0x2bf045++){if(_0x252161[_0x2bf045][_0xa1c5('0x13')]===_0x5807c4[_0xa1c5('0x14')]){_0x5807c4[_0xa1c5('0x15')]=_0x252161[_0x2bf045]['id'];_0x10e7b5=!![];}}if(_0x10e7b5){logger[_0xa1c5('0xf')](_0xa1c5('0x16'),_0x5807c4[_0xa1c5('0x15')]);_0x537eef(_0x5807c4);}else{_0x13698b({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x13698b({'statusCode':0x194,'message':_0xa1c5('0x17')});}})[_0xa1c5('0x18')](function(_0xc76405){logger[_0xa1c5('0x19')]('['+[_0x2ba8dc[_0xa1c5('0x1a')]()]+']',_0xc76405['message']);_0x13698b(_0xc76405);});});}function getUser(_0x1c3c9a,_0x4cbb0f,_0x25d6ab){return function(_0x3da84d){return new Promise(function(_0xe0806d,_0x98823c){var _0x52b8ba={'method':'GET','uri':_0x25d6ab+'/api/selector/owners','json':!![]};_0x52b8ba[_0xa1c5('0xe')]=_0x4cbb0f;logger['info'](_0xa1c5('0x1b'));return rp(_0x52b8ba)['then'](function(_0x3b24f7){if(_0x3b24f7){var _0x1ce398=_0x3b24f7[_0xa1c5('0x11')];var _0x2b7d9e=![];var _0x3b42b0=null;if(_0x3da84d[_0xa1c5('0x1c')]!==null){logger[_0xa1c5('0xf')]('Getting\x20user\x20with\x20email',_0x3da84d[_0xa1c5('0x1c')]);_0x3da84d[_0xa1c5('0x1d')]=_0x3da84d[_0xa1c5('0x1c')];for(_0x3b42b0=0x0;_0x3b42b0<_0x1ce398[_0xa1c5('0x12')];_0x3b42b0++){if(_0x1ce398[_0x3b42b0][_0xa1c5('0x13')]===_0x3da84d[_0xa1c5('0x1c')]){_0x2b7d9e=!![];_0x3da84d[_0xa1c5('0x1e')]=_0x1ce398[_0x3b42b0]['id'];logger[_0xa1c5('0xf')](_0xa1c5('0x1f'),_0x3da84d['userId']);}}}if(!_0x2b7d9e){logger[_0xa1c5('0xf')](_0xa1c5('0x20'));_0x3da84d['userEmail']=_0x3da84d[_0xa1c5('0x14')];_0x3da84d[_0xa1c5('0x1e')]=_0x3da84d['adminId'];_0x2b7d9e=!![];}if(_0x2b7d9e){_0xe0806d(_0x3da84d);}else{_0x98823c({'statusCode':0x194,'message':_0xa1c5('0x17')});}}else{_0x98823c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0xbf84b0){logger['error']('['+[_0x1c3c9a['toUpperCase']()]+']',_0xbf84b0[_0xa1c5('0x21')]);_0x98823c(_0xbf84b0);});});};}function searchContact(_0x34b968,_0x58f19d,_0x2c3054,_0x1cac5e){return new Promise(function(_0x42ffc4,_0x300158){var _0x57ff55={'method':_0xa1c5('0xd'),'headers':_0x58f19d,'uri':_0x34b968+_0xa1c5('0x22')+_0x1cac5e+_0xa1c5('0x23')+_0x2c3054+_0xa1c5('0x24'),'json':!![]};rp(_0x57ff55)[_0xa1c5('0x25')](function(_0x4a8e5d){var _0x2f2ef8=_[_0xa1c5('0x26')](_0x4a8e5d[_0xa1c5('0x27')]['contacts'],[_0x2c3054,_0x1cac5e]);_0x42ffc4(_0x2f2ef8);})[_0xa1c5('0x18')](function(_0x2e639a){_0x300158(_0x2e639a);});});}function getEndUser(_0x2d8a87,_0x206ce8,_0x2a668a){return function(_0xbf2cee){return new Promise(function(_0x3de0c8,_0x22a18){logger['info'](util[_0xa1c5('0x28')](_0xa1c5('0x29'),_0xbf2cee['contactNumber']));searchContact(_0x2a668a,_0x206ce8,'mobile_number',_0xbf2cee[_0xa1c5('0x2a')])[_0xa1c5('0x25')](function(_0x4b562a){if(_0x4b562a){_0xbf2cee[_0xa1c5('0x2b')]=_0x4b562a['id'];logger[_0xa1c5('0xf')](_0xa1c5('0x2c'),_0xbf2cee[_0xa1c5('0x2b')]);return _0x3de0c8(_0xbf2cee);}searchContact(_0x2a668a,_0x206ce8,_0xa1c5('0x2d'),_0xbf2cee[_0xa1c5('0x2a')])[_0xa1c5('0x25')](function(_0xfb0f70){if(_0xfb0f70){_0xbf2cee[_0xa1c5('0x2b')]=_0xfb0f70['id'];logger[_0xa1c5('0xf')]('Contact\x20found\x20work_number:',_0xbf2cee['endUserId']);return _0x3de0c8(_0xbf2cee);}createEndUser(_0xbf2cee,_0x2d8a87,_0x206ce8,_0x2a668a)[_0xa1c5('0x25')](function(_0x652c6b){logger[_0xa1c5('0xf')](_0xa1c5('0x2e'),_0x652c6b[_0xa1c5('0x2b')]);return _0x3de0c8(_0x652c6b);});});})['catch'](function(_0x5924b6){_0x22a18(_0x5924b6);});});};}function createEndUser(_0x283484,_0x199bc1,_0x3d4cdf,_0xef6db2){return new Promise(function(_0x6a0072,_0x4efe49){var _0x2501a0=moment();var _0x559ed={'method':_0xa1c5('0x2f'),'uri':_0xef6db2+'/api/contacts','body':{'contact':{'last_name':_0x283484[_0xa1c5('0x2a')],'work_number':_0x283484['contactNumber'],'mobile_number':_0x283484[_0xa1c5('0x2a')],'owner_id':_0x283484[_0xa1c5('0x1e')],'created_at':_0x2501a0[_0xa1c5('0x28')](_0xa1c5('0x30'))}},'json':!![]};_0x559ed[_0xa1c5('0xe')]=_0x3d4cdf;logger[_0xa1c5('0xf')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x559ed)[_0xa1c5('0x25')](function(_0x61c560){_0x283484[_0xa1c5('0x2b')]=_0x61c560[_0xa1c5('0x31')]['id'];_0x6a0072(_0x283484);})[_0xa1c5('0x18')](function(_0x10ded5){logger[_0xa1c5('0x19')]('['+[_0x199bc1[_0xa1c5('0x1a')]()]+']',_0x10ded5[_0xa1c5('0x21')]);_0x4efe49(_0x10ded5[_0xa1c5('0x21')]);});});}function getTicket(_0x192741,_0x4c2b4e,_0x1a983d,_0x3dccb8,_0x39382d){return function(_0x8a75f9){logger[_0xa1c5('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x19af9c,_0x191b5a){var _0x315727=moment();var _0x2760a1={'method':_0xa1c5('0x2f'),'uri':_0x1a983d+_0xa1c5('0x32'),'body':{'title':intUtil[_0xa1c5('0x33')](_0x3dccb8[_0xa1c5('0x34')],_0x39382d,'\x20'),'description':intUtil['getString'](_0x3dccb8['Descriptions'],_0x39382d,'\x0a'),'owner_id':_0x8a75f9[_0xa1c5('0x1e')],'creater_id':_0x8a75f9['adminId'],'targetable_id':_0x8a75f9[_0xa1c5('0x2b')],'targetable_type':_0xa1c5('0x35'),'created_at':_0x315727[_0xa1c5('0x28')](_0xa1c5('0x30')),'due_date':_0x315727[_0xa1c5('0x36')](0x1e,'m')[_0xa1c5('0x28')](_0xa1c5('0x30'))},'json':!![]};_0x2760a1['headers']=_0x4c2b4e;return rp(_0x2760a1)[_0xa1c5('0x25')](function(_0x142409){_0x8a75f9[_0xa1c5('0x37')]=_0x142409[_0xa1c5('0x38')]['id'];logger['info'](_0xa1c5('0x39'),_0x8a75f9['ticketId']);_0x19af9c(_0x8a75f9);})[_0xa1c5('0x18')](function(_0x4d6d6a){logger[_0xa1c5('0x19')]('['+[_0x192741[_0xa1c5('0x1a')]()]+']',_0x4d6d6a[_0xa1c5('0x21')]);_0x191b5a(_0x4d6d6a[_0xa1c5('0x21')]);});});};}function emit(_0x494394,_0x124670,_0x3496ff){var _0x42f0d7={'uri':_0x494394+'/contacts/'+_0x3496ff};io['to'](util[_0xa1c5('0x28')](_0xa1c5('0x3a'),_0x124670))[_0xa1c5('0x3b')](_0xa1c5('0x3c'),_0x42f0d7);}exports['cs']=function(_0x1cc815,_0x192a8e,_0x24f722,_0xf93363,_0x41271e,_0x1b9596,_0x333268,_0xbadb7e){var _0x140d13={};var _0x4bdff1={'Authorization':_0xa1c5('0x3d')+_0x1b9596[_0xa1c5('0x3e')]};_0x1b9596['remoteUri']=intUtil['stripTrailingSlash'](_0x1b9596[_0xa1c5('0x3f')]);_0x1b9596['serverUrl']=intUtil[_0xa1c5('0x40')](_0x1b9596[_0xa1c5('0x41')]);var _0x5df615=_0x1b9596[_0xa1c5('0x3f')];_0x140d13['adminEmail']=_0x1b9596[_0xa1c5('0x42')];_0x140d13[_0xa1c5('0x2a')]=_0xbadb7e[_0xa1c5('0x43')]()==='outbound'?_0x192a8e[_0xa1c5('0x44')]:_0x192a8e[_0xa1c5('0x45')];_0x140d13['callDirection']=_0xbadb7e===_0xa1c5('0x46')||_0xbadb7e==='unmanaged'?_0xa1c5('0x46'):'outbound';if(_0xf93363){_0x140d13[_0xa1c5('0x1c')]=_0xf93363[_0xa1c5('0x13')];}var _0x25433e=util['format'](_0xa1c5('0x47'),_0x1b9596[_0xa1c5('0x41')],_0x192a8e[_0xa1c5('0x48')],md5(_0x192a8e[_0xa1c5('0x48')]));if(_0x41271e&&_0x41271e[_0xa1c5('0x49')]){logger[_0xa1c5('0xf')](_0xa1c5('0x4a'),'Recording\x20is\x20enabled!');_0x192a8e[_0xa1c5('0x4b')]=_0x25433e;}else if(_0x333268&&_0x333268[_0xa1c5('0x4c')]&&_0x333268[_0xa1c5('0x4c')]!==_0xa1c5('0x4d')){logger[_0xa1c5('0xf')]('[OUTBOUND]',_0xa1c5('0x4e'));_0x192a8e[_0xa1c5('0x4b')]=_0x25433e;}else{_0x192a8e[_0xa1c5('0x4b')]='';}return getAdminId(_0x140d13,_0xbadb7e,_0x4bdff1,_0x5df615)[_0xa1c5('0x25')](getUser(_0xbadb7e,_0x4bdff1,_0x5df615))['then'](getEndUser(_0xbadb7e,_0x4bdff1,_0x5df615))[_0xa1c5('0x25')](getTicket(_0xbadb7e,_0x4bdff1,_0x5df615,_0x24f722,_0x192a8e))[_0xa1c5('0x25')](function(_0x303de1){logger['info'](util['format'](_0xa1c5('0x4f'),_0x303de1[_0xa1c5('0x37')]));if(_0xbadb7e!==_0xa1c5('0x50')){logger[_0xa1c5('0xf')]('['+[_0xbadb7e[_0xa1c5('0x1a')]()]+']',_0xa1c5('0x51'));emit(_0x5df615,_0xf93363[_0xa1c5('0x52')],_0x303de1[_0xa1c5('0x2b')]);}})[_0xa1c5('0x18')](function(_0xced2e2){logger[_0xa1c5('0x19')]('['+[_0xbadb7e['toUpperCase']()]+_0xa1c5('0x53'),util[_0xa1c5('0x54')](_0xced2e2,{'showHidden':!![],'depth':null}));});};