0854a79963e115638d1b70093d0ea9e257add971
[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 _0xe7de=['callDirection','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','inspect','lodash','request-promise','md5','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','headers','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','info','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','/api/selector/owners','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','message','&f=','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Descriptions','Contact','format','add','ticketId','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum'];(function(_0x217197,_0x1bab6b){var _0xaa5ebe=function(_0x4e7409){while(--_0x4e7409){_0x217197['push'](_0x217197['shift']());}};_0xaa5ebe(++_0x1bab6b);}(_0xe7de,0x165));var _0xee7d=function(_0x4ff598,_0x47ec98){_0x4ff598=_0x4ff598-0x0;var _0xe6eb5c=_0xe7de[_0x4ff598];return _0xe6eb5c;};'use strict';var _=require(_0xee7d('0x0'));var rp=require(_0xee7d('0x1'));var md5=require(_0xee7d('0x2'));var util=require('util');var moment=require('moment');var Promise=require(_0xee7d('0x3'));var Redis=require(_0xee7d('0x4'));var intUtil=require(_0xee7d('0x5'));var config=require(_0xee7d('0x6'));var logger=require(_0xee7d('0x7'))(_0xee7d('0x8'));config[_0xee7d('0x9')]=_[_0xee7d('0xa')](config[_0xee7d('0x9')],{'host':_0xee7d('0xb'),'port':0x18eb});var io=require(_0xee7d('0xc'))(new Redis(config[_0xee7d('0x9')]));function getAdminId(_0x1c0584,_0x941d94,_0x5b4739,_0x34265a){return new Promise(function(_0x32c4fa,_0x44e6ef){var _0x474c53=![];var _0x146172={'method':_0xee7d('0xd'),'uri':_0x34265a+'/api/selector/owners','json':!![]};_0x146172[_0xee7d('0xe')]=_0x5b4739;logger['info'](_0xee7d('0xf'));return rp(_0x146172)[_0xee7d('0x10')](function(_0x23bbf3){if(_0x23bbf3){var _0x17fb11=_0x23bbf3[_0xee7d('0x11')];var _0xb4c933=null;for(_0xb4c933=0x0;_0xb4c933<_0x17fb11[_0xee7d('0x12')];_0xb4c933++){if(_0x17fb11[_0xb4c933][_0xee7d('0x13')]===_0x1c0584[_0xee7d('0x14')]){_0x1c0584[_0xee7d('0x15')]=_0x17fb11[_0xb4c933]['id'];_0x474c53=!![];}}if(_0x474c53){logger[_0xee7d('0x16')]('Admin\x20found:',_0x1c0584['adminId']);_0x32c4fa(_0x1c0584);}else{_0x44e6ef({'statusCode':0x194,'message':_0xee7d('0x17')});}}else{_0x44e6ef({'statusCode':0x194,'message':_0xee7d('0x17')});}})[_0xee7d('0x18')](function(_0x1211a1){logger[_0xee7d('0x19')]('['+[_0x941d94[_0xee7d('0x1a')]()]+']',_0x1211a1['message']);_0x44e6ef(_0x1211a1);});});}function getUser(_0x3f76e6,_0x2bcd81,_0x59a308){return function(_0x62d1ec){return new Promise(function(_0x467eda,_0x25f3e0){var _0x5d42aa={'method':_0xee7d('0xd'),'uri':_0x59a308+_0xee7d('0x1b'),'json':!![]};_0x5d42aa[_0xee7d('0xe')]=_0x2bcd81;logger['info'](_0xee7d('0x1c'));return rp(_0x5d42aa)['then'](function(_0x1ef8ea){if(_0x1ef8ea){var _0x34209e=_0x1ef8ea[_0xee7d('0x11')];var _0x4f6445=![];var _0x113a05=null;if(_0x62d1ec['agentEmail']!==null){logger[_0xee7d('0x16')](_0xee7d('0x1d'),_0x62d1ec[_0xee7d('0x1e')]);_0x62d1ec[_0xee7d('0x1f')]=_0x62d1ec['agentEmail'];for(_0x113a05=0x0;_0x113a05<_0x34209e[_0xee7d('0x12')];_0x113a05++){if(_0x34209e[_0x113a05][_0xee7d('0x13')]===_0x62d1ec[_0xee7d('0x1e')]){_0x4f6445=!![];_0x62d1ec[_0xee7d('0x20')]=_0x34209e[_0x113a05]['id'];logger[_0xee7d('0x16')](_0xee7d('0x21'),_0x62d1ec[_0xee7d('0x20')]);}}}if(!_0x4f6445){logger[_0xee7d('0x16')](_0xee7d('0x22'));_0x62d1ec['userEmail']=_0x62d1ec[_0xee7d('0x14')];_0x62d1ec[_0xee7d('0x20')]=_0x62d1ec[_0xee7d('0x15')];_0x4f6445=!![];}if(_0x4f6445){_0x467eda(_0x62d1ec);}else{_0x25f3e0({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x25f3e0({'statusCode':0x194,'message':_0xee7d('0x17')});}})[_0xee7d('0x18')](function(_0x4532cb){logger[_0xee7d('0x19')]('['+[_0x3f76e6[_0xee7d('0x1a')]()]+']',_0x4532cb[_0xee7d('0x23')]);_0x25f3e0(_0x4532cb);});});};}function searchContact(_0xb727c9,_0x17a950,_0x3dda5b,_0x589fc0){return new Promise(function(_0x440bc4,_0x4e1bf5){var _0x5ca947={'method':_0xee7d('0xd'),'headers':_0x17a950,'uri':_0xb727c9+'/api/lookup?q='+_0x589fc0+_0xee7d('0x24')+_0x3dda5b+_0xee7d('0x25'),'json':!![]};rp(_0x5ca947)['then'](function(_0x6b6174){var _0x1d1990=_[_0xee7d('0x26')](_0x6b6174[_0xee7d('0x27')][_0xee7d('0x27')],[_0x3dda5b,_0x589fc0]);_0x440bc4(_0x1d1990);})['catch'](function(_0x382630){_0x4e1bf5(_0x382630);});});}function getEndUser(_0x303e1c,_0x2b37f4,_0x30540c){return function(_0x3701b8){return new Promise(function(_0x6405b4,_0x14d60c){logger[_0xee7d('0x16')](util['format'](_0xee7d('0x28'),_0x3701b8[_0xee7d('0x29')]));searchContact(_0x30540c,_0x2b37f4,_0xee7d('0x2a'),_0x3701b8['contactNumber'])[_0xee7d('0x10')](function(_0x571cf4){if(_0x571cf4){_0x3701b8[_0xee7d('0x2b')]=_0x571cf4['id'];logger[_0xee7d('0x16')]('Contact\x20found\x20mobile_number:',_0x3701b8['endUserId']);return _0x6405b4(_0x3701b8);}searchContact(_0x30540c,_0x2b37f4,_0xee7d('0x2c'),_0x3701b8['contactNumber'])[_0xee7d('0x10')](function(_0x2564a8){if(_0x2564a8){_0x3701b8[_0xee7d('0x2b')]=_0x2564a8['id'];logger[_0xee7d('0x16')](_0xee7d('0x2d'),_0x3701b8['endUserId']);return _0x6405b4(_0x3701b8);}createEndUser(_0x3701b8,_0x303e1c,_0x2b37f4,_0x30540c)['then'](function(_0x389c08){logger['info'](_0xee7d('0x2e'),_0x389c08[_0xee7d('0x2b')]);return _0x6405b4(_0x389c08);});});})[_0xee7d('0x18')](function(_0x1decf2){_0x14d60c(_0x1decf2);});});};}function createEndUser(_0xf7ed45,_0x36a554,_0xa190f1,_0x3d0f1f){return new Promise(function(_0x3431b1,_0x3e3d58){var _0x3d016=moment();var _0x4095f7={'method':'POST','uri':_0x3d0f1f+_0xee7d('0x2f'),'body':{'contact':{'last_name':_0xf7ed45['contactNumber'],'work_number':_0xf7ed45[_0xee7d('0x29')],'mobile_number':_0xf7ed45[_0xee7d('0x29')],'owner_id':_0xf7ed45[_0xee7d('0x20')],'created_at':_0x3d016['format'](_0xee7d('0x30'))}},'json':!![]};_0x4095f7[_0xee7d('0xe')]=_0xa190f1;logger[_0xee7d('0x16')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x4095f7)[_0xee7d('0x10')](function(_0x5c4f5d){_0xf7ed45[_0xee7d('0x2b')]=_0x5c4f5d['contact']['id'];_0x3431b1(_0xf7ed45);})['catch'](function(_0x428f9c){logger[_0xee7d('0x19')]('['+[_0x36a554[_0xee7d('0x1a')]()]+']',_0x428f9c[_0xee7d('0x23')]);_0x3e3d58(_0x428f9c['message']);});});}function getTicket(_0x2fe5d4,_0x49d0b8,_0x5ed8c5,_0xc3d85f,_0x4d7f8e){return function(_0x1fa17c){logger['info'](_0xee7d('0x31'));return new Promise(function(_0x27e613,_0x1f87ca){var _0xe0a2e=moment();var _0x55775d={'method':_0xee7d('0x32'),'uri':_0x5ed8c5+_0xee7d('0x33'),'body':{'title':intUtil[_0xee7d('0x34')](_0xc3d85f[_0xee7d('0x35')],_0x4d7f8e,'\x20'),'description':intUtil[_0xee7d('0x34')](_0xc3d85f[_0xee7d('0x36')],_0x4d7f8e,'\x0a'),'owner_id':_0x1fa17c['userId'],'creater_id':_0x1fa17c[_0xee7d('0x15')],'targetable_id':_0x1fa17c[_0xee7d('0x2b')],'targetable_type':_0xee7d('0x37'),'created_at':_0xe0a2e[_0xee7d('0x38')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0xe0a2e[_0xee7d('0x39')](0x1e,'m')['format'](_0xee7d('0x30'))},'json':!![]};_0x55775d['headers']=_0x49d0b8;return rp(_0x55775d)[_0xee7d('0x10')](function(_0x8da1bb){_0x1fa17c[_0xee7d('0x3a')]=_0x8da1bb['task']['id'];logger[_0xee7d('0x16')]('Task\x20created:',_0x1fa17c[_0xee7d('0x3a')]);_0x27e613(_0x1fa17c);})['catch'](function(_0x1ce951){logger[_0xee7d('0x19')]('['+[_0x2fe5d4[_0xee7d('0x1a')]()]+']',_0x1ce951['message']);_0x1f87ca(_0x1ce951[_0xee7d('0x23')]);});});};}function emit(_0x3a2d5e,_0x522048,_0x5895a6){var _0x2525a1={'uri':_0x3a2d5e+_0xee7d('0x3b')+_0x5895a6};io['to'](util['format'](_0xee7d('0x3c'),_0x522048))[_0xee7d('0x3d')](_0xee7d('0x3e'),_0x2525a1);}exports['cs']=function(_0x48470e,_0x58cbfe,_0x2746f3,_0x5a152c,_0x354eaa,_0x15cee7,_0x1920bb,_0xd13c3a){var _0x486cfc={};var _0x2306e9={'Authorization':_0xee7d('0x3f')+_0x15cee7[_0xee7d('0x40')]};_0x15cee7[_0xee7d('0x41')]=intUtil[_0xee7d('0x42')](_0x15cee7[_0xee7d('0x41')]);_0x15cee7[_0xee7d('0x43')]=intUtil[_0xee7d('0x42')](_0x15cee7[_0xee7d('0x43')]);var _0x290b65=_0x15cee7['remoteUri'];_0x486cfc['adminEmail']=_0x15cee7[_0xee7d('0x44')];_0x486cfc[_0xee7d('0x29')]=_0xd13c3a[_0xee7d('0x45')]()===_0xee7d('0x46')?_0x58cbfe[_0xee7d('0x47')]:_0x58cbfe[_0xee7d('0x48')];_0x486cfc[_0xee7d('0x49')]=_0xd13c3a==='queue'||_0xd13c3a===_0xee7d('0x4a')?'queue':_0xee7d('0x46');if(_0x5a152c){_0x486cfc[_0xee7d('0x1e')]=_0x5a152c['email'];}var _0x52c9f0=util['format'](_0xee7d('0x4b'),_0x15cee7[_0xee7d('0x43')],_0x58cbfe[_0xee7d('0x4c')],md5(_0x58cbfe[_0xee7d('0x4c')]));if(_0x354eaa&&_0x354eaa[_0xee7d('0x4d')]){logger['info'](_0xee7d('0x4e'),_0xee7d('0x4f'));_0x58cbfe[_0xee7d('0x50')]=_0x52c9f0;}else if(_0x1920bb&&_0x1920bb[_0xee7d('0x51')]&&_0x1920bb[_0xee7d('0x51')]!==_0xee7d('0x52')){logger[_0xee7d('0x16')](_0xee7d('0x53'),'Recording\x20is\x20enabled!');_0x58cbfe[_0xee7d('0x50')]=_0x52c9f0;}else{_0x58cbfe[_0xee7d('0x50')]='';}return getAdminId(_0x486cfc,_0xd13c3a,_0x2306e9,_0x290b65)[_0xee7d('0x10')](getUser(_0xd13c3a,_0x2306e9,_0x290b65))[_0xee7d('0x10')](getEndUser(_0xd13c3a,_0x2306e9,_0x290b65))[_0xee7d('0x10')](getTicket(_0xd13c3a,_0x2306e9,_0x290b65,_0x2746f3,_0x58cbfe))['then'](function(_0x1967e0){logger['info'](util['format'](_0xee7d('0x54'),_0x1967e0['ticketId']));if(_0xd13c3a!==_0xee7d('0x4a')){logger[_0xee7d('0x16')]('['+[_0xd13c3a['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x290b65,_0x5a152c['name'],_0x1967e0[_0xee7d('0x2b')]);}})[_0xee7d('0x18')](function(_0x352e29){logger[_0xee7d('0x19')]('['+[_0xd13c3a[_0xee7d('0x1a')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xee7d('0x55')](_0x352e29,{'showHidden':!![],'depth':null}));});};