917b3e122d32cd8a2d9653b031fd854066fef58c
[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 _0xc2e9=['users','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','message','GET','headers','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','endUserId','Contact\x20found\x20mobile_number:','work_number','contactNumber','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','toUpperCase','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','calleridnum','queue','outbound','%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','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','util','moment','ioredis','../../../../config/environment','../../../../config/logger','redis','localhost','/api/selector/owners','info','Getting\x20admin\x20information','then'];(function(_0x24cfd0,_0x2a965e){var _0x57bb01=function(_0x4d71b2){while(--_0x4d71b2){_0x24cfd0['push'](_0x24cfd0['shift']());}};_0x57bb01(++_0x2a965e);}(_0xc2e9,0xa0));var _0x9c2e=function(_0x246e1a,_0x30ee98){_0x246e1a=_0x246e1a-0x0;var _0x19a13c=_0xc2e9[_0x246e1a];return _0x19a13c;};'use strict';var _=require('lodash');var rp=require(_0x9c2e('0x0'));var md5=require('md5');var util=require(_0x9c2e('0x1'));var moment=require(_0x9c2e('0x2'));var Promise=require('bluebird');var Redis=require(_0x9c2e('0x3'));var intUtil=require('./util');var config=require(_0x9c2e('0x4'));var logger=require(_0x9c2e('0x5'))('freshsales');config[_0x9c2e('0x6')]=_['defaults'](config[_0x9c2e('0x6')],{'host':_0x9c2e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9c2e('0x6')]));function getAdminId(_0x3a36be,_0x1c5072,_0x329907,_0x30354d){return new Promise(function(_0x862e23,_0x37c423){var _0xe2a2e7=![];var _0xae649e={'method':'GET','uri':_0x30354d+_0x9c2e('0x8'),'json':!![]};_0xae649e['headers']=_0x329907;logger[_0x9c2e('0x9')](_0x9c2e('0xa'));return rp(_0xae649e)[_0x9c2e('0xb')](function(_0xd885a0){if(_0xd885a0){var _0x40cac7=_0xd885a0[_0x9c2e('0xc')];var _0x4a1062=null;for(_0x4a1062=0x0;_0x4a1062<_0x40cac7['length'];_0x4a1062++){if(_0x40cac7[_0x4a1062][_0x9c2e('0xd')]===_0x3a36be[_0x9c2e('0xe')]){_0x3a36be[_0x9c2e('0xf')]=_0x40cac7[_0x4a1062]['id'];_0xe2a2e7=!![];}}if(_0xe2a2e7){logger[_0x9c2e('0x9')](_0x9c2e('0x10'),_0x3a36be[_0x9c2e('0xf')]);_0x862e23(_0x3a36be);}else{_0x37c423({'statusCode':0x194,'message':_0x9c2e('0x11')});}}else{_0x37c423({'statusCode':0x194,'message':_0x9c2e('0x11')});}})[_0x9c2e('0x12')](function(_0x12aa39){logger[_0x9c2e('0x13')]('['+[_0x1c5072['toUpperCase']()]+']',_0x12aa39[_0x9c2e('0x14')]);_0x37c423(_0x12aa39);});});}function getUser(_0x1da1b8,_0x2ddeaf,_0x5ed24c){return function(_0x3a7087){return new Promise(function(_0x13922f,_0x592830){var _0x1ffd6d={'method':_0x9c2e('0x15'),'uri':_0x5ed24c+_0x9c2e('0x8'),'json':!![]};_0x1ffd6d[_0x9c2e('0x16')]=_0x2ddeaf;logger[_0x9c2e('0x9')](_0x9c2e('0x17'));return rp(_0x1ffd6d)['then'](function(_0x13f0ef){if(_0x13f0ef){var _0xa31f18=_0x13f0ef[_0x9c2e('0xc')];var _0x1a6d8c=![];var _0x4f5924=null;if(_0x3a7087['agentEmail']!==null){logger['info'](_0x9c2e('0x18'),_0x3a7087[_0x9c2e('0x19')]);_0x3a7087[_0x9c2e('0x1a')]=_0x3a7087[_0x9c2e('0x19')];for(_0x4f5924=0x0;_0x4f5924<_0xa31f18['length'];_0x4f5924++){if(_0xa31f18[_0x4f5924][_0x9c2e('0xd')]===_0x3a7087[_0x9c2e('0x19')]){_0x1a6d8c=!![];_0x3a7087[_0x9c2e('0x1b')]=_0xa31f18[_0x4f5924]['id'];logger[_0x9c2e('0x9')](_0x9c2e('0x1c'),_0x3a7087[_0x9c2e('0x1b')]);}}}if(!_0x1a6d8c){logger[_0x9c2e('0x9')](_0x9c2e('0x1d'));_0x3a7087[_0x9c2e('0x1a')]=_0x3a7087['adminEmail'];_0x3a7087[_0x9c2e('0x1b')]=_0x3a7087[_0x9c2e('0xf')];_0x1a6d8c=!![];}if(_0x1a6d8c){_0x13922f(_0x3a7087);}else{_0x592830({'statusCode':0x194,'message':_0x9c2e('0x11')});}}else{_0x592830({'statusCode':0x194,'message':_0x9c2e('0x11')});}})['catch'](function(_0x4b422d){logger[_0x9c2e('0x13')]('['+[_0x1da1b8['toUpperCase']()]+']',_0x4b422d[_0x9c2e('0x14')]);_0x592830(_0x4b422d);});});};}function searchContact(_0x54381b,_0x903aa5,_0x2a7a99,_0x11aec9){return new Promise(function(_0x12875a,_0x1896ca){var _0x3ab923={'method':_0x9c2e('0x15'),'headers':_0x903aa5,'uri':_0x54381b+_0x9c2e('0x1e')+_0x11aec9+_0x9c2e('0x1f')+_0x2a7a99+_0x9c2e('0x20'),'json':!![]};rp(_0x3ab923)[_0x9c2e('0xb')](function(_0x4962bd){var _0xe620dd=_[_0x9c2e('0x21')](_0x4962bd[_0x9c2e('0x22')]['contacts'],[_0x2a7a99,_0x11aec9]);_0x12875a(_0xe620dd);})[_0x9c2e('0x12')](function(_0x3c3aaf){_0x1896ca(_0x3c3aaf);});});}function getEndUser(_0x2fc567,_0x525d73,_0x2e1f8a){return function(_0x2fd6ef){return new Promise(function(_0x2e662e,_0x1f9370){logger[_0x9c2e('0x9')](util[_0x9c2e('0x23')](_0x9c2e('0x24'),_0x2fd6ef['contactNumber']));searchContact(_0x2e1f8a,_0x525d73,'mobile_number',_0x2fd6ef['contactNumber'])['then'](function(_0x2ada67){if(_0x2ada67){_0x2fd6ef[_0x9c2e('0x25')]=_0x2ada67['id'];logger[_0x9c2e('0x9')](_0x9c2e('0x26'),_0x2fd6ef[_0x9c2e('0x25')]);return _0x2e662e(_0x2fd6ef);}searchContact(_0x2e1f8a,_0x525d73,_0x9c2e('0x27'),_0x2fd6ef[_0x9c2e('0x28')])[_0x9c2e('0xb')](function(_0x33eaed){if(_0x33eaed){_0x2fd6ef[_0x9c2e('0x25')]=_0x33eaed['id'];logger[_0x9c2e('0x9')]('Contact\x20found\x20work_number:',_0x2fd6ef[_0x9c2e('0x25')]);return _0x2e662e(_0x2fd6ef);}createEndUser(_0x2fd6ef,_0x2fc567,_0x525d73,_0x2e1f8a)['then'](function(_0x59d785){logger[_0x9c2e('0x9')](_0x9c2e('0x29'),_0x59d785[_0x9c2e('0x25')]);return _0x2e662e(_0x59d785);});});})['catch'](function(_0xbf53c9){_0x1f9370(_0xbf53c9);});});};}function createEndUser(_0x5e0029,_0x733bb7,_0x1930ad,_0x2cc6d0){return new Promise(function(_0x1b6433,_0x1d53a5){var _0x492c64=moment();var _0x451903={'method':_0x9c2e('0x2a'),'uri':_0x2cc6d0+_0x9c2e('0x2b'),'body':{'contact':{'last_name':_0x5e0029[_0x9c2e('0x28')],'work_number':_0x5e0029[_0x9c2e('0x28')],'mobile_number':_0x5e0029[_0x9c2e('0x28')],'owner_id':_0x5e0029['userId'],'created_at':_0x492c64['format'](_0x9c2e('0x2c'))}},'json':!![]};_0x451903[_0x9c2e('0x16')]=_0x1930ad;logger[_0x9c2e('0x9')](_0x9c2e('0x2d'));return rp(_0x451903)[_0x9c2e('0xb')](function(_0x374d35){_0x5e0029[_0x9c2e('0x25')]=_0x374d35[_0x9c2e('0x2e')]['id'];_0x1b6433(_0x5e0029);})['catch'](function(_0x3c2af0){logger['error']('['+[_0x733bb7[_0x9c2e('0x2f')]()]+']',_0x3c2af0[_0x9c2e('0x14')]);_0x1d53a5(_0x3c2af0[_0x9c2e('0x14')]);});});}function getTicket(_0x3576e3,_0x81ba1b,_0x36bbd7,_0x4fd017,_0x4b40e8){return function(_0x57d093){logger[_0x9c2e('0x9')](_0x9c2e('0x30'));return new Promise(function(_0x3974a1,_0x518772){var _0x27721e=moment();var _0x102138={'method':'POST','uri':_0x36bbd7+'/api/tasks','body':{'title':intUtil[_0x9c2e('0x31')](_0x4fd017[_0x9c2e('0x32')],_0x4b40e8,'\x20'),'description':intUtil[_0x9c2e('0x31')](_0x4fd017[_0x9c2e('0x33')],_0x4b40e8,'\x0a'),'owner_id':_0x57d093['userId'],'creater_id':_0x57d093[_0x9c2e('0xf')],'targetable_id':_0x57d093[_0x9c2e('0x25')],'targetable_type':_0x9c2e('0x34'),'created_at':_0x27721e[_0x9c2e('0x23')](_0x9c2e('0x2c')),'due_date':_0x27721e[_0x9c2e('0x35')](0x1e,'m')[_0x9c2e('0x23')](_0x9c2e('0x2c'))},'json':!![]};_0x102138['headers']=_0x81ba1b;return rp(_0x102138)[_0x9c2e('0xb')](function(_0x34e7d4){_0x57d093[_0x9c2e('0x36')]=_0x34e7d4[_0x9c2e('0x37')]['id'];logger['info'](_0x9c2e('0x38'),_0x57d093[_0x9c2e('0x36')]);_0x3974a1(_0x57d093);})[_0x9c2e('0x12')](function(_0x3e1716){logger['error']('['+[_0x3576e3['toUpperCase']()]+']',_0x3e1716[_0x9c2e('0x14')]);_0x518772(_0x3e1716[_0x9c2e('0x14')]);});});};}function emit(_0x1be15c,_0x1d9852,_0x177688){var _0x53a511={'uri':_0x1be15c+_0x9c2e('0x39')+_0x177688};io['to'](util['format'](_0x9c2e('0x3a'),_0x1d9852))[_0x9c2e('0x3b')](_0x9c2e('0x3c'),_0x53a511);}exports['cs']=function(_0x337eda,_0x23a42d,_0x394a7c,_0x46b2b9,_0x3fe88b,_0x303716,_0x12ec44,_0x1c9473){var _0x485b21={};var _0x19206a={'Authorization':_0x9c2e('0x3d')+_0x303716[_0x9c2e('0x3e')]};_0x303716[_0x9c2e('0x3f')]=intUtil[_0x9c2e('0x40')](_0x303716['remoteUri']);_0x303716[_0x9c2e('0x41')]=intUtil[_0x9c2e('0x40')](_0x303716[_0x9c2e('0x41')]);var _0x3d6916=_0x303716[_0x9c2e('0x3f')];_0x485b21[_0x9c2e('0xe')]=_0x303716[_0x9c2e('0x42')];_0x485b21[_0x9c2e('0x28')]=_0x1c9473[_0x9c2e('0x43')]()==='outbound'?_0x23a42d['destcalleridnum']:_0x23a42d[_0x9c2e('0x44')];_0x485b21['callDirection']=_0x1c9473===_0x9c2e('0x45')||_0x1c9473==='unmanaged'?_0x9c2e('0x45'):_0x9c2e('0x46');if(_0x46b2b9){_0x485b21[_0x9c2e('0x19')]=_0x46b2b9[_0x9c2e('0xd')];}var _0xb3a09c=util[_0x9c2e('0x23')](_0x9c2e('0x47'),_0x303716['serverUrl'],_0x23a42d['uniqueid'],md5(_0x23a42d[_0x9c2e('0x48')]));if(_0x3fe88b&&_0x3fe88b[_0x9c2e('0x49')]){logger[_0x9c2e('0x9')](_0x9c2e('0x4a'),_0x9c2e('0x4b'));_0x23a42d[_0x9c2e('0x4c')]=_0xb3a09c;}else if(_0x12ec44&&_0x12ec44['recordingFormat']&&_0x12ec44[_0x9c2e('0x4d')]!==_0x9c2e('0x4e')){logger[_0x9c2e('0x9')](_0x9c2e('0x4f'),_0x9c2e('0x4b'));_0x23a42d[_0x9c2e('0x4c')]=_0xb3a09c;}else{_0x23a42d[_0x9c2e('0x4c')]='';}return getAdminId(_0x485b21,_0x1c9473,_0x19206a,_0x3d6916)['then'](getUser(_0x1c9473,_0x19206a,_0x3d6916))['then'](getEndUser(_0x1c9473,_0x19206a,_0x3d6916))[_0x9c2e('0xb')](getTicket(_0x1c9473,_0x19206a,_0x3d6916,_0x394a7c,_0x23a42d))[_0x9c2e('0xb')](function(_0x585bff){logger[_0x9c2e('0x9')](util[_0x9c2e('0x23')](_0x9c2e('0x50'),_0x585bff[_0x9c2e('0x36')]));if(_0x1c9473!==_0x9c2e('0x51')){logger[_0x9c2e('0x9')]('['+[_0x1c9473[_0x9c2e('0x2f')]()]+']',_0x9c2e('0x52'));emit(_0x3d6916,_0x46b2b9[_0x9c2e('0x53')],_0x585bff[_0x9c2e('0x25')]);}})[_0x9c2e('0x12')](function(_0x56e180){logger['error']('['+[_0x1c9473[_0x9c2e('0x2f')]()]+_0x9c2e('0x54'),util[_0x9c2e('0x55')](_0x56e180,{'showHidden':!![],'depth':null}));});};