27045d6026164e266afdf23393bf828027626faf
[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 _0x68f5=['/api/lookup?q=','&f=','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','add','task','ticketId','/contacts/','emit','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','outbound','destcalleridnum','calleridnum','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...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','freshsales','redis','defaults','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:'];(function(_0x5f1069,_0x24a01e){var _0x588ef0=function(_0x328160){while(--_0x328160){_0x5f1069['push'](_0x5f1069['shift']());}};_0x588ef0(++_0x24a01e);}(_0x68f5,0x11a));var _0x568f=function(_0xa3a31f,_0x19333d){_0xa3a31f=_0xa3a31f-0x0;var _0x103d0f=_0x68f5[_0xa3a31f];return _0x103d0f;};'use strict';var _=require(_0x568f('0x0'));var rp=require(_0x568f('0x1'));var md5=require(_0x568f('0x2'));var util=require('util');var moment=require(_0x568f('0x3'));var Promise=require(_0x568f('0x4'));var Redis=require(_0x568f('0x5'));var intUtil=require(_0x568f('0x6'));var config=require(_0x568f('0x7'));var logger=require('../../../../config/logger')(_0x568f('0x8'));config[_0x568f('0x9')]=_[_0x568f('0xa')](config[_0x568f('0x9')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x568f('0x9')]));function getAdminId(_0x3568a0,_0x2492fc,_0x5cbbc2,_0x1d8fa8){return new Promise(function(_0x48fe85,_0x2b126f){var _0x353547=![];var _0x570cc4={'method':_0x568f('0xb'),'uri':_0x1d8fa8+_0x568f('0xc'),'json':!![]};_0x570cc4[_0x568f('0xd')]=_0x5cbbc2;logger[_0x568f('0xe')](_0x568f('0xf'));return rp(_0x570cc4)[_0x568f('0x10')](function(_0x471f6c){if(_0x471f6c){var _0x18937=_0x471f6c[_0x568f('0x11')];var _0x4acf24=null;for(_0x4acf24=0x0;_0x4acf24<_0x18937[_0x568f('0x12')];_0x4acf24++){if(_0x18937[_0x4acf24][_0x568f('0x13')]===_0x3568a0[_0x568f('0x14')]){_0x3568a0[_0x568f('0x15')]=_0x18937[_0x4acf24]['id'];_0x353547=!![];}}if(_0x353547){logger['info'](_0x568f('0x16'),_0x3568a0['adminId']);_0x48fe85(_0x3568a0);}else{_0x2b126f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x2b126f({'statusCode':0x194,'message':_0x568f('0x17')});}})[_0x568f('0x18')](function(_0x47316e){logger[_0x568f('0x19')]('['+[_0x2492fc[_0x568f('0x1a')]()]+']',_0x47316e[_0x568f('0x1b')]);_0x2b126f(_0x47316e);});});}function getUser(_0x1d15e1,_0x1060cb,_0x19bab9){return function(_0x3d9645){return new Promise(function(_0x3de993,_0x49b64e){var _0x372490={'method':_0x568f('0xb'),'uri':_0x19bab9+_0x568f('0xc'),'json':!![]};_0x372490[_0x568f('0xd')]=_0x1060cb;logger[_0x568f('0xe')](_0x568f('0x1c'));return rp(_0x372490)[_0x568f('0x10')](function(_0xa11708){if(_0xa11708){var _0x2ff17b=_0xa11708[_0x568f('0x11')];var _0x1a09a9=![];var _0x22c4e0=null;if(_0x3d9645[_0x568f('0x1d')]!==null){logger[_0x568f('0xe')](_0x568f('0x1e'),_0x3d9645[_0x568f('0x1d')]);_0x3d9645[_0x568f('0x1f')]=_0x3d9645[_0x568f('0x1d')];for(_0x22c4e0=0x0;_0x22c4e0<_0x2ff17b[_0x568f('0x12')];_0x22c4e0++){if(_0x2ff17b[_0x22c4e0][_0x568f('0x13')]===_0x3d9645[_0x568f('0x1d')]){_0x1a09a9=!![];_0x3d9645[_0x568f('0x20')]=_0x2ff17b[_0x22c4e0]['id'];logger[_0x568f('0xe')](_0x568f('0x21'),_0x3d9645[_0x568f('0x20')]);}}}if(!_0x1a09a9){logger[_0x568f('0xe')]('Admin\x20selected');_0x3d9645['userEmail']=_0x3d9645[_0x568f('0x14')];_0x3d9645[_0x568f('0x20')]=_0x3d9645[_0x568f('0x15')];_0x1a09a9=!![];}if(_0x1a09a9){_0x3de993(_0x3d9645);}else{_0x49b64e({'statusCode':0x194,'message':_0x568f('0x17')});}}else{_0x49b64e({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x3de8ce){logger['error']('['+[_0x1d15e1['toUpperCase']()]+']',_0x3de8ce['message']);_0x49b64e(_0x3de8ce);});});};}function searchContact(_0x38438f,_0x4e7854,_0x567973,_0x5f0b05){return new Promise(function(_0x2fb124,_0x2ff19b){var _0x182a1f={'method':'GET','headers':_0x4e7854,'uri':_0x38438f+_0x568f('0x22')+_0x5f0b05+_0x568f('0x23')+_0x567973+'&entities=contact','json':!![]};rp(_0x182a1f)[_0x568f('0x10')](function(_0x524dea){var _0x384960=_['find'](_0x524dea['contacts'][_0x568f('0x24')],[_0x567973,_0x5f0b05]);_0x2fb124(_0x384960);})[_0x568f('0x18')](function(_0x1f6215){_0x2ff19b(_0x1f6215);});});}function getEndUser(_0x1a2cc1,_0x1e90bf,_0x242f9f){return function(_0x12fa6f){return new Promise(function(_0x3ab4a8,_0x5f3dff){logger[_0x568f('0xe')](util[_0x568f('0x25')](_0x568f('0x26'),_0x12fa6f[_0x568f('0x27')]));searchContact(_0x242f9f,_0x1e90bf,'mobile_number',_0x12fa6f[_0x568f('0x27')])[_0x568f('0x10')](function(_0x44d573){if(_0x44d573){_0x12fa6f[_0x568f('0x28')]=_0x44d573['id'];logger[_0x568f('0xe')](_0x568f('0x29'),_0x12fa6f[_0x568f('0x28')]);return _0x3ab4a8(_0x12fa6f);}searchContact(_0x242f9f,_0x1e90bf,'work_number',_0x12fa6f[_0x568f('0x27')])[_0x568f('0x10')](function(_0x3f1294){if(_0x3f1294){_0x12fa6f[_0x568f('0x28')]=_0x3f1294['id'];logger[_0x568f('0xe')]('Contact\x20found\x20work_number:',_0x12fa6f['endUserId']);return _0x3ab4a8(_0x12fa6f);}createEndUser(_0x12fa6f,_0x1a2cc1,_0x1e90bf,_0x242f9f)[_0x568f('0x10')](function(_0x3ba724){logger[_0x568f('0xe')](_0x568f('0x2a'),_0x3ba724[_0x568f('0x28')]);return _0x3ab4a8(_0x3ba724);});});})['catch'](function(_0x2f78f3){_0x5f3dff(_0x2f78f3);});});};}function createEndUser(_0x3ca904,_0x1dbea5,_0x3d300c,_0x282b13){return new Promise(function(_0x26961a,_0x8e2e8f){var _0xf878be=moment();var _0x10787d={'method':_0x568f('0x2b'),'uri':_0x282b13+_0x568f('0x2c'),'body':{'contact':{'last_name':_0x3ca904[_0x568f('0x27')],'work_number':_0x3ca904[_0x568f('0x27')],'mobile_number':_0x3ca904[_0x568f('0x27')],'owner_id':_0x3ca904[_0x568f('0x20')],'created_at':_0xf878be['format'](_0x568f('0x2d'))}},'json':!![]};_0x10787d['headers']=_0x3d300c;logger['info'](_0x568f('0x2e'));return rp(_0x10787d)['then'](function(_0xc450db){_0x3ca904[_0x568f('0x28')]=_0xc450db['contact']['id'];_0x26961a(_0x3ca904);})[_0x568f('0x18')](function(_0x402c18){logger[_0x568f('0x19')]('['+[_0x1dbea5[_0x568f('0x1a')]()]+']',_0x402c18[_0x568f('0x1b')]);_0x8e2e8f(_0x402c18['message']);});});}function getTicket(_0x45aa78,_0x26994e,_0x4dc96c,_0x493bbc,_0x5f184e){return function(_0x4e1da0){logger[_0x568f('0xe')](_0x568f('0x2f'));return new Promise(function(_0x3366e1,_0xead285){var _0x2b2a0e=moment();var _0x4cdc7a={'method':_0x568f('0x2b'),'uri':_0x4dc96c+_0x568f('0x30'),'body':{'title':intUtil[_0x568f('0x31')](_0x493bbc['Subjects'],_0x5f184e,'\x20'),'description':intUtil['getString'](_0x493bbc[_0x568f('0x32')],_0x5f184e,'\x0a'),'owner_id':_0x4e1da0['userId'],'creater_id':_0x4e1da0[_0x568f('0x15')],'targetable_id':_0x4e1da0[_0x568f('0x28')],'targetable_type':'Contact','created_at':_0x2b2a0e[_0x568f('0x25')](_0x568f('0x2d')),'due_date':_0x2b2a0e[_0x568f('0x33')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x4cdc7a[_0x568f('0xd')]=_0x26994e;return rp(_0x4cdc7a)[_0x568f('0x10')](function(_0x5530fb){_0x4e1da0['ticketId']=_0x5530fb[_0x568f('0x34')]['id'];logger[_0x568f('0xe')]('Task\x20created:',_0x4e1da0[_0x568f('0x35')]);_0x3366e1(_0x4e1da0);})['catch'](function(_0x2bdabb){logger['error']('['+[_0x45aa78[_0x568f('0x1a')]()]+']',_0x2bdabb[_0x568f('0x1b')]);_0xead285(_0x2bdabb[_0x568f('0x1b')]);});});};}function emit(_0xb9172,_0x4ded77,_0x45e453){var _0x5d5210={'uri':_0xb9172+_0x568f('0x36')+_0x45e453};io['to'](util['format']('user:%s',_0x4ded77))[_0x568f('0x37')]('trigger:browser:url',_0x5d5210);}exports['cs']=function(_0x210ee9,_0x26da1a,_0x597c5d,_0x374218,_0x18dd1b,_0x201861,_0x4fa4a4,_0x3e85a8){var _0x1fe7c5={};var _0x46972e={'Authorization':_0x568f('0x38')+_0x201861['apiKey']};_0x201861[_0x568f('0x39')]=intUtil[_0x568f('0x3a')](_0x201861['remoteUri']);_0x201861[_0x568f('0x3b')]=intUtil[_0x568f('0x3a')](_0x201861[_0x568f('0x3b')]);var _0x2452d2=_0x201861[_0x568f('0x39')];_0x1fe7c5['adminEmail']=_0x201861[_0x568f('0x3c')];_0x1fe7c5['contactNumber']=_0x3e85a8['toLowerCase']()===_0x568f('0x3d')?_0x26da1a[_0x568f('0x3e')]:_0x26da1a[_0x568f('0x3f')];_0x1fe7c5['callDirection']=_0x3e85a8===_0x568f('0x40')||_0x3e85a8===_0x568f('0x41')?'queue':_0x568f('0x3d');if(_0x374218){_0x1fe7c5['agentEmail']=_0x374218[_0x568f('0x13')];}var _0x146dc8=util[_0x568f('0x25')](_0x568f('0x42'),_0x201861[_0x568f('0x3b')],_0x26da1a[_0x568f('0x43')],md5(_0x26da1a[_0x568f('0x43')]));if(_0x18dd1b&&_0x18dd1b[_0x568f('0x44')]){logger[_0x568f('0xe')](_0x568f('0x45'),_0x568f('0x46'));_0x26da1a[_0x568f('0x47')]=_0x146dc8;}else if(_0x4fa4a4&&_0x4fa4a4['recordingFormat']&&_0x4fa4a4[_0x568f('0x48')]!==_0x568f('0x49')){logger[_0x568f('0xe')](_0x568f('0x4a'),_0x568f('0x46'));_0x26da1a[_0x568f('0x47')]=_0x146dc8;}else{_0x26da1a[_0x568f('0x47')]='';}return getAdminId(_0x1fe7c5,_0x3e85a8,_0x46972e,_0x2452d2)['then'](getUser(_0x3e85a8,_0x46972e,_0x2452d2))[_0x568f('0x10')](getEndUser(_0x3e85a8,_0x46972e,_0x2452d2))[_0x568f('0x10')](getTicket(_0x3e85a8,_0x46972e,_0x2452d2,_0x597c5d,_0x26da1a))[_0x568f('0x10')](function(_0x5ccd28){logger[_0x568f('0xe')](util[_0x568f('0x25')](_0x568f('0x4b'),_0x5ccd28[_0x568f('0x35')]));if(_0x3e85a8!==_0x568f('0x41')){logger[_0x568f('0xe')]('['+[_0x3e85a8[_0x568f('0x1a')]()]+']',_0x568f('0x4c'));emit(_0x2452d2,_0x374218['name'],_0x5ccd28[_0x568f('0x28')]);}})[_0x568f('0x18')](function(_0x1b22ae){logger['error']('['+[_0x3e85a8[_0x568f('0x1a')]()]+_0x568f('0x4d'),util[_0x568f('0x4e')](_0x1b22ae,{'showHidden':!![],'depth':null}));});};