e3b35e33ac6153592bcffe0f112a13cff340d5cd
[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 _0x5350=['Descriptions','Contact','add','task','Task\x20created:','ticketId','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','outbound','destcalleridnum','calleridnum','callDirection','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','request-promise','md5','util','moment','bluebird','./util','../../../../config/environment','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','users','length','adminEmail','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','User\x20found:','Admin\x20selected','adminId','Getting\x20contacts\x20filter','then','filters','forEach','name','All\x20Contacts','Getting\x20contact\x20list','/api/contacts/view/','Searching\x20contact\x20with\x20phone','contacts','find','work_number','contactNumber','mobile_number','endUserId','Contact\x20created:','/api/contacts','userId','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects'];(function(_0x5153c0,_0x4dd5ba){var _0xfb156c=function(_0x184931){while(--_0x184931){_0x5153c0['push'](_0x5153c0['shift']());}};_0xfb156c(++_0x4dd5ba);}(_0x5350,0x78));var _0x0535=function(_0x37e766,_0x471645){_0x37e766=_0x37e766-0x0;var _0x4646d3=_0x5350[_0x37e766];return _0x4646d3;};'use strict';var _=require(_0x0535('0x0'));var rp=require(_0x0535('0x1'));var md5=require(_0x0535('0x2'));var util=require(_0x0535('0x3'));var moment=require(_0x0535('0x4'));var Promise=require(_0x0535('0x5'));var Redis=require('ioredis');var intUtil=require(_0x0535('0x6'));var config=require(_0x0535('0x7'));var logger=require('../../../../config/logger')(_0x0535('0x8'));config[_0x0535('0x9')]=_[_0x0535('0xa')](config[_0x0535('0x9')],{'host':_0x0535('0xb'),'port':0x18eb});var io=require(_0x0535('0xc'))(new Redis(config['redis']));function getAdminId(_0x5be6ed,_0x16d5f0,_0x38911a,_0x5b4275){return new Promise(function(_0x183f37,_0x386743){var _0x6bde2b=![];var _0x4a06d0={'method':_0x0535('0xd'),'uri':_0x5b4275+_0x0535('0xe'),'json':!![]};_0x4a06d0[_0x0535('0xf')]=_0x38911a;logger[_0x0535('0x10')](_0x0535('0x11'));return rp(_0x4a06d0)['then'](function(_0x2507a8){if(_0x2507a8){var _0x441e67=_0x2507a8[_0x0535('0x12')];var _0x2d5259=null;for(_0x2d5259=0x0;_0x2d5259<_0x441e67[_0x0535('0x13')];_0x2d5259++){if(_0x441e67[_0x2d5259]['email']===_0x5be6ed[_0x0535('0x14')]){_0x5be6ed['adminId']=_0x441e67[_0x2d5259]['id'];_0x6bde2b=!![];}}if(_0x6bde2b){logger[_0x0535('0x10')](_0x0535('0x15'),_0x5be6ed['adminId']);_0x183f37(_0x5be6ed);}else{_0x386743({'statusCode':0x194,'message':_0x0535('0x16')});}}else{_0x386743({'statusCode':0x194,'message':_0x0535('0x16')});}})[_0x0535('0x17')](function(_0x2d0fca){logger[_0x0535('0x18')]('['+[_0x16d5f0[_0x0535('0x19')]()]+']',_0x2d0fca[_0x0535('0x1a')]);_0x386743(_0x2d0fca);});});}function getUser(_0x48efa4,_0x2bcae4,_0x539a78){return function(_0x562016){return new Promise(function(_0x52f532,_0x4745ff){var _0x3d4014={'method':_0x0535('0xd'),'uri':_0x539a78+_0x0535('0xe'),'json':!![]};_0x3d4014[_0x0535('0xf')]=_0x2bcae4;logger[_0x0535('0x10')](_0x0535('0x1b'));return rp(_0x3d4014)['then'](function(_0x41f572){if(_0x41f572){var _0x268db1=_0x41f572['users'];var _0x4dc893=![];var _0x28ab05=null;if(_0x562016[_0x0535('0x1c')]!==null){logger[_0x0535('0x10')](_0x0535('0x1d'),_0x562016['agentEmail']);_0x562016[_0x0535('0x1e')]=_0x562016[_0x0535('0x1c')];for(_0x28ab05=0x0;_0x28ab05<_0x268db1[_0x0535('0x13')];_0x28ab05++){if(_0x268db1[_0x28ab05][_0x0535('0x1f')]===_0x562016[_0x0535('0x1c')]){_0x4dc893=!![];_0x562016['userId']=_0x268db1[_0x28ab05]['id'];logger[_0x0535('0x10')](_0x0535('0x20'),_0x562016['userId']);}}}if(!_0x4dc893){logger[_0x0535('0x10')](_0x0535('0x21'));_0x562016[_0x0535('0x1e')]=_0x562016[_0x0535('0x14')];_0x562016['userId']=_0x562016[_0x0535('0x22')];_0x4dc893=!![];}if(_0x4dc893){_0x52f532(_0x562016);}else{_0x4745ff({'statusCode':0x194,'message':_0x0535('0x16')});}}else{_0x4745ff({'statusCode':0x194,'message':_0x0535('0x16')});}})[_0x0535('0x17')](function(_0x10d157){logger[_0x0535('0x18')]('['+[_0x48efa4[_0x0535('0x19')]()]+']',_0x10d157['message']);_0x4745ff(_0x10d157);});});};}function getEndUser(_0xe0972c,_0x434032,_0x2e77ae){return function(_0x1d1556){return new Promise(function(_0x4a3f72,_0x47d7d1){var _0xad60b2=0x0;var _0x11fa6d={'method':'GET','uri':_0x2e77ae+'/api/contacts/filters','json':!![]};_0x11fa6d[_0x0535('0xf')]=_0x434032;logger[_0x0535('0x10')](_0x0535('0x23'));return rp(_0x11fa6d)[_0x0535('0x24')](function(_0x1561d1){_0x1561d1[_0x0535('0x25')][_0x0535('0x26')](function(_0x20467e){if(_0x20467e[_0x0535('0x27')]===_0x0535('0x28')){_0xad60b2=_0x20467e['id'];}});})[_0x0535('0x24')](function(){logger[_0x0535('0x10')](_0x0535('0x29'));var _0x1be73a={'method':_0x0535('0xd'),'uri':_0x2e77ae+_0x0535('0x2a')+_0xad60b2,'json':!![]};_0x1be73a[_0x0535('0xf')]=_0x434032;return rp(_0x1be73a);})[_0x0535('0x24')](function(_0x4cb945){logger[_0x0535('0x10')](_0x0535('0x2b'),_0x1d1556['contactNumber']);if(_0x4cb945[_0x0535('0x2c')][_0x0535('0x13')]>0x0){var _0x434629=_[_0x0535('0x2d')](_0x4cb945[_0x0535('0x2c')],function(_0x566aeb){if(_0x566aeb[_0x0535('0x2e')]===_0x1d1556[_0x0535('0x2f')]||_0x566aeb[_0x0535('0x30')]===_0x1d1556[_0x0535('0x2f')]){return _0x566aeb;}});if(_0x434629){_0x1d1556[_0x0535('0x31')]=_0x434629['id'];logger[_0x0535('0x10')]('Contact\x20found:',_0x1d1556['endUserId']);_0x4a3f72(_0x1d1556);}else{return createEndUser(_0x1d1556,_0xe0972c,_0x434032,_0x2e77ae)[_0x0535('0x24')](function(_0x722d2){logger[_0x0535('0x10')](_0x0535('0x32'),_0x1d1556[_0x0535('0x31')]);_0x4a3f72(_0x722d2);});}}else{return createEndUser(_0x1d1556,_0xe0972c,_0x434032,_0x2e77ae)['then'](function(_0x1d932b){logger[_0x0535('0x10')](_0x0535('0x32'),_0x1d1556[_0x0535('0x31')]);_0x4a3f72(_0x1d932b);});}})[_0x0535('0x17')](function(_0x28becd){throw new Error(_0x28becd['message']);});});};}function createEndUser(_0x5df53e,_0x3b85a3,_0x2236af,_0x43dde5){return new Promise(function(_0x23190c,_0xac065f){var _0x303bd0=moment();var _0x257e33={'method':'POST','uri':_0x43dde5+_0x0535('0x33'),'body':{'contact':{'last_name':_0x5df53e[_0x0535('0x2f')],'work_number':_0x5df53e['contactNumber'],'mobile_number':_0x5df53e[_0x0535('0x2f')],'owner_id':_0x5df53e[_0x0535('0x34')],'created_at':_0x303bd0[_0x0535('0x35')](_0x0535('0x36'))}},'json':!![]};_0x257e33[_0x0535('0xf')]=_0x2236af;logger['info'](_0x0535('0x37'));return rp(_0x257e33)['then'](function(_0x56318a){_0x5df53e[_0x0535('0x31')]=_0x56318a[_0x0535('0x38')]['id'];_0x23190c(_0x5df53e);})['catch'](function(_0x8260c7){logger[_0x0535('0x18')]('['+[_0x3b85a3['toUpperCase']()]+']',_0x8260c7[_0x0535('0x1a')]);_0xac065f(_0x8260c7['message']);});});}function getTicket(_0x56885c,_0x3db580,_0x155a4b,_0x2ab203,_0x8532b8){return function(_0x5871b5){logger[_0x0535('0x10')](_0x0535('0x39'));return new Promise(function(_0x40f13d,_0x3a9c7c){var _0x4a0341=moment();var _0x51fa32={'method':_0x0535('0x3a'),'uri':_0x155a4b+_0x0535('0x3b'),'body':{'title':intUtil[_0x0535('0x3c')](_0x2ab203[_0x0535('0x3d')],_0x8532b8,'\x20'),'description':intUtil[_0x0535('0x3c')](_0x2ab203[_0x0535('0x3e')],_0x8532b8,'\x0a'),'owner_id':_0x5871b5['userId'],'creater_id':_0x5871b5[_0x0535('0x22')],'targetable_id':_0x5871b5[_0x0535('0x31')],'targetable_type':_0x0535('0x3f'),'created_at':_0x4a0341[_0x0535('0x35')](_0x0535('0x36')),'due_date':_0x4a0341[_0x0535('0x40')](0x1e,'m')[_0x0535('0x35')](_0x0535('0x36'))},'json':!![]};_0x51fa32[_0x0535('0xf')]=_0x3db580;return rp(_0x51fa32)[_0x0535('0x24')](function(_0x367a8b){_0x5871b5['ticketId']=_0x367a8b[_0x0535('0x41')]['id'];logger['info'](_0x0535('0x42'),_0x5871b5[_0x0535('0x43')]);_0x40f13d(_0x5871b5);})[_0x0535('0x17')](function(_0x4e8b11){logger[_0x0535('0x18')]('['+[_0x56885c[_0x0535('0x19')]()]+']',_0x4e8b11[_0x0535('0x1a')]);_0x3a9c7c(_0x4e8b11['message']);});});};}function emit(_0xb05bcc,_0xe680bf,_0x3d830d){var _0x56fb99={'uri':_0xb05bcc+_0x0535('0x44')+_0x3d830d};io['to'](util[_0x0535('0x35')](_0x0535('0x45'),_0xe680bf))['emit'](_0x0535('0x46'),_0x56fb99);}exports['cs']=function(_0x64513b,_0x51cc26,_0x5c3365,_0x4ee89f,_0x2c5041,_0x566a40,_0x25c0ee,_0xb1654d){var _0x1dbbea={};var _0x6040eb={'Authorization':_0x0535('0x47')+_0x566a40[_0x0535('0x48')]};_0x566a40[_0x0535('0x49')]=intUtil[_0x0535('0x4a')](_0x566a40[_0x0535('0x49')]);_0x566a40[_0x0535('0x4b')]=intUtil['stripTrailingSlash'](_0x566a40[_0x0535('0x4b')]);var _0x305fc0=_0x566a40['remoteUri'];_0x1dbbea[_0x0535('0x14')]=_0x566a40['username'];_0x1dbbea[_0x0535('0x2f')]=_0xb1654d['toLowerCase']()===_0x0535('0x4c')?_0x51cc26[_0x0535('0x4d')]:_0x51cc26[_0x0535('0x4e')];_0x1dbbea[_0x0535('0x4f')]=_0xb1654d==='queue'||_0xb1654d==='unmanaged'?'queue':_0x0535('0x4c');if(_0x4ee89f){_0x1dbbea[_0x0535('0x1c')]=_0x4ee89f['email'];}var _0x5788c3=util[_0x0535('0x35')](_0x0535('0x50'),_0x566a40[_0x0535('0x4b')],_0x51cc26[_0x0535('0x51')],md5(_0x51cc26['uniqueid']));if(_0x2c5041&&_0x2c5041[_0x0535('0x52')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x51cc26[_0x0535('0x53')]=_0x5788c3;}else if(_0x25c0ee&&_0x25c0ee[_0x0535('0x54')]&&_0x25c0ee[_0x0535('0x54')]!=='none'){logger[_0x0535('0x10')](_0x0535('0x55'),_0x0535('0x56'));_0x51cc26[_0x0535('0x53')]=_0x5788c3;}else{_0x51cc26[_0x0535('0x53')]='';}return getAdminId(_0x1dbbea,_0xb1654d,_0x6040eb,_0x305fc0)[_0x0535('0x24')](getUser(_0xb1654d,_0x6040eb,_0x305fc0))[_0x0535('0x24')](getEndUser(_0xb1654d,_0x6040eb,_0x305fc0))[_0x0535('0x24')](getTicket(_0xb1654d,_0x6040eb,_0x305fc0,_0x5c3365,_0x51cc26))[_0x0535('0x24')](function(_0x1acd4f){logger[_0x0535('0x10')](util['format'](_0x0535('0x57'),_0x1acd4f[_0x0535('0x43')]));if(_0xb1654d!==_0x0535('0x58')){logger[_0x0535('0x10')]('['+[_0xb1654d['toUpperCase']()]+']',_0x0535('0x59'));emit(_0x305fc0,_0x4ee89f['name'],_0x1acd4f[_0x0535('0x31')]);}})[_0x0535('0x17')](function(_0x4d7996){logger[_0x0535('0x18')]('['+[_0xb1654d[_0x0535('0x19')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x0535('0x5a')](_0x4d7996,{'showHidden':!![],'depth':null}));});};