Built motion from commit (unavailable).|2.5.26
[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 _0x05bc=['recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','request-promise','util','moment','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','adminId','/api/lookup?q=','&f=','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Recording\x20is\x20enabled!'];(function(_0x5ecadc,_0x1cf9f1){var _0x565037=function(_0x22908b){while(--_0x22908b){_0x5ecadc['push'](_0x5ecadc['shift']());}};_0x565037(++_0x1cf9f1);}(_0x05bc,0xae));var _0xc05b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x05bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var rp=require(_0xc05b('0x0'));var md5=require('md5');var util=require(_0xc05b('0x1'));var moment=require(_0xc05b('0x2'));var Promise=require('bluebird');var Redis=require(_0xc05b('0x3'));var intUtil=require(_0xc05b('0x4'));var config=require(_0xc05b('0x5'));var logger=require(_0xc05b('0x6'))(_0xc05b('0x7'));config[_0xc05b('0x8')]=_[_0xc05b('0x9')](config[_0xc05b('0x8')],{'host':_0xc05b('0xa'),'port':0x18eb});var io=require(_0xc05b('0xb'))(new Redis(config[_0xc05b('0x8')]));function getAdminId(_0x143ba4,_0x45245b,_0x2b6c75,_0x5c13ee){return new Promise(function(_0x5d72b9,_0x2e0ae1){var _0x430531=![];var _0x376e79={'method':_0xc05b('0xc'),'uri':_0x5c13ee+_0xc05b('0xd'),'json':!![]};_0x376e79[_0xc05b('0xe')]=_0x2b6c75;logger[_0xc05b('0xf')](_0xc05b('0x10'));return rp(_0x376e79)[_0xc05b('0x11')](function(_0x5a7ad0){if(_0x5a7ad0){var _0x2976c2=_0x5a7ad0[_0xc05b('0x12')];var _0x12c7ec=null;for(_0x12c7ec=0x0;_0x12c7ec<_0x2976c2[_0xc05b('0x13')];_0x12c7ec++){if(_0x2976c2[_0x12c7ec][_0xc05b('0x14')]===_0x143ba4[_0xc05b('0x15')]){_0x143ba4['adminId']=_0x2976c2[_0x12c7ec]['id'];_0x430531=!![];}}if(_0x430531){logger[_0xc05b('0xf')](_0xc05b('0x16'),_0x143ba4['adminId']);_0x5d72b9(_0x143ba4);}else{_0x2e0ae1({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x2e0ae1({'statusCode':0x194,'message':_0xc05b('0x17')});}})[_0xc05b('0x18')](function(_0x5ce354){logger[_0xc05b('0x19')]('['+[_0x45245b[_0xc05b('0x1a')]()]+']',_0x5ce354[_0xc05b('0x1b')]);_0x2e0ae1(_0x5ce354);});});}function getUser(_0xe94a8f,_0x5a33c1,_0x42395b){return function(_0x13c79f){return new Promise(function(_0xee4d8,_0x421cb){var _0x1cba94={'method':_0xc05b('0xc'),'uri':_0x42395b+'/api/selector/owners','json':!![]};_0x1cba94[_0xc05b('0xe')]=_0x5a33c1;logger['info'](_0xc05b('0x1c'));return rp(_0x1cba94)[_0xc05b('0x11')](function(_0x45d561){if(_0x45d561){var _0x12dcd5=_0x45d561[_0xc05b('0x12')];var _0x48c36e=![];var _0x10eb99=null;if(_0x13c79f[_0xc05b('0x1d')]!==null){logger[_0xc05b('0xf')](_0xc05b('0x1e'),_0x13c79f['agentEmail']);_0x13c79f[_0xc05b('0x1f')]=_0x13c79f[_0xc05b('0x1d')];for(_0x10eb99=0x0;_0x10eb99<_0x12dcd5[_0xc05b('0x13')];_0x10eb99++){if(_0x12dcd5[_0x10eb99][_0xc05b('0x14')]===_0x13c79f[_0xc05b('0x1d')]){_0x48c36e=!![];_0x13c79f[_0xc05b('0x20')]=_0x12dcd5[_0x10eb99]['id'];logger['info']('User\x20found:',_0x13c79f[_0xc05b('0x20')]);}}}if(!_0x48c36e){logger[_0xc05b('0xf')]('Admin\x20selected');_0x13c79f[_0xc05b('0x1f')]=_0x13c79f['adminEmail'];_0x13c79f['userId']=_0x13c79f[_0xc05b('0x21')];_0x48c36e=!![];}if(_0x48c36e){_0xee4d8(_0x13c79f);}else{_0x421cb({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x421cb({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x3a085f){logger['error']('['+[_0xe94a8f[_0xc05b('0x1a')]()]+']',_0x3a085f[_0xc05b('0x1b')]);_0x421cb(_0x3a085f);});});};}function searchContact(_0x4d1fd4,_0x337cc1,_0x395baa,_0x444a55){return new Promise(function(_0x3e26c4,_0x23a937){var _0xeb6d8b={'method':_0xc05b('0xc'),'headers':_0x337cc1,'uri':_0x4d1fd4+_0xc05b('0x22')+_0x444a55+_0xc05b('0x23')+_0x395baa+_0xc05b('0x24'),'json':!![]};rp(_0xeb6d8b)[_0xc05b('0x11')](function(_0x35f8f7){var _0x4fbdc7=_[_0xc05b('0x25')](_0x35f8f7['contacts'][_0xc05b('0x26')],[_0x395baa,_0x444a55]);_0x3e26c4(_0x4fbdc7);})['catch'](function(_0x580d43){_0x23a937(_0x580d43);});});}function getEndUser(_0x78333,_0x772f50,_0x1c39d5){return function(_0x48366c){return new Promise(function(_0x884fcb,_0x4deec8){logger['info'](util['format'](_0xc05b('0x27'),_0x48366c[_0xc05b('0x28')]));searchContact(_0x1c39d5,_0x772f50,_0xc05b('0x29'),_0x48366c['contactNumber'])[_0xc05b('0x11')](function(_0x1601e3){if(_0x1601e3){_0x48366c[_0xc05b('0x2a')]=_0x1601e3['id'];logger[_0xc05b('0xf')]('Contact\x20found\x20mobile_number:',_0x48366c[_0xc05b('0x2a')]);return _0x884fcb(_0x48366c);}searchContact(_0x1c39d5,_0x772f50,_0xc05b('0x2b'),_0x48366c[_0xc05b('0x28')])['then'](function(_0x3e3309){if(_0x3e3309){_0x48366c[_0xc05b('0x2a')]=_0x3e3309['id'];logger['info'](_0xc05b('0x2c'),_0x48366c[_0xc05b('0x2a')]);return _0x884fcb(_0x48366c);}createEndUser(_0x48366c,_0x78333,_0x772f50,_0x1c39d5)['then'](function(_0x497589){logger[_0xc05b('0xf')](_0xc05b('0x2d'),_0x497589[_0xc05b('0x2a')]);return _0x884fcb(_0x497589);});});})[_0xc05b('0x18')](function(_0x549899){_0x4deec8(_0x549899);});});};}function createEndUser(_0x19cff2,_0x4883c2,_0xea8bc4,_0x2239aa){return new Promise(function(_0x11cfbc,_0x98ecbd){var _0x5744c1=moment();var _0x7fa59d={'method':_0xc05b('0x2e'),'uri':_0x2239aa+'/api/contacts','body':{'contact':{'last_name':_0x19cff2['contactNumber'],'work_number':_0x19cff2[_0xc05b('0x28')],'mobile_number':_0x19cff2[_0xc05b('0x28')],'owner_id':_0x19cff2[_0xc05b('0x20')],'created_at':_0x5744c1[_0xc05b('0x2f')](_0xc05b('0x30'))}},'json':!![]};_0x7fa59d['headers']=_0xea8bc4;logger[_0xc05b('0xf')](_0xc05b('0x31'));return rp(_0x7fa59d)[_0xc05b('0x11')](function(_0x4b858e){_0x19cff2['endUserId']=_0x4b858e['contact']['id'];_0x11cfbc(_0x19cff2);})[_0xc05b('0x18')](function(_0x56ba68){logger[_0xc05b('0x19')]('['+[_0x4883c2['toUpperCase']()]+']',_0x56ba68[_0xc05b('0x1b')]);_0x98ecbd(_0x56ba68[_0xc05b('0x1b')]);});});}function getTicket(_0x2bb4c0,_0x1222a8,_0x5bf0b5,_0x53bc46,_0x2aa4b8){return function(_0x4b3150){logger[_0xc05b('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x249a9d,_0x1f6ecb){var _0x4fd1d2=moment();var _0x3697ff={'method':_0xc05b('0x2e'),'uri':_0x5bf0b5+_0xc05b('0x32'),'body':{'title':intUtil[_0xc05b('0x33')](_0x53bc46[_0xc05b('0x34')],_0x2aa4b8,'\x20'),'description':intUtil[_0xc05b('0x33')](_0x53bc46[_0xc05b('0x35')],_0x2aa4b8,'\x0a'),'owner_id':_0x4b3150[_0xc05b('0x20')],'creater_id':_0x4b3150[_0xc05b('0x21')],'targetable_id':_0x4b3150[_0xc05b('0x2a')],'targetable_type':_0xc05b('0x36'),'created_at':_0x4fd1d2['format'](_0xc05b('0x30')),'due_date':_0x4fd1d2[_0xc05b('0x37')](0x1e,'m')[_0xc05b('0x2f')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x3697ff[_0xc05b('0xe')]=_0x1222a8;return rp(_0x3697ff)[_0xc05b('0x11')](function(_0x47754d){_0x4b3150[_0xc05b('0x38')]=_0x47754d['task']['id'];logger[_0xc05b('0xf')](_0xc05b('0x39'),_0x4b3150['ticketId']);_0x249a9d(_0x4b3150);})[_0xc05b('0x18')](function(_0x41a78d){logger[_0xc05b('0x19')]('['+[_0x2bb4c0['toUpperCase']()]+']',_0x41a78d[_0xc05b('0x1b')]);_0x1f6ecb(_0x41a78d[_0xc05b('0x1b')]);});});};}function emit(_0x2cabd4,_0x828b23,_0x48a388){var _0x6fef0c={'uri':_0x2cabd4+_0xc05b('0x3a')+_0x48a388};io['to'](util['format'](_0xc05b('0x3b'),_0x828b23))[_0xc05b('0x3c')](_0xc05b('0x3d'),_0x6fef0c);}exports['cs']=function(_0x1851c8,_0x1f6d8a,_0x4a3f98,_0x2bc814,_0x10842e,_0x28ca5f,_0x216d41,_0xea513b){var _0x45467={};var _0xe7e2a3={'Authorization':'Token\x20token='+_0x28ca5f[_0xc05b('0x3e')]};_0x28ca5f[_0xc05b('0x3f')]=intUtil[_0xc05b('0x40')](_0x28ca5f[_0xc05b('0x3f')]);_0x28ca5f[_0xc05b('0x41')]=intUtil[_0xc05b('0x40')](_0x28ca5f['serverUrl']);var _0x316469=_0x28ca5f[_0xc05b('0x3f')];_0x45467['adminEmail']=_0x28ca5f[_0xc05b('0x42')];_0x45467[_0xc05b('0x28')]=_0xea513b[_0xc05b('0x43')]()===_0xc05b('0x44')?_0x1f6d8a['destcalleridnum']:_0x1f6d8a['calleridnum'];_0x45467[_0xc05b('0x45')]=_0xea513b===_0xc05b('0x46')||_0xea513b===_0xc05b('0x47')?_0xc05b('0x46'):'outbound';if(_0x2bc814){_0x45467[_0xc05b('0x1d')]=_0x2bc814['email'];}var _0x4cd1b9=util[_0xc05b('0x2f')](_0xc05b('0x48'),_0x28ca5f[_0xc05b('0x41')],_0x1f6d8a[_0xc05b('0x49')],md5(_0x1f6d8a[_0xc05b('0x49')]));if(_0x10842e&&_0x10842e['monitor_format']){logger[_0xc05b('0xf')]('[QUEUE]',_0xc05b('0x4a'));_0x1f6d8a[_0xc05b('0x4b')]=_0x4cd1b9;}else if(_0x216d41&&_0x216d41[_0xc05b('0x4c')]&&_0x216d41['recordingFormat']!==_0xc05b('0x4d')){logger[_0xc05b('0xf')](_0xc05b('0x4e'),_0xc05b('0x4a'));_0x1f6d8a[_0xc05b('0x4b')]=_0x4cd1b9;}else{_0x1f6d8a[_0xc05b('0x4b')]='';}return getAdminId(_0x45467,_0xea513b,_0xe7e2a3,_0x316469)[_0xc05b('0x11')](getUser(_0xea513b,_0xe7e2a3,_0x316469))['then'](getEndUser(_0xea513b,_0xe7e2a3,_0x316469))[_0xc05b('0x11')](getTicket(_0xea513b,_0xe7e2a3,_0x316469,_0x4a3f98,_0x1f6d8a))[_0xc05b('0x11')](function(_0x2d2085){logger[_0xc05b('0xf')](util['format'](_0xc05b('0x4f'),_0x2d2085[_0xc05b('0x38')]));if(_0xea513b!=='unmanaged'){logger[_0xc05b('0xf')]('['+[_0xea513b[_0xc05b('0x1a')]()]+']',_0xc05b('0x50'));emit(_0x316469,_0x2bc814[_0xc05b('0x51')],_0x2d2085['endUserId']);}})[_0xc05b('0x18')](function(_0x4b0427){logger['error']('['+[_0xea513b[_0xc05b('0x1a')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xc05b('0x52')](_0x4b0427,{'showHidden':!![],'depth':null}));});};