48200ad05ed44fe03cc40fe015c9193f0374db30
[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 _0xd101=['getString','Descriptions','Contact','add','task','Task\x20created:','ticketId','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','username','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','error','/api/lookup?q=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','endUserId','work_number','contactNumber','Contact\x20found\x20work_number:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','Subjects'];(function(_0x3f29a1,_0xb9b6b2){var _0x961f04=function(_0x501f88){while(--_0x501f88){_0x3f29a1['push'](_0x3f29a1['shift']());}};_0x961f04(++_0xb9b6b2);}(_0xd101,0xc1));var _0x1d10=function(_0xddf7c3,_0x1649d0){_0xddf7c3=_0xddf7c3-0x0;var _0x223cfe=_0xd101[_0xddf7c3];return _0x223cfe;};'use strict';var _=require(_0x1d10('0x0'));var rp=require('request-promise');var md5=require(_0x1d10('0x1'));var util=require(_0x1d10('0x2'));var moment=require(_0x1d10('0x3'));var Promise=require(_0x1d10('0x4'));var Redis=require(_0x1d10('0x5'));var intUtil=require(_0x1d10('0x6'));var config=require(_0x1d10('0x7'));var logger=require(_0x1d10('0x8'))('freshsales');config[_0x1d10('0x9')]=_[_0x1d10('0xa')](config[_0x1d10('0x9')],{'host':_0x1d10('0xb'),'port':0x18eb});var io=require(_0x1d10('0xc'))(new Redis(config[_0x1d10('0x9')]));function getAdminId(_0x6d6def,_0x43df2c,_0x3a15c8,_0x182c87){return new Promise(function(_0xf7926b,_0x14e4df){var _0x1610b4=![];var _0x3fa4c1={'method':_0x1d10('0xd'),'uri':_0x182c87+_0x1d10('0xe'),'json':!![]};_0x3fa4c1[_0x1d10('0xf')]=_0x3a15c8;logger['info'](_0x1d10('0x10'));return rp(_0x3fa4c1)[_0x1d10('0x11')](function(_0x322bf4){if(_0x322bf4){var _0x190d4c=_0x322bf4[_0x1d10('0x12')];var _0x5b71d8=null;for(_0x5b71d8=0x0;_0x5b71d8<_0x190d4c[_0x1d10('0x13')];_0x5b71d8++){if(_0x190d4c[_0x5b71d8][_0x1d10('0x14')]===_0x6d6def[_0x1d10('0x15')]){_0x6d6def[_0x1d10('0x16')]=_0x190d4c[_0x5b71d8]['id'];_0x1610b4=!![];}}if(_0x1610b4){logger[_0x1d10('0x17')](_0x1d10('0x18'),_0x6d6def['adminId']);_0xf7926b(_0x6d6def);}else{_0x14e4df({'statusCode':0x194,'message':_0x1d10('0x19')});}}else{_0x14e4df({'statusCode':0x194,'message':_0x1d10('0x19')});}})[_0x1d10('0x1a')](function(_0x2ad3c0){logger['error']('['+[_0x43df2c[_0x1d10('0x1b')]()]+']',_0x2ad3c0[_0x1d10('0x1c')]);_0x14e4df(_0x2ad3c0);});});}function getUser(_0x41152c,_0x3f2f2b,_0x1b2051){return function(_0x382b37){return new Promise(function(_0x4528a6,_0x4f3e2a){var _0x23d604={'method':_0x1d10('0xd'),'uri':_0x1b2051+_0x1d10('0xe'),'json':!![]};_0x23d604[_0x1d10('0xf')]=_0x3f2f2b;logger[_0x1d10('0x17')]('Getting\x20user\x20list');return rp(_0x23d604)['then'](function(_0x44a253){if(_0x44a253){var _0x57ec1c=_0x44a253['users'];var _0x5774f9=![];var _0x237b92=null;if(_0x382b37[_0x1d10('0x1d')]!==null){logger[_0x1d10('0x17')](_0x1d10('0x1e'),_0x382b37['agentEmail']);_0x382b37['userEmail']=_0x382b37[_0x1d10('0x1d')];for(_0x237b92=0x0;_0x237b92<_0x57ec1c['length'];_0x237b92++){if(_0x57ec1c[_0x237b92][_0x1d10('0x14')]===_0x382b37[_0x1d10('0x1d')]){_0x5774f9=!![];_0x382b37[_0x1d10('0x1f')]=_0x57ec1c[_0x237b92]['id'];logger[_0x1d10('0x17')](_0x1d10('0x20'),_0x382b37[_0x1d10('0x1f')]);}}}if(!_0x5774f9){logger[_0x1d10('0x17')](_0x1d10('0x21'));_0x382b37[_0x1d10('0x22')]=_0x382b37[_0x1d10('0x15')];_0x382b37[_0x1d10('0x1f')]=_0x382b37['adminId'];_0x5774f9=!![];}if(_0x5774f9){_0x4528a6(_0x382b37);}else{_0x4f3e2a({'statusCode':0x194,'message':_0x1d10('0x19')});}}else{_0x4f3e2a({'statusCode':0x194,'message':_0x1d10('0x19')});}})[_0x1d10('0x1a')](function(_0x15f2ee){logger[_0x1d10('0x23')]('['+[_0x41152c[_0x1d10('0x1b')]()]+']',_0x15f2ee[_0x1d10('0x1c')]);_0x4f3e2a(_0x15f2ee);});});};}function searchContact(_0xaa8ab6,_0x4f7837,_0x355e10,_0x24eb47){return new Promise(function(_0x59b5eb,_0x13a3dc){var _0x52d514={'method':'GET','headers':_0x4f7837,'uri':_0xaa8ab6+_0x1d10('0x24')+_0x24eb47+'&f='+_0x355e10+_0x1d10('0x25'),'json':!![]};rp(_0x52d514)[_0x1d10('0x11')](function(_0x453737){var _0x15fdac=_[_0x1d10('0x26')](_0x453737[_0x1d10('0x27')]['contacts'],[_0x355e10,_0x24eb47]);_0x59b5eb(_0x15fdac);})['catch'](function(_0x1ada44){_0x13a3dc(_0x1ada44);});});}function getEndUser(_0x2a9dd7,_0x96756b,_0x2e870f){return function(_0xe89535){return new Promise(function(_0x400627,_0x2c9c59){logger[_0x1d10('0x17')](util[_0x1d10('0x28')](_0x1d10('0x29'),_0xe89535['contactNumber']));searchContact(_0x2e870f,_0x96756b,_0x1d10('0x2a'),_0xe89535['contactNumber'])[_0x1d10('0x11')](function(_0x376b1b){if(_0x376b1b){_0xe89535['endUserId']=_0x376b1b['id'];logger[_0x1d10('0x17')]('Contact\x20found\x20mobile_number:',_0xe89535[_0x1d10('0x2b')]);return _0x400627(_0xe89535);}searchContact(_0x2e870f,_0x96756b,_0x1d10('0x2c'),_0xe89535[_0x1d10('0x2d')])[_0x1d10('0x11')](function(_0xd50250){if(_0xd50250){_0xe89535['endUserId']=_0xd50250['id'];logger['info'](_0x1d10('0x2e'),_0xe89535[_0x1d10('0x2b')]);return _0x400627(_0xe89535);}createEndUser(_0xe89535,_0x2a9dd7,_0x96756b,_0x2e870f)[_0x1d10('0x11')](function(_0x47929d){logger['info']('Contact\x20created:',_0x47929d[_0x1d10('0x2b')]);return _0x400627(_0x47929d);});});})['catch'](function(_0x30f58c){_0x2c9c59(_0x30f58c);});});};}function createEndUser(_0x32e51b,_0x3fad02,_0x296dcf,_0x5e9f5d){return new Promise(function(_0x4c73e1,_0x34ad39){var _0x13049a=moment();var _0x1080b4={'method':_0x1d10('0x2f'),'uri':_0x5e9f5d+'/api/contacts','body':{'contact':{'last_name':_0x32e51b[_0x1d10('0x2d')],'work_number':_0x32e51b['contactNumber'],'mobile_number':_0x32e51b[_0x1d10('0x2d')],'owner_id':_0x32e51b[_0x1d10('0x1f')],'created_at':_0x13049a[_0x1d10('0x28')](_0x1d10('0x30'))}},'json':!![]};_0x1080b4[_0x1d10('0xf')]=_0x296dcf;logger[_0x1d10('0x17')](_0x1d10('0x31'));return rp(_0x1080b4)[_0x1d10('0x11')](function(_0x1a5126){_0x32e51b[_0x1d10('0x2b')]=_0x1a5126[_0x1d10('0x32')]['id'];_0x4c73e1(_0x32e51b);})[_0x1d10('0x1a')](function(_0x13822){logger['error']('['+[_0x3fad02['toUpperCase']()]+']',_0x13822[_0x1d10('0x1c')]);_0x34ad39(_0x13822[_0x1d10('0x1c')]);});});}function getTicket(_0x3be3b0,_0xb15892,_0x1368ef,_0x2be61e,_0x1ab775){return function(_0x4ebd4a){logger[_0x1d10('0x17')](_0x1d10('0x33'));return new Promise(function(_0xd8e8cc,_0x486dc2){var _0x37b718=moment();var _0x427cd7={'method':_0x1d10('0x2f'),'uri':_0x1368ef+'/api/tasks','body':{'title':intUtil['getString'](_0x2be61e[_0x1d10('0x34')],_0x1ab775,'\x20'),'description':intUtil[_0x1d10('0x35')](_0x2be61e[_0x1d10('0x36')],_0x1ab775,'\x0a'),'owner_id':_0x4ebd4a[_0x1d10('0x1f')],'creater_id':_0x4ebd4a[_0x1d10('0x16')],'targetable_id':_0x4ebd4a[_0x1d10('0x2b')],'targetable_type':_0x1d10('0x37'),'created_at':_0x37b718['format'](_0x1d10('0x30')),'due_date':_0x37b718[_0x1d10('0x38')](0x1e,'m')['format'](_0x1d10('0x30'))},'json':!![]};_0x427cd7['headers']=_0xb15892;return rp(_0x427cd7)[_0x1d10('0x11')](function(_0x5440c7){_0x4ebd4a['ticketId']=_0x5440c7[_0x1d10('0x39')]['id'];logger[_0x1d10('0x17')](_0x1d10('0x3a'),_0x4ebd4a[_0x1d10('0x3b')]);_0xd8e8cc(_0x4ebd4a);})[_0x1d10('0x1a')](function(_0x39d445){logger[_0x1d10('0x23')]('['+[_0x3be3b0[_0x1d10('0x1b')]()]+']',_0x39d445[_0x1d10('0x1c')]);_0x486dc2(_0x39d445['message']);});});};}function emit(_0x53e07b,_0x1ce4e9,_0x38bcba){var _0x121792={'uri':_0x53e07b+_0x1d10('0x3c')+_0x38bcba};io['to'](util[_0x1d10('0x28')](_0x1d10('0x3d'),_0x1ce4e9))['emit'](_0x1d10('0x3e'),_0x121792);}exports['cs']=function(_0x1b8513,_0x304342,_0x31fc7b,_0x76024d,_0x1ce21a,_0x8226b4,_0x2c036e,_0x39bf64){var _0x32a9a9={};var _0x1560df={'Authorization':_0x1d10('0x3f')+_0x8226b4[_0x1d10('0x40')]};_0x8226b4[_0x1d10('0x41')]=intUtil['stripTrailingSlash'](_0x8226b4['remoteUri']);_0x8226b4[_0x1d10('0x42')]=intUtil['stripTrailingSlash'](_0x8226b4['serverUrl']);var _0x231489=_0x8226b4[_0x1d10('0x41')];_0x32a9a9[_0x1d10('0x15')]=_0x8226b4[_0x1d10('0x43')];_0x32a9a9[_0x1d10('0x2d')]=_0x39bf64['toLowerCase']()==='outbound'?_0x304342['destcalleridnum']:_0x304342['calleridnum'];_0x32a9a9[_0x1d10('0x44')]=_0x39bf64===_0x1d10('0x45')||_0x39bf64===_0x1d10('0x46')?_0x1d10('0x45'):'outbound';if(_0x76024d){_0x32a9a9[_0x1d10('0x1d')]=_0x76024d[_0x1d10('0x14')];}var _0x3ee24d=util['format'](_0x1d10('0x47'),_0x8226b4['serverUrl'],_0x304342[_0x1d10('0x48')],md5(_0x304342[_0x1d10('0x48')]));if(_0x1ce21a&&_0x1ce21a[_0x1d10('0x49')]){logger[_0x1d10('0x17')]('[QUEUE]',_0x1d10('0x4a'));_0x304342[_0x1d10('0x4b')]=_0x3ee24d;}else if(_0x2c036e&&_0x2c036e[_0x1d10('0x4c')]&&_0x2c036e[_0x1d10('0x4c')]!==_0x1d10('0x4d')){logger[_0x1d10('0x17')]('[OUTBOUND]',_0x1d10('0x4a'));_0x304342['recordingURL']=_0x3ee24d;}else{_0x304342[_0x1d10('0x4b')]='';}return getAdminId(_0x32a9a9,_0x39bf64,_0x1560df,_0x231489)['then'](getUser(_0x39bf64,_0x1560df,_0x231489))[_0x1d10('0x11')](getEndUser(_0x39bf64,_0x1560df,_0x231489))[_0x1d10('0x11')](getTicket(_0x39bf64,_0x1560df,_0x231489,_0x31fc7b,_0x304342))[_0x1d10('0x11')](function(_0x1d27a2){logger['info'](util[_0x1d10('0x28')](_0x1d10('0x4e'),_0x1d27a2[_0x1d10('0x3b')]));if(_0x39bf64!==_0x1d10('0x46')){logger[_0x1d10('0x17')]('['+[_0x39bf64[_0x1d10('0x1b')]()]+']',_0x1d10('0x4f'));emit(_0x231489,_0x76024d[_0x1d10('0x50')],_0x1d27a2[_0x1d10('0x2b')]);}})[_0x1d10('0x1a')](function(_0x151ffb){logger['error']('['+[_0x39bf64[_0x1d10('0x1b')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x1d10('0x51')](_0x151ffb,{'showHidden':!![],'depth':null}));});};