Built motion from commit 25580385.|2.6.2
[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 _0x7e46=['format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Contact','ticketId','task','Task\x20created:','/contacts/','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','calleridnum','callDirection','queue','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','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','GET','info','Getting\x20admin\x20information','then','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','/api/selector/owners','headers','Getting\x20user\x20list','users','userEmail','agentEmail','userId','User\x20found:','Admin\x20selected','adminEmail','error','/api/lookup?q=','&f=','&entities=contact'];(function(_0x112d68,_0x297f0e){var _0x1c12d8=function(_0x4a4be5){while(--_0x4a4be5){_0x112d68['push'](_0x112d68['shift']());}};_0x1c12d8(++_0x297f0e);}(_0x7e46,0xde));var _0x67e4=function(_0x3c1d5a,_0x28de68){_0x3c1d5a=_0x3c1d5a-0x0;var _0xc58a6b=_0x7e46[_0x3c1d5a];return _0xc58a6b;};'use strict';var _=require(_0x67e4('0x0'));var rp=require(_0x67e4('0x1'));var md5=require('md5');var util=require(_0x67e4('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0x67e4('0x3'));var intUtil=require('./util');var config=require(_0x67e4('0x4'));var logger=require(_0x67e4('0x5'))('freshsales');config['redis']=_[_0x67e4('0x6')](config[_0x67e4('0x7')],{'host':_0x67e4('0x8'),'port':0x18eb});var io=require(_0x67e4('0x9'))(new Redis(config[_0x67e4('0x7')]));function getAdminId(_0x14194d,_0x194151,_0x1552df,_0x37477a){return new Promise(function(_0x2d6c96,_0x394d1b){var _0x50a7c8=![];var _0x189b4b={'method':_0x67e4('0xa'),'uri':_0x37477a+'/api/selector/owners','json':!![]};_0x189b4b['headers']=_0x1552df;logger[_0x67e4('0xb')](_0x67e4('0xc'));return rp(_0x189b4b)[_0x67e4('0xd')](function(_0x4fe1fc){if(_0x4fe1fc){var _0x519b48=_0x4fe1fc['users'];var _0x19fa92=null;for(_0x19fa92=0x0;_0x19fa92<_0x519b48[_0x67e4('0xe')];_0x19fa92++){if(_0x519b48[_0x19fa92][_0x67e4('0xf')]===_0x14194d['adminEmail']){_0x14194d[_0x67e4('0x10')]=_0x519b48[_0x19fa92]['id'];_0x50a7c8=!![];}}if(_0x50a7c8){logger['info'](_0x67e4('0x11'),_0x14194d['adminId']);_0x2d6c96(_0x14194d);}else{_0x394d1b({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x394d1b({'statusCode':0x194,'message':_0x67e4('0x12')});}})[_0x67e4('0x13')](function(_0x511b89){logger['error']('['+[_0x194151[_0x67e4('0x14')]()]+']',_0x511b89[_0x67e4('0x15')]);_0x394d1b(_0x511b89);});});}function getUser(_0x2cc69e,_0x5b962c,_0x4e970a){return function(_0x1b589b){return new Promise(function(_0x1c2077,_0x10cee4){var _0x490fa6={'method':_0x67e4('0xa'),'uri':_0x4e970a+_0x67e4('0x16'),'json':!![]};_0x490fa6[_0x67e4('0x17')]=_0x5b962c;logger[_0x67e4('0xb')](_0x67e4('0x18'));return rp(_0x490fa6)['then'](function(_0x385c32){if(_0x385c32){var _0x3b6d16=_0x385c32[_0x67e4('0x19')];var _0x5d0de9=![];var _0xf3a74b=null;if(_0x1b589b['agentEmail']!==null){logger[_0x67e4('0xb')]('Getting\x20user\x20with\x20email',_0x1b589b['agentEmail']);_0x1b589b[_0x67e4('0x1a')]=_0x1b589b[_0x67e4('0x1b')];for(_0xf3a74b=0x0;_0xf3a74b<_0x3b6d16['length'];_0xf3a74b++){if(_0x3b6d16[_0xf3a74b][_0x67e4('0xf')]===_0x1b589b['agentEmail']){_0x5d0de9=!![];_0x1b589b[_0x67e4('0x1c')]=_0x3b6d16[_0xf3a74b]['id'];logger[_0x67e4('0xb')](_0x67e4('0x1d'),_0x1b589b[_0x67e4('0x1c')]);}}}if(!_0x5d0de9){logger[_0x67e4('0xb')](_0x67e4('0x1e'));_0x1b589b[_0x67e4('0x1a')]=_0x1b589b[_0x67e4('0x1f')];_0x1b589b['userId']=_0x1b589b[_0x67e4('0x10')];_0x5d0de9=!![];}if(_0x5d0de9){_0x1c2077(_0x1b589b);}else{_0x10cee4({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x10cee4({'statusCode':0x194,'message':_0x67e4('0x12')});}})[_0x67e4('0x13')](function(_0x301664){logger[_0x67e4('0x20')]('['+[_0x2cc69e[_0x67e4('0x14')]()]+']',_0x301664[_0x67e4('0x15')]);_0x10cee4(_0x301664);});});};}function searchContact(_0x1f3224,_0xeb1ccb,_0x5badad,_0x234056){return new Promise(function(_0x31efef,_0x4941e7){var _0xf6df50={'method':'GET','headers':_0xeb1ccb,'uri':_0x1f3224+_0x67e4('0x21')+_0x234056+_0x67e4('0x22')+_0x5badad+_0x67e4('0x23'),'json':!![]};rp(_0xf6df50)[_0x67e4('0xd')](function(_0x1b5131){var _0xfd9771=_['find'](_0x1b5131['contacts']['contacts'],[_0x5badad,_0x234056]);_0x31efef(_0xfd9771);})[_0x67e4('0x13')](function(_0x2dcb36){_0x4941e7(_0x2dcb36);});});}function getEndUser(_0x51a224,_0x170554,_0x30ea83){return function(_0x219f57){return new Promise(function(_0x1bd528,_0x3e92b0){logger['info'](util[_0x67e4('0x24')](_0x67e4('0x25'),_0x219f57['contactNumber']));searchContact(_0x30ea83,_0x170554,_0x67e4('0x26'),_0x219f57[_0x67e4('0x27')])[_0x67e4('0xd')](function(_0x34c042){if(_0x34c042){_0x219f57[_0x67e4('0x28')]=_0x34c042['id'];logger['info'](_0x67e4('0x29'),_0x219f57[_0x67e4('0x28')]);return _0x1bd528(_0x219f57);}searchContact(_0x30ea83,_0x170554,_0x67e4('0x2a'),_0x219f57[_0x67e4('0x27')])[_0x67e4('0xd')](function(_0x2ed366){if(_0x2ed366){_0x219f57[_0x67e4('0x28')]=_0x2ed366['id'];logger['info'](_0x67e4('0x2b'),_0x219f57[_0x67e4('0x28')]);return _0x1bd528(_0x219f57);}createEndUser(_0x219f57,_0x51a224,_0x170554,_0x30ea83)[_0x67e4('0xd')](function(_0x1528a5){logger[_0x67e4('0xb')](_0x67e4('0x2c'),_0x1528a5[_0x67e4('0x28')]);return _0x1bd528(_0x1528a5);});});})[_0x67e4('0x13')](function(_0x5e2f0f){_0x3e92b0(_0x5e2f0f);});});};}function createEndUser(_0x66a21e,_0x4e4d55,_0x5b8048,_0x4106ab){return new Promise(function(_0xf35a89,_0x2dec42){var _0x1c06d2=moment();var _0x599a99={'method':_0x67e4('0x2d'),'uri':_0x4106ab+'/api/contacts','body':{'contact':{'last_name':_0x66a21e[_0x67e4('0x27')],'work_number':_0x66a21e['contactNumber'],'mobile_number':_0x66a21e[_0x67e4('0x27')],'owner_id':_0x66a21e['userId'],'created_at':_0x1c06d2['format'](_0x67e4('0x2e'))}},'json':!![]};_0x599a99[_0x67e4('0x17')]=_0x5b8048;logger['info'](_0x67e4('0x2f'));return rp(_0x599a99)[_0x67e4('0xd')](function(_0x1d2ba8){_0x66a21e[_0x67e4('0x28')]=_0x1d2ba8[_0x67e4('0x30')]['id'];_0xf35a89(_0x66a21e);})[_0x67e4('0x13')](function(_0x1eaffd){logger[_0x67e4('0x20')]('['+[_0x4e4d55[_0x67e4('0x14')]()]+']',_0x1eaffd['message']);_0x2dec42(_0x1eaffd[_0x67e4('0x15')]);});});}function getTicket(_0x2ff369,_0x13a5a8,_0x4888c1,_0x3200ca,_0x5330c1){return function(_0x127eb4){logger['info'](_0x67e4('0x31'));return new Promise(function(_0x353a4e,_0x4229c6){var _0x3ceb7b=moment();var _0x4a1a6a={'method':_0x67e4('0x2d'),'uri':_0x4888c1+_0x67e4('0x32'),'body':{'title':intUtil[_0x67e4('0x33')](_0x3200ca[_0x67e4('0x34')],_0x5330c1,'\x20'),'description':intUtil[_0x67e4('0x33')](_0x3200ca['Descriptions'],_0x5330c1,'\x0a'),'owner_id':_0x127eb4[_0x67e4('0x1c')],'creater_id':_0x127eb4[_0x67e4('0x10')],'targetable_id':_0x127eb4[_0x67e4('0x28')],'targetable_type':_0x67e4('0x35'),'created_at':_0x3ceb7b[_0x67e4('0x24')](_0x67e4('0x2e')),'due_date':_0x3ceb7b['add'](0x1e,'m')[_0x67e4('0x24')](_0x67e4('0x2e'))},'json':!![]};_0x4a1a6a[_0x67e4('0x17')]=_0x13a5a8;return rp(_0x4a1a6a)[_0x67e4('0xd')](function(_0x53b5d3){_0x127eb4[_0x67e4('0x36')]=_0x53b5d3[_0x67e4('0x37')]['id'];logger['info'](_0x67e4('0x38'),_0x127eb4[_0x67e4('0x36')]);_0x353a4e(_0x127eb4);})['catch'](function(_0x46e43a){logger[_0x67e4('0x20')]('['+[_0x2ff369[_0x67e4('0x14')]()]+']',_0x46e43a[_0x67e4('0x15')]);_0x4229c6(_0x46e43a[_0x67e4('0x15')]);});});};}function emit(_0x264c38,_0x3629db,_0x1c2702){var _0x5eb164={'uri':_0x264c38+_0x67e4('0x39')+_0x1c2702};io['to'](util[_0x67e4('0x24')]('user:%s',_0x3629db))[_0x67e4('0x3a')](_0x67e4('0x3b'),_0x5eb164);}exports['cs']=function(_0x3011ee,_0x405fae,_0x143532,_0x84f1f7,_0x29e41d,_0x10d7db,_0x466a3a,_0x2178f1){var _0x17864b={};var _0xca2a29={'Authorization':_0x67e4('0x3c')+_0x10d7db[_0x67e4('0x3d')]};_0x10d7db[_0x67e4('0x3e')]=intUtil[_0x67e4('0x3f')](_0x10d7db[_0x67e4('0x3e')]);_0x10d7db[_0x67e4('0x40')]=intUtil[_0x67e4('0x3f')](_0x10d7db[_0x67e4('0x40')]);var _0x585e30=_0x10d7db[_0x67e4('0x3e')];_0x17864b[_0x67e4('0x1f')]=_0x10d7db[_0x67e4('0x41')];_0x17864b[_0x67e4('0x27')]=_0x2178f1[_0x67e4('0x42')]()===_0x67e4('0x43')?_0x405fae['destcalleridnum']:_0x405fae[_0x67e4('0x44')];_0x17864b[_0x67e4('0x45')]=_0x2178f1===_0x67e4('0x46')||_0x2178f1===_0x67e4('0x47')?_0x67e4('0x46'):_0x67e4('0x43');if(_0x84f1f7){_0x17864b['agentEmail']=_0x84f1f7[_0x67e4('0xf')];}var _0x4608b8=util[_0x67e4('0x24')](_0x67e4('0x48'),_0x10d7db['serverUrl'],_0x405fae[_0x67e4('0x49')],md5(_0x405fae[_0x67e4('0x49')]));if(_0x29e41d&&_0x29e41d[_0x67e4('0x4a')]){logger[_0x67e4('0xb')](_0x67e4('0x4b'),_0x67e4('0x4c'));_0x405fae[_0x67e4('0x4d')]=_0x4608b8;}else if(_0x466a3a&&_0x466a3a[_0x67e4('0x4e')]&&_0x466a3a['recordingFormat']!==_0x67e4('0x4f')){logger['info'](_0x67e4('0x50'),_0x67e4('0x4c'));_0x405fae['recordingURL']=_0x4608b8;}else{_0x405fae[_0x67e4('0x4d')]='';}return getAdminId(_0x17864b,_0x2178f1,_0xca2a29,_0x585e30)['then'](getUser(_0x2178f1,_0xca2a29,_0x585e30))[_0x67e4('0xd')](getEndUser(_0x2178f1,_0xca2a29,_0x585e30))[_0x67e4('0xd')](getTicket(_0x2178f1,_0xca2a29,_0x585e30,_0x143532,_0x405fae))['then'](function(_0x2856a7){logger['info'](util[_0x67e4('0x24')](_0x67e4('0x51'),_0x2856a7[_0x67e4('0x36')]));if(_0x2178f1!==_0x67e4('0x47')){logger[_0x67e4('0xb')]('['+[_0x2178f1[_0x67e4('0x14')]()]+']',_0x67e4('0x52'));emit(_0x585e30,_0x84f1f7[_0x67e4('0x53')],_0x2856a7[_0x67e4('0x28')]);}})[_0x67e4('0x13')](function(_0x159030){logger[_0x67e4('0x20')]('['+[_0x2178f1[_0x67e4('0x14')]()]+_0x67e4('0x54'),util[_0x67e4('0x55')](_0x159030,{'showHidden':!![],'depth':null}));});};