Built motion from commit 43538d75.|2.5.35
[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 _0x5a4a=['stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','Getting\x20user\x20list','then','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','message','/api/lookup?q=','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','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Subjects','Descriptions','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri'];(function(_0x27c18c,_0x559349){var _0x209c3d=function(_0x3c67a4){while(--_0x3c67a4){_0x27c18c['push'](_0x27c18c['shift']());}};_0x209c3d(++_0x559349);}(_0x5a4a,0x1c8));var _0xa5a4=function(_0x36d66a,_0x2b1a9c){_0x36d66a=_0x36d66a-0x0;var _0x3d03f=_0x5a4a[_0x36d66a];return _0x3d03f;};'use strict';var _=require(_0xa5a4('0x0'));var rp=require(_0xa5a4('0x1'));var md5=require(_0xa5a4('0x2'));var util=require(_0xa5a4('0x3'));var moment=require('moment');var Promise=require(_0xa5a4('0x4'));var Redis=require(_0xa5a4('0x5'));var intUtil=require(_0xa5a4('0x6'));var config=require(_0xa5a4('0x7'));var logger=require('../../../../config/logger')('freshsales');config[_0xa5a4('0x8')]=_[_0xa5a4('0x9')](config['redis'],{'host':_0xa5a4('0xa'),'port':0x18eb});var io=require(_0xa5a4('0xb'))(new Redis(config[_0xa5a4('0x8')]));function getAdminId(_0x3e9e5c,_0x4a4156,_0x4e39aa,_0xd04610){return new Promise(function(_0x2dcd37,_0x4f35ab){var _0x369865=![];var _0x10995e={'method':_0xa5a4('0xc'),'uri':_0xd04610+_0xa5a4('0xd'),'json':!![]};_0x10995e[_0xa5a4('0xe')]=_0x4e39aa;logger[_0xa5a4('0xf')](_0xa5a4('0x10'));return rp(_0x10995e)['then'](function(_0x3a9da7){if(_0x3a9da7){var _0x2562f0=_0x3a9da7[_0xa5a4('0x11')];var _0x4e135c=null;for(_0x4e135c=0x0;_0x4e135c<_0x2562f0[_0xa5a4('0x12')];_0x4e135c++){if(_0x2562f0[_0x4e135c][_0xa5a4('0x13')]===_0x3e9e5c[_0xa5a4('0x14')]){_0x3e9e5c[_0xa5a4('0x15')]=_0x2562f0[_0x4e135c]['id'];_0x369865=!![];}}if(_0x369865){logger[_0xa5a4('0xf')](_0xa5a4('0x16'),_0x3e9e5c[_0xa5a4('0x15')]);_0x2dcd37(_0x3e9e5c);}else{_0x4f35ab({'statusCode':0x194,'message':_0xa5a4('0x17')});}}else{_0x4f35ab({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xa5a4('0x18')](function(_0xd5f6c6){logger[_0xa5a4('0x19')]('['+[_0x4a4156[_0xa5a4('0x1a')]()]+']',_0xd5f6c6['message']);_0x4f35ab(_0xd5f6c6);});});}function getUser(_0x15f759,_0xf257ab,_0x158f2f){return function(_0x4b9880){return new Promise(function(_0x2b716a,_0x443a3){var _0x15d839={'method':_0xa5a4('0xc'),'uri':_0x158f2f+'/api/selector/owners','json':!![]};_0x15d839['headers']=_0xf257ab;logger[_0xa5a4('0xf')](_0xa5a4('0x1b'));return rp(_0x15d839)[_0xa5a4('0x1c')](function(_0x1acd2f){if(_0x1acd2f){var _0x1f9492=_0x1acd2f['users'];var _0x261b76=![];var _0x5647f5=null;if(_0x4b9880[_0xa5a4('0x1d')]!==null){logger[_0xa5a4('0xf')](_0xa5a4('0x1e'),_0x4b9880[_0xa5a4('0x1d')]);_0x4b9880[_0xa5a4('0x1f')]=_0x4b9880[_0xa5a4('0x1d')];for(_0x5647f5=0x0;_0x5647f5<_0x1f9492['length'];_0x5647f5++){if(_0x1f9492[_0x5647f5][_0xa5a4('0x13')]===_0x4b9880[_0xa5a4('0x1d')]){_0x261b76=!![];_0x4b9880[_0xa5a4('0x20')]=_0x1f9492[_0x5647f5]['id'];logger['info'](_0xa5a4('0x21'),_0x4b9880[_0xa5a4('0x20')]);}}}if(!_0x261b76){logger[_0xa5a4('0xf')](_0xa5a4('0x22'));_0x4b9880[_0xa5a4('0x1f')]=_0x4b9880['adminEmail'];_0x4b9880[_0xa5a4('0x20')]=_0x4b9880['adminId'];_0x261b76=!![];}if(_0x261b76){_0x2b716a(_0x4b9880);}else{_0x443a3({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x443a3({'statusCode':0x194,'message':_0xa5a4('0x17')});}})[_0xa5a4('0x18')](function(_0x2f732d){logger[_0xa5a4('0x19')]('['+[_0x15f759[_0xa5a4('0x1a')]()]+']',_0x2f732d[_0xa5a4('0x23')]);_0x443a3(_0x2f732d);});});};}function searchContact(_0x409207,_0xc57fad,_0x473ed9,_0x106606){return new Promise(function(_0x47731d,_0x2c4c49){var _0xdc52ff={'method':_0xa5a4('0xc'),'headers':_0xc57fad,'uri':_0x409207+_0xa5a4('0x24')+_0x106606+'&f='+_0x473ed9+'&entities=contact','json':!![]};rp(_0xdc52ff)[_0xa5a4('0x1c')](function(_0x1b9cad){var _0x49fcc2=_['find'](_0x1b9cad[_0xa5a4('0x25')][_0xa5a4('0x25')],[_0x473ed9,_0x106606]);_0x47731d(_0x49fcc2);})[_0xa5a4('0x18')](function(_0xcff877){_0x2c4c49(_0xcff877);});});}function getEndUser(_0x42649c,_0xab3a42,_0xc86a76){return function(_0x1bfa49){return new Promise(function(_0x469b55,_0x529cdc){logger[_0xa5a4('0xf')](util[_0xa5a4('0x26')](_0xa5a4('0x27'),_0x1bfa49[_0xa5a4('0x28')]));searchContact(_0xc86a76,_0xab3a42,_0xa5a4('0x29'),_0x1bfa49[_0xa5a4('0x28')])[_0xa5a4('0x1c')](function(_0x3b485a){if(_0x3b485a){_0x1bfa49[_0xa5a4('0x2a')]=_0x3b485a['id'];logger[_0xa5a4('0xf')](_0xa5a4('0x2b'),_0x1bfa49[_0xa5a4('0x2a')]);return _0x469b55(_0x1bfa49);}searchContact(_0xc86a76,_0xab3a42,_0xa5a4('0x2c'),_0x1bfa49['contactNumber'])[_0xa5a4('0x1c')](function(_0x5c8332){if(_0x5c8332){_0x1bfa49[_0xa5a4('0x2a')]=_0x5c8332['id'];logger[_0xa5a4('0xf')](_0xa5a4('0x2d'),_0x1bfa49[_0xa5a4('0x2a')]);return _0x469b55(_0x1bfa49);}createEndUser(_0x1bfa49,_0x42649c,_0xab3a42,_0xc86a76)[_0xa5a4('0x1c')](function(_0x154b88){logger[_0xa5a4('0xf')](_0xa5a4('0x2e'),_0x154b88[_0xa5a4('0x2a')]);return _0x469b55(_0x154b88);});});})['catch'](function(_0x57654e){_0x529cdc(_0x57654e);});});};}function createEndUser(_0x5a29a8,_0x38b331,_0x1b756d,_0x55d01b){return new Promise(function(_0x16b3d6,_0x29cf1e){var _0x14ef4b=moment();var _0x390ebc={'method':_0xa5a4('0x2f'),'uri':_0x55d01b+_0xa5a4('0x30'),'body':{'contact':{'last_name':_0x5a29a8[_0xa5a4('0x28')],'work_number':_0x5a29a8[_0xa5a4('0x28')],'mobile_number':_0x5a29a8[_0xa5a4('0x28')],'owner_id':_0x5a29a8[_0xa5a4('0x20')],'created_at':_0x14ef4b[_0xa5a4('0x26')](_0xa5a4('0x31'))}},'json':!![]};_0x390ebc[_0xa5a4('0xe')]=_0x1b756d;logger[_0xa5a4('0xf')](_0xa5a4('0x32'));return rp(_0x390ebc)[_0xa5a4('0x1c')](function(_0xe21027){_0x5a29a8['endUserId']=_0xe21027[_0xa5a4('0x33')]['id'];_0x16b3d6(_0x5a29a8);})[_0xa5a4('0x18')](function(_0x2865a3){logger['error']('['+[_0x38b331[_0xa5a4('0x1a')]()]+']',_0x2865a3['message']);_0x29cf1e(_0x2865a3['message']);});});}function getTicket(_0x233673,_0x2f4171,_0x1beffe,_0x2257b2,_0x1ff7f9){return function(_0x177ba9){logger['info'](_0xa5a4('0x34'));return new Promise(function(_0x365249,_0x2078e5){var _0x134847=moment();var _0x41636d={'method':_0xa5a4('0x2f'),'uri':_0x1beffe+'/api/tasks','body':{'title':intUtil[_0xa5a4('0x35')](_0x2257b2[_0xa5a4('0x36')],_0x1ff7f9,'\x20'),'description':intUtil[_0xa5a4('0x35')](_0x2257b2[_0xa5a4('0x37')],_0x1ff7f9,'\x0a'),'owner_id':_0x177ba9[_0xa5a4('0x20')],'creater_id':_0x177ba9[_0xa5a4('0x15')],'targetable_id':_0x177ba9[_0xa5a4('0x2a')],'targetable_type':'Contact','created_at':_0x134847[_0xa5a4('0x26')](_0xa5a4('0x31')),'due_date':_0x134847[_0xa5a4('0x38')](0x1e,'m')['format'](_0xa5a4('0x31'))},'json':!![]};_0x41636d[_0xa5a4('0xe')]=_0x2f4171;return rp(_0x41636d)[_0xa5a4('0x1c')](function(_0x903dde){_0x177ba9[_0xa5a4('0x39')]=_0x903dde['task']['id'];logger['info'](_0xa5a4('0x3a'),_0x177ba9[_0xa5a4('0x39')]);_0x365249(_0x177ba9);})[_0xa5a4('0x18')](function(_0x52675d){logger[_0xa5a4('0x19')]('['+[_0x233673[_0xa5a4('0x1a')]()]+']',_0x52675d[_0xa5a4('0x23')]);_0x2078e5(_0x52675d['message']);});});};}function emit(_0x597675,_0x42d44b,_0x5b5eea){var _0x41a9d8={'uri':_0x597675+_0xa5a4('0x3b')+_0x5b5eea};io['to'](util['format'](_0xa5a4('0x3c'),_0x42d44b))[_0xa5a4('0x3d')](_0xa5a4('0x3e'),_0x41a9d8);}exports['cs']=function(_0x275832,_0x38f687,_0xd6367b,_0x23d4c1,_0x52c8fa,_0x171d73,_0x3321da,_0x34b35e){var _0x4ffde1={};var _0xdb8590={'Authorization':_0xa5a4('0x3f')+_0x171d73[_0xa5a4('0x40')]};_0x171d73[_0xa5a4('0x41')]=intUtil[_0xa5a4('0x42')](_0x171d73[_0xa5a4('0x41')]);_0x171d73[_0xa5a4('0x43')]=intUtil[_0xa5a4('0x42')](_0x171d73[_0xa5a4('0x43')]);var _0xaf884e=_0x171d73[_0xa5a4('0x41')];_0x4ffde1['adminEmail']=_0x171d73[_0xa5a4('0x44')];_0x4ffde1[_0xa5a4('0x28')]=_0x34b35e[_0xa5a4('0x45')]()===_0xa5a4('0x46')?_0x38f687[_0xa5a4('0x47')]:_0x38f687[_0xa5a4('0x48')];_0x4ffde1[_0xa5a4('0x49')]=_0x34b35e==='queue'||_0x34b35e===_0xa5a4('0x4a')?_0xa5a4('0x4b'):'outbound';if(_0x23d4c1){_0x4ffde1[_0xa5a4('0x1d')]=_0x23d4c1[_0xa5a4('0x13')];}var _0x480212=util[_0xa5a4('0x26')](_0xa5a4('0x4c'),_0x171d73[_0xa5a4('0x43')],_0x38f687[_0xa5a4('0x4d')],md5(_0x38f687['uniqueid']));if(_0x52c8fa&&_0x52c8fa[_0xa5a4('0x4e')]){logger[_0xa5a4('0xf')]('[QUEUE]',_0xa5a4('0x4f'));_0x38f687['recordingURL']=_0x480212;}else if(_0x3321da&&_0x3321da[_0xa5a4('0x50')]&&_0x3321da[_0xa5a4('0x50')]!==_0xa5a4('0x51')){logger['info'](_0xa5a4('0x52'),'Recording\x20is\x20enabled!');_0x38f687[_0xa5a4('0x53')]=_0x480212;}else{_0x38f687[_0xa5a4('0x53')]='';}return getAdminId(_0x4ffde1,_0x34b35e,_0xdb8590,_0xaf884e)[_0xa5a4('0x1c')](getUser(_0x34b35e,_0xdb8590,_0xaf884e))[_0xa5a4('0x1c')](getEndUser(_0x34b35e,_0xdb8590,_0xaf884e))[_0xa5a4('0x1c')](getTicket(_0x34b35e,_0xdb8590,_0xaf884e,_0xd6367b,_0x38f687))[_0xa5a4('0x1c')](function(_0x249735){logger['info'](util[_0xa5a4('0x26')]('The\x20ticket\x20ID\x20is:\x20%s',_0x249735[_0xa5a4('0x39')]));if(_0x34b35e!==_0xa5a4('0x4a')){logger[_0xa5a4('0xf')]('['+[_0x34b35e[_0xa5a4('0x1a')]()]+']',_0xa5a4('0x54'));emit(_0xaf884e,_0x23d4c1[_0xa5a4('0x55')],_0x249735['endUserId']);}})[_0xa5a4('0x18')](function(_0x40dcc9){logger[_0xa5a4('0x19')]('['+[_0x34b35e['toUpperCase']()]+_0xa5a4('0x56'),util['inspect'](_0x40dcc9,{'showHidden':!![],'depth':null}));});};