3747ac6910d87a685f7ce7334a58b3431147d343
[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 _0x68ff=['The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','then','users','length','email','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','toUpperCase','message','/api/selector/owners','headers','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','adminEmail','catch','error','/api/lookup?q=','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','contactNumber','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','task','Task\x20created:','ticketId','/contacts/','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','outbound','destcalleridnum','callDirection','queue','unmanaged','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!'];(function(_0x159209,_0x44af9d){var _0x110e3b=function(_0x471f3e){while(--_0x471f3e){_0x159209['push'](_0x159209['shift']());}};_0x110e3b(++_0x44af9d);}(_0x68ff,0xa3));var _0xf68f=function(_0x5beae4,_0x392b4e){_0x5beae4=_0x5beae4-0x0;var _0x4a010a=_0x68ff[_0x5beae4];return _0x4a010a;};'use strict';var _=require(_0xf68f('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xf68f('0x1'));var moment=require(_0xf68f('0x2'));var Promise=require(_0xf68f('0x3'));var Redis=require(_0xf68f('0x4'));var intUtil=require(_0xf68f('0x5'));var config=require(_0xf68f('0x6'));var logger=require(_0xf68f('0x7'))(_0xf68f('0x8'));config[_0xf68f('0x9')]=_[_0xf68f('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xf68f('0xb'))(new Redis(config[_0xf68f('0x9')]));function getAdminId(_0x143bb1,_0x24c9d6,_0x36e7ff,_0x263816){return new Promise(function(_0x436fc1,_0x786a3){var _0x2f9914=![];var _0x2dfac9={'method':_0xf68f('0xc'),'uri':_0x263816+'/api/selector/owners','json':!![]};_0x2dfac9['headers']=_0x36e7ff;logger['info']('Getting\x20admin\x20information');return rp(_0x2dfac9)[_0xf68f('0xd')](function(_0x16fc33){if(_0x16fc33){var _0x589838=_0x16fc33[_0xf68f('0xe')];var _0x197279=null;for(_0x197279=0x0;_0x197279<_0x589838[_0xf68f('0xf')];_0x197279++){if(_0x589838[_0x197279][_0xf68f('0x10')]===_0x143bb1['adminEmail']){_0x143bb1[_0xf68f('0x11')]=_0x589838[_0x197279]['id'];_0x2f9914=!![];}}if(_0x2f9914){logger[_0xf68f('0x12')](_0xf68f('0x13'),_0x143bb1[_0xf68f('0x11')]);_0x436fc1(_0x143bb1);}else{_0x786a3({'statusCode':0x194,'message':_0xf68f('0x14')});}}else{_0x786a3({'statusCode':0x194,'message':_0xf68f('0x14')});}})['catch'](function(_0x5d56d0){logger['error']('['+[_0x24c9d6[_0xf68f('0x15')]()]+']',_0x5d56d0[_0xf68f('0x16')]);_0x786a3(_0x5d56d0);});});}function getUser(_0xbc2d7b,_0x1b9861,_0x5e93cd){return function(_0x5c6b65){return new Promise(function(_0x6a2cbd,_0x2f666c){var _0x39dc8f={'method':_0xf68f('0xc'),'uri':_0x5e93cd+_0xf68f('0x17'),'json':!![]};_0x39dc8f[_0xf68f('0x18')]=_0x1b9861;logger[_0xf68f('0x12')](_0xf68f('0x19'));return rp(_0x39dc8f)[_0xf68f('0xd')](function(_0x57b2e7){if(_0x57b2e7){var _0x569e3f=_0x57b2e7[_0xf68f('0xe')];var _0x34534e=![];var _0x55de29=null;if(_0x5c6b65['agentEmail']!==null){logger[_0xf68f('0x12')](_0xf68f('0x1a'),_0x5c6b65[_0xf68f('0x1b')]);_0x5c6b65[_0xf68f('0x1c')]=_0x5c6b65[_0xf68f('0x1b')];for(_0x55de29=0x0;_0x55de29<_0x569e3f[_0xf68f('0xf')];_0x55de29++){if(_0x569e3f[_0x55de29][_0xf68f('0x10')]===_0x5c6b65[_0xf68f('0x1b')]){_0x34534e=!![];_0x5c6b65['userId']=_0x569e3f[_0x55de29]['id'];logger[_0xf68f('0x12')]('User\x20found:',_0x5c6b65[_0xf68f('0x1d')]);}}}if(!_0x34534e){logger[_0xf68f('0x12')]('Admin\x20selected');_0x5c6b65[_0xf68f('0x1c')]=_0x5c6b65[_0xf68f('0x1e')];_0x5c6b65[_0xf68f('0x1d')]=_0x5c6b65[_0xf68f('0x11')];_0x34534e=!![];}if(_0x34534e){_0x6a2cbd(_0x5c6b65);}else{_0x2f666c({'statusCode':0x194,'message':_0xf68f('0x14')});}}else{_0x2f666c({'statusCode':0x194,'message':_0xf68f('0x14')});}})[_0xf68f('0x1f')](function(_0x11e6c6){logger[_0xf68f('0x20')]('['+[_0xbc2d7b[_0xf68f('0x15')]()]+']',_0x11e6c6['message']);_0x2f666c(_0x11e6c6);});});};}function searchContact(_0x4ecfab,_0xd50884,_0x415ea6,_0x48a575){return new Promise(function(_0x18d479,_0x375141){var _0x7b8297={'method':'GET','headers':_0xd50884,'uri':_0x4ecfab+_0xf68f('0x21')+_0x48a575+_0xf68f('0x22')+_0x415ea6+_0xf68f('0x23'),'json':!![]};rp(_0x7b8297)[_0xf68f('0xd')](function(_0x4f7e50){var _0x21fc60=_['find'](_0x4f7e50[_0xf68f('0x24')][_0xf68f('0x24')],[_0x415ea6,_0x48a575]);_0x18d479(_0x21fc60);})[_0xf68f('0x1f')](function(_0x1d45fd){_0x375141(_0x1d45fd);});});}function getEndUser(_0xb2774b,_0x527c4f,_0x28b34d){return function(_0x52f7d9){return new Promise(function(_0x25eeca,_0x3c6606){logger['info'](util[_0xf68f('0x25')](_0xf68f('0x26'),_0x52f7d9['contactNumber']));searchContact(_0x28b34d,_0x527c4f,_0xf68f('0x27'),_0x52f7d9['contactNumber'])[_0xf68f('0xd')](function(_0x15824d){if(_0x15824d){_0x52f7d9[_0xf68f('0x28')]=_0x15824d['id'];logger[_0xf68f('0x12')](_0xf68f('0x29'),_0x52f7d9[_0xf68f('0x28')]);return _0x25eeca(_0x52f7d9);}searchContact(_0x28b34d,_0x527c4f,_0xf68f('0x2a'),_0x52f7d9[_0xf68f('0x2b')])['then'](function(_0x3da1e1){if(_0x3da1e1){_0x52f7d9[_0xf68f('0x28')]=_0x3da1e1['id'];logger[_0xf68f('0x12')](_0xf68f('0x2c'),_0x52f7d9['endUserId']);return _0x25eeca(_0x52f7d9);}createEndUser(_0x52f7d9,_0xb2774b,_0x527c4f,_0x28b34d)[_0xf68f('0xd')](function(_0x19a5ef){logger[_0xf68f('0x12')]('Contact\x20created:',_0x19a5ef[_0xf68f('0x28')]);return _0x25eeca(_0x19a5ef);});});})['catch'](function(_0x741cc5){_0x3c6606(_0x741cc5);});});};}function createEndUser(_0x243fee,_0x4cf47f,_0x3b7083,_0x5a202c){return new Promise(function(_0x261f05,_0x587436){var _0x45e7e2=moment();var _0x148e3c={'method':_0xf68f('0x2d'),'uri':_0x5a202c+_0xf68f('0x2e'),'body':{'contact':{'last_name':_0x243fee['contactNumber'],'work_number':_0x243fee['contactNumber'],'mobile_number':_0x243fee[_0xf68f('0x2b')],'owner_id':_0x243fee['userId'],'created_at':_0x45e7e2[_0xf68f('0x25')](_0xf68f('0x2f'))}},'json':!![]};_0x148e3c['headers']=_0x3b7083;logger[_0xf68f('0x12')](_0xf68f('0x30'));return rp(_0x148e3c)['then'](function(_0x200f03){_0x243fee['endUserId']=_0x200f03[_0xf68f('0x31')]['id'];_0x261f05(_0x243fee);})[_0xf68f('0x1f')](function(_0x1ba145){logger[_0xf68f('0x20')]('['+[_0x4cf47f[_0xf68f('0x15')]()]+']',_0x1ba145[_0xf68f('0x16')]);_0x587436(_0x1ba145[_0xf68f('0x16')]);});});}function getTicket(_0x3ea2be,_0x51ff72,_0x565021,_0x33c023,_0x2395f3){return function(_0x1eaf76){logger[_0xf68f('0x12')](_0xf68f('0x32'));return new Promise(function(_0xcd54bb,_0x416a0e){var _0x4046f2=moment();var _0x2b68b7={'method':_0xf68f('0x2d'),'uri':_0x565021+_0xf68f('0x33'),'body':{'title':intUtil[_0xf68f('0x34')](_0x33c023[_0xf68f('0x35')],_0x2395f3,'\x20'),'description':intUtil[_0xf68f('0x34')](_0x33c023[_0xf68f('0x36')],_0x2395f3,'\x0a'),'owner_id':_0x1eaf76['userId'],'creater_id':_0x1eaf76[_0xf68f('0x11')],'targetable_id':_0x1eaf76['endUserId'],'targetable_type':'Contact','created_at':_0x4046f2[_0xf68f('0x25')](_0xf68f('0x2f')),'due_date':_0x4046f2['add'](0x1e,'m')[_0xf68f('0x25')](_0xf68f('0x2f'))},'json':!![]};_0x2b68b7[_0xf68f('0x18')]=_0x51ff72;return rp(_0x2b68b7)[_0xf68f('0xd')](function(_0x1f1082){_0x1eaf76['ticketId']=_0x1f1082[_0xf68f('0x37')]['id'];logger[_0xf68f('0x12')](_0xf68f('0x38'),_0x1eaf76[_0xf68f('0x39')]);_0xcd54bb(_0x1eaf76);})[_0xf68f('0x1f')](function(_0x173525){logger[_0xf68f('0x20')]('['+[_0x3ea2be[_0xf68f('0x15')]()]+']',_0x173525[_0xf68f('0x16')]);_0x416a0e(_0x173525['message']);});});};}function emit(_0x62d542,_0x50c8c4,_0x79df27){var _0x4d1e63={'uri':_0x62d542+_0xf68f('0x3a')+_0x79df27};io['to'](util[_0xf68f('0x25')]('user:%s',_0x50c8c4))[_0xf68f('0x3b')]('trigger:browser:url',_0x4d1e63);}exports['cs']=function(_0x1edd0a,_0x5b8a9b,_0x524940,_0x99c39f,_0xa3f071,_0x22bc77,_0x5d9f4a,_0x7a7eb3){var _0xed8476={};var _0x17d411={'Authorization':_0xf68f('0x3c')+_0x22bc77[_0xf68f('0x3d')]};_0x22bc77[_0xf68f('0x3e')]=intUtil['stripTrailingSlash'](_0x22bc77['remoteUri']);_0x22bc77['serverUrl']=intUtil[_0xf68f('0x3f')](_0x22bc77['serverUrl']);var _0x232ae3=_0x22bc77['remoteUri'];_0xed8476[_0xf68f('0x1e')]=_0x22bc77[_0xf68f('0x40')];_0xed8476[_0xf68f('0x2b')]=_0x7a7eb3['toLowerCase']()===_0xf68f('0x41')?_0x5b8a9b[_0xf68f('0x42')]:_0x5b8a9b['calleridnum'];_0xed8476[_0xf68f('0x43')]=_0x7a7eb3===_0xf68f('0x44')||_0x7a7eb3===_0xf68f('0x45')?_0xf68f('0x44'):'outbound';if(_0x99c39f){_0xed8476[_0xf68f('0x1b')]=_0x99c39f['email'];}var _0x1e7edc=util[_0xf68f('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x22bc77['serverUrl'],_0x5b8a9b[_0xf68f('0x46')],md5(_0x5b8a9b[_0xf68f('0x46')]));if(_0xa3f071&&_0xa3f071['monitor_format']){logger[_0xf68f('0x12')](_0xf68f('0x47'),'Recording\x20is\x20enabled!');_0x5b8a9b[_0xf68f('0x48')]=_0x1e7edc;}else if(_0x5d9f4a&&_0x5d9f4a[_0xf68f('0x49')]&&_0x5d9f4a[_0xf68f('0x49')]!==_0xf68f('0x4a')){logger[_0xf68f('0x12')](_0xf68f('0x4b'),_0xf68f('0x4c'));_0x5b8a9b['recordingURL']=_0x1e7edc;}else{_0x5b8a9b[_0xf68f('0x48')]='';}return getAdminId(_0xed8476,_0x7a7eb3,_0x17d411,_0x232ae3)[_0xf68f('0xd')](getUser(_0x7a7eb3,_0x17d411,_0x232ae3))[_0xf68f('0xd')](getEndUser(_0x7a7eb3,_0x17d411,_0x232ae3))['then'](getTicket(_0x7a7eb3,_0x17d411,_0x232ae3,_0x524940,_0x5b8a9b))[_0xf68f('0xd')](function(_0x5f27bf){logger[_0xf68f('0x12')](util[_0xf68f('0x25')](_0xf68f('0x4d'),_0x5f27bf['ticketId']));if(_0x7a7eb3!==_0xf68f('0x45')){logger['info']('['+[_0x7a7eb3[_0xf68f('0x15')]()]+']',_0xf68f('0x4e'));emit(_0x232ae3,_0x99c39f['name'],_0x5f27bf[_0xf68f('0x28')]);}})['catch'](function(_0xaea0ae){logger[_0xf68f('0x20')]('['+[_0x7a7eb3[_0xf68f('0x15')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xf68f('0x4f')](_0xaea0ae,{'showHidden':!![],'depth':null}));});};