Built motion from commit 497d3d92.|2.5.43
[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 _0xd48f=['find','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','task','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','adminEmail','/api/lookup?q=','&entities=contact'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd48f,0x1cc));var _0xfd48=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0xd48f[_0xef8146];return _0x5a6cb0;};'use strict';var _=require(_0xfd48('0x0'));var rp=require(_0xfd48('0x1'));var md5=require('md5');var util=require('util');var moment=require(_0xfd48('0x2'));var Promise=require(_0xfd48('0x3'));var Redis=require('ioredis');var intUtil=require(_0xfd48('0x4'));var config=require(_0xfd48('0x5'));var logger=require(_0xfd48('0x6'))(_0xfd48('0x7'));config['redis']=_[_0xfd48('0x8')](config[_0xfd48('0x9')],{'host':_0xfd48('0xa'),'port':0x18eb});var io=require(_0xfd48('0xb'))(new Redis(config[_0xfd48('0x9')]));function getAdminId(_0x47ce5a,_0x2988e6,_0x3670c9,_0x3bbd5a){return new Promise(function(_0x3f69cc,_0x48824f){var _0x59e4aa=![];var _0x4f2ff0={'method':_0xfd48('0xc'),'uri':_0x3bbd5a+_0xfd48('0xd'),'json':!![]};_0x4f2ff0[_0xfd48('0xe')]=_0x3670c9;logger[_0xfd48('0xf')](_0xfd48('0x10'));return rp(_0x4f2ff0)[_0xfd48('0x11')](function(_0x3c801a){if(_0x3c801a){var _0x41d1bc=_0x3c801a[_0xfd48('0x12')];var _0xc5999e=null;for(_0xc5999e=0x0;_0xc5999e<_0x41d1bc[_0xfd48('0x13')];_0xc5999e++){if(_0x41d1bc[_0xc5999e][_0xfd48('0x14')]===_0x47ce5a['adminEmail']){_0x47ce5a[_0xfd48('0x15')]=_0x41d1bc[_0xc5999e]['id'];_0x59e4aa=!![];}}if(_0x59e4aa){logger[_0xfd48('0xf')](_0xfd48('0x16'),_0x47ce5a['adminId']);_0x3f69cc(_0x47ce5a);}else{_0x48824f({'statusCode':0x194,'message':_0xfd48('0x17')});}}else{_0x48824f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xfd48('0x18')](function(_0x4a5105){logger[_0xfd48('0x19')]('['+[_0x2988e6[_0xfd48('0x1a')]()]+']',_0x4a5105[_0xfd48('0x1b')]);_0x48824f(_0x4a5105);});});}function getUser(_0x497cdc,_0x4c7ba1,_0x434063){return function(_0xbeb1a4){return new Promise(function(_0x1a6d91,_0x5d6ccf){var _0x384199={'method':_0xfd48('0xc'),'uri':_0x434063+'/api/selector/owners','json':!![]};_0x384199[_0xfd48('0xe')]=_0x4c7ba1;logger[_0xfd48('0xf')](_0xfd48('0x1c'));return rp(_0x384199)[_0xfd48('0x11')](function(_0x234eb4){if(_0x234eb4){var _0xa956ca=_0x234eb4[_0xfd48('0x12')];var _0xba8293=![];var _0x51bfdf=null;if(_0xbeb1a4[_0xfd48('0x1d')]!==null){logger[_0xfd48('0xf')](_0xfd48('0x1e'),_0xbeb1a4[_0xfd48('0x1d')]);_0xbeb1a4['userEmail']=_0xbeb1a4[_0xfd48('0x1d')];for(_0x51bfdf=0x0;_0x51bfdf<_0xa956ca[_0xfd48('0x13')];_0x51bfdf++){if(_0xa956ca[_0x51bfdf]['email']===_0xbeb1a4['agentEmail']){_0xba8293=!![];_0xbeb1a4[_0xfd48('0x1f')]=_0xa956ca[_0x51bfdf]['id'];logger[_0xfd48('0xf')](_0xfd48('0x20'),_0xbeb1a4[_0xfd48('0x1f')]);}}}if(!_0xba8293){logger[_0xfd48('0xf')](_0xfd48('0x21'));_0xbeb1a4[_0xfd48('0x22')]=_0xbeb1a4[_0xfd48('0x23')];_0xbeb1a4[_0xfd48('0x1f')]=_0xbeb1a4['adminId'];_0xba8293=!![];}if(_0xba8293){_0x1a6d91(_0xbeb1a4);}else{_0x5d6ccf({'statusCode':0x194,'message':_0xfd48('0x17')});}}else{_0x5d6ccf({'statusCode':0x194,'message':_0xfd48('0x17')});}})['catch'](function(_0x33bc7d){logger['error']('['+[_0x497cdc[_0xfd48('0x1a')]()]+']',_0x33bc7d[_0xfd48('0x1b')]);_0x5d6ccf(_0x33bc7d);});});};}function searchContact(_0x42344f,_0x1c3f0e,_0x956ea3,_0x16afc5){return new Promise(function(_0x814079,_0x123a47){var _0x180ae3={'method':_0xfd48('0xc'),'headers':_0x1c3f0e,'uri':_0x42344f+_0xfd48('0x24')+_0x16afc5+'&f='+_0x956ea3+_0xfd48('0x25'),'json':!![]};rp(_0x180ae3)[_0xfd48('0x11')](function(_0x5c0a6a){var _0x381ffc=_[_0xfd48('0x26')](_0x5c0a6a['contacts'][_0xfd48('0x27')],[_0x956ea3,_0x16afc5]);_0x814079(_0x381ffc);})[_0xfd48('0x18')](function(_0x2d613d){_0x123a47(_0x2d613d);});});}function getEndUser(_0xaf2c35,_0x4e92ad,_0x598b62){return function(_0x59d873){return new Promise(function(_0x265236,_0x3f34c2){logger[_0xfd48('0xf')](util[_0xfd48('0x28')]('Searching\x20contact\x20with\x20phone\x20%s',_0x59d873[_0xfd48('0x29')]));searchContact(_0x598b62,_0x4e92ad,_0xfd48('0x2a'),_0x59d873[_0xfd48('0x29')])['then'](function(_0x3eefa5){if(_0x3eefa5){_0x59d873[_0xfd48('0x2b')]=_0x3eefa5['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x59d873[_0xfd48('0x2b')]);return _0x265236(_0x59d873);}searchContact(_0x598b62,_0x4e92ad,'work_number',_0x59d873[_0xfd48('0x29')])[_0xfd48('0x11')](function(_0x4764e6){if(_0x4764e6){_0x59d873['endUserId']=_0x4764e6['id'];logger['info'](_0xfd48('0x2c'),_0x59d873[_0xfd48('0x2b')]);return _0x265236(_0x59d873);}createEndUser(_0x59d873,_0xaf2c35,_0x4e92ad,_0x598b62)['then'](function(_0x205742){logger[_0xfd48('0xf')](_0xfd48('0x2d'),_0x205742[_0xfd48('0x2b')]);return _0x265236(_0x205742);});});})[_0xfd48('0x18')](function(_0x1dd678){_0x3f34c2(_0x1dd678);});});};}function createEndUser(_0x1c8d5c,_0x492e60,_0x20222b,_0x31eed8){return new Promise(function(_0x340366,_0x1fadfd){var _0x4c1e04=moment();var _0x15244b={'method':_0xfd48('0x2e'),'uri':_0x31eed8+'/api/contacts','body':{'contact':{'last_name':_0x1c8d5c['contactNumber'],'work_number':_0x1c8d5c[_0xfd48('0x29')],'mobile_number':_0x1c8d5c[_0xfd48('0x29')],'owner_id':_0x1c8d5c[_0xfd48('0x1f')],'created_at':_0x4c1e04[_0xfd48('0x28')](_0xfd48('0x2f'))}},'json':!![]};_0x15244b[_0xfd48('0xe')]=_0x20222b;logger[_0xfd48('0xf')](_0xfd48('0x30'));return rp(_0x15244b)['then'](function(_0x21ddb6){_0x1c8d5c[_0xfd48('0x2b')]=_0x21ddb6['contact']['id'];_0x340366(_0x1c8d5c);})[_0xfd48('0x18')](function(_0x5a1eea){logger['error']('['+[_0x492e60[_0xfd48('0x1a')]()]+']',_0x5a1eea['message']);_0x1fadfd(_0x5a1eea[_0xfd48('0x1b')]);});});}function getTicket(_0x55d3d3,_0xcb50db,_0x32d95d,_0x2d982e,_0x15ef52){return function(_0x1c2c91){logger[_0xfd48('0xf')](_0xfd48('0x31'));return new Promise(function(_0x1641c1,_0x22ce70){var _0x3665f6=moment();var _0x577f5={'method':_0xfd48('0x2e'),'uri':_0x32d95d+_0xfd48('0x32'),'body':{'title':intUtil[_0xfd48('0x33')](_0x2d982e[_0xfd48('0x34')],_0x15ef52,'\x20'),'description':intUtil['getString'](_0x2d982e[_0xfd48('0x35')],_0x15ef52,'\x0a'),'owner_id':_0x1c2c91['userId'],'creater_id':_0x1c2c91[_0xfd48('0x15')],'targetable_id':_0x1c2c91[_0xfd48('0x2b')],'targetable_type':_0xfd48('0x36'),'created_at':_0x3665f6[_0xfd48('0x28')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x3665f6[_0xfd48('0x37')](0x1e,'m')[_0xfd48('0x28')](_0xfd48('0x2f'))},'json':!![]};_0x577f5[_0xfd48('0xe')]=_0xcb50db;return rp(_0x577f5)['then'](function(_0x349a8d){_0x1c2c91[_0xfd48('0x38')]=_0x349a8d[_0xfd48('0x39')]['id'];logger[_0xfd48('0xf')]('Task\x20created:',_0x1c2c91[_0xfd48('0x38')]);_0x1641c1(_0x1c2c91);})['catch'](function(_0x767ae9){logger[_0xfd48('0x19')]('['+[_0x55d3d3['toUpperCase']()]+']',_0x767ae9[_0xfd48('0x1b')]);_0x22ce70(_0x767ae9[_0xfd48('0x1b')]);});});};}function emit(_0x4ffe51,_0x3a0733,_0x448811){var _0x43973f={'uri':_0x4ffe51+'/contacts/'+_0x448811};io['to'](util[_0xfd48('0x28')](_0xfd48('0x3a'),_0x3a0733))[_0xfd48('0x3b')](_0xfd48('0x3c'),_0x43973f);}exports['cs']=function(_0x3a286d,_0x4f2307,_0x1cdf15,_0x3dab5c,_0x22b5c8,_0x24b1c8,_0x1518aa,_0xa43d90){var _0x21f1a2={};var _0x4e0361={'Authorization':_0xfd48('0x3d')+_0x24b1c8[_0xfd48('0x3e')]};_0x24b1c8[_0xfd48('0x3f')]=intUtil['stripTrailingSlash'](_0x24b1c8[_0xfd48('0x3f')]);_0x24b1c8[_0xfd48('0x40')]=intUtil[_0xfd48('0x41')](_0x24b1c8[_0xfd48('0x40')]);var _0x294b4b=_0x24b1c8[_0xfd48('0x3f')];_0x21f1a2[_0xfd48('0x23')]=_0x24b1c8['username'];_0x21f1a2[_0xfd48('0x29')]=_0xa43d90[_0xfd48('0x42')]()===_0xfd48('0x43')?_0x4f2307[_0xfd48('0x44')]:_0x4f2307[_0xfd48('0x45')];_0x21f1a2[_0xfd48('0x46')]=_0xa43d90===_0xfd48('0x47')||_0xa43d90===_0xfd48('0x48')?_0xfd48('0x47'):_0xfd48('0x43');if(_0x3dab5c){_0x21f1a2[_0xfd48('0x1d')]=_0x3dab5c['email'];}var _0xbab56e=util[_0xfd48('0x28')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x24b1c8[_0xfd48('0x40')],_0x4f2307[_0xfd48('0x49')],md5(_0x4f2307[_0xfd48('0x49')]));if(_0x22b5c8&&_0x22b5c8[_0xfd48('0x4a')]){logger[_0xfd48('0xf')](_0xfd48('0x4b'),_0xfd48('0x4c'));_0x4f2307[_0xfd48('0x4d')]=_0xbab56e;}else if(_0x1518aa&&_0x1518aa[_0xfd48('0x4e')]&&_0x1518aa[_0xfd48('0x4e')]!==_0xfd48('0x4f')){logger[_0xfd48('0xf')]('[OUTBOUND]',_0xfd48('0x4c'));_0x4f2307['recordingURL']=_0xbab56e;}else{_0x4f2307['recordingURL']='';}return getAdminId(_0x21f1a2,_0xa43d90,_0x4e0361,_0x294b4b)[_0xfd48('0x11')](getUser(_0xa43d90,_0x4e0361,_0x294b4b))[_0xfd48('0x11')](getEndUser(_0xa43d90,_0x4e0361,_0x294b4b))[_0xfd48('0x11')](getTicket(_0xa43d90,_0x4e0361,_0x294b4b,_0x1cdf15,_0x4f2307))['then'](function(_0xad4141){logger[_0xfd48('0xf')](util[_0xfd48('0x28')](_0xfd48('0x50'),_0xad4141[_0xfd48('0x38')]));if(_0xa43d90!==_0xfd48('0x48')){logger[_0xfd48('0xf')]('['+[_0xa43d90[_0xfd48('0x1a')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x294b4b,_0x3dab5c[_0xfd48('0x51')],_0xad4141['endUserId']);}})[_0xfd48('0x18')](function(_0xcf394f){logger[_0xfd48('0x19')]('['+[_0xa43d90[_0xfd48('0x1a')]()]+_0xfd48('0x52'),util['inspect'](_0xcf394f,{'showHidden':!![],'depth':null}));});};