165c09ed2b17b0bef2231f814b543d0fad2fa55a
[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 _0x22c4=['/api/contacts','format','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','Subjects','getString','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','task','Task\x20created:','/contacts/','user:%s','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','outbound','destcalleridnum','callDirection','queue','unmanaged','agentEmail','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','md5','util','moment','bluebird','ioredis','./util','freshsales','redis','defaults','socket.io-emitter','GET','/api/selector/owners','length','email','adminEmail','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','headers','Getting\x20user\x20list','then','users','userId','User\x20found:','Admin\x20selected','userEmail','catch','message','/api/contacts/filters','filters','forEach','All\x20Contacts','Getting\x20contact\x20list','/api/contacts/view/','contacts','find','work_number','contactNumber','mobile_number','Contact\x20found:','Contact\x20created:','endUserId','POST'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x22c4,0x81));var _0x422c=function(_0x3efe87,_0x35ad48){_0x3efe87=_0x3efe87-0x0;var _0x56a4cc=_0x22c4[_0x3efe87];return _0x56a4cc;};'use strict';var _=require(_0x422c('0x0'));var rp=require('request-promise');var md5=require(_0x422c('0x1'));var util=require(_0x422c('0x2'));var moment=require(_0x422c('0x3'));var Promise=require(_0x422c('0x4'));var Redis=require(_0x422c('0x5'));var intUtil=require(_0x422c('0x6'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x422c('0x7'));config[_0x422c('0x8')]=_[_0x422c('0x9')](config[_0x422c('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x422c('0xa'))(new Redis(config['redis']));function getAdminId(_0x23024e,_0x5dc273,_0xeba327,_0x46c05e){return new Promise(function(_0x1a0c4d,_0x2d0fdd){var _0x4c46d7=![];var _0x2a97cf={'method':_0x422c('0xb'),'uri':_0x46c05e+_0x422c('0xc'),'json':!![]};_0x2a97cf['headers']=_0xeba327;logger['info']('Getting\x20admin\x20information');return rp(_0x2a97cf)['then'](function(_0x42f2ac){if(_0x42f2ac){var _0x1111fc=_0x42f2ac['users'];var _0x60596d=null;for(_0x60596d=0x0;_0x60596d<_0x1111fc[_0x422c('0xd')];_0x60596d++){if(_0x1111fc[_0x60596d][_0x422c('0xe')]===_0x23024e[_0x422c('0xf')]){_0x23024e[_0x422c('0x10')]=_0x1111fc[_0x60596d]['id'];_0x4c46d7=!![];}}if(_0x4c46d7){logger[_0x422c('0x11')](_0x422c('0x12'),_0x23024e[_0x422c('0x10')]);_0x1a0c4d(_0x23024e);}else{_0x2d0fdd({'statusCode':0x194,'message':_0x422c('0x13')});}}else{_0x2d0fdd({'statusCode':0x194,'message':_0x422c('0x13')});}})['catch'](function(_0x1aad69){logger[_0x422c('0x14')]('['+[_0x5dc273[_0x422c('0x15')]()]+']',_0x1aad69['message']);_0x2d0fdd(_0x1aad69);});});}function getUser(_0x3f86cd,_0x229ecf,_0x35b89b){return function(_0x103fc2){return new Promise(function(_0x3d8fcd,_0x2eb899){var _0x4a500b={'method':_0x422c('0xb'),'uri':_0x35b89b+'/api/selector/owners','json':!![]};_0x4a500b[_0x422c('0x16')]=_0x229ecf;logger[_0x422c('0x11')](_0x422c('0x17'));return rp(_0x4a500b)[_0x422c('0x18')](function(_0x4fd566){if(_0x4fd566){var _0xa9af93=_0x4fd566[_0x422c('0x19')];var _0x36dc8e=![];var _0x50d58e=null;if(_0x103fc2['agentEmail']!==null){logger['info']('Getting\x20user\x20with\x20email',_0x103fc2['agentEmail']);_0x103fc2['userEmail']=_0x103fc2['agentEmail'];for(_0x50d58e=0x0;_0x50d58e<_0xa9af93[_0x422c('0xd')];_0x50d58e++){if(_0xa9af93[_0x50d58e]['email']===_0x103fc2['agentEmail']){_0x36dc8e=!![];_0x103fc2[_0x422c('0x1a')]=_0xa9af93[_0x50d58e]['id'];logger[_0x422c('0x11')](_0x422c('0x1b'),_0x103fc2['userId']);}}}if(!_0x36dc8e){logger['info'](_0x422c('0x1c'));_0x103fc2[_0x422c('0x1d')]=_0x103fc2[_0x422c('0xf')];_0x103fc2[_0x422c('0x1a')]=_0x103fc2[_0x422c('0x10')];_0x36dc8e=!![];}if(_0x36dc8e){_0x3d8fcd(_0x103fc2);}else{_0x2eb899({'statusCode':0x194,'message':_0x422c('0x13')});}}else{_0x2eb899({'statusCode':0x194,'message':_0x422c('0x13')});}})[_0x422c('0x1e')](function(_0x390ee8){logger[_0x422c('0x14')]('['+[_0x3f86cd['toUpperCase']()]+']',_0x390ee8[_0x422c('0x1f')]);_0x2eb899(_0x390ee8);});});};}function getEndUser(_0x537de8,_0x49d4cd,_0xd7b76c){return function(_0x38db3b){return new Promise(function(_0x445353,_0xd8729e){var _0x564b45=0x0;var _0x3a6204={'method':_0x422c('0xb'),'uri':_0xd7b76c+_0x422c('0x20'),'json':!![]};_0x3a6204[_0x422c('0x16')]=_0x49d4cd;logger[_0x422c('0x11')]('Getting\x20contacts\x20filter');return rp(_0x3a6204)[_0x422c('0x18')](function(_0x5f2204){_0x5f2204[_0x422c('0x21')][_0x422c('0x22')](function(_0x437cde){if(_0x437cde['name']===_0x422c('0x23')){_0x564b45=_0x437cde['id'];}});})[_0x422c('0x18')](function(){logger['info'](_0x422c('0x24'));var _0xdf7be4={'method':_0x422c('0xb'),'uri':_0xd7b76c+_0x422c('0x25')+_0x564b45,'json':!![]};_0xdf7be4['headers']=_0x49d4cd;return rp(_0xdf7be4);})[_0x422c('0x18')](function(_0x572b34){logger['info']('Searching\x20contact\x20with\x20phone',_0x38db3b['contactNumber']);if(_0x572b34[_0x422c('0x26')][_0x422c('0xd')]>0x0){var _0x2f5a92=_[_0x422c('0x27')](_0x572b34['contacts'],function(_0x829c82){if(_0x829c82[_0x422c('0x28')]===_0x38db3b[_0x422c('0x29')]||_0x829c82[_0x422c('0x2a')]===_0x38db3b[_0x422c('0x29')]){return _0x829c82;}});if(_0x2f5a92){_0x38db3b['endUserId']=_0x2f5a92['id'];logger['info'](_0x422c('0x2b'),_0x38db3b['endUserId']);_0x445353(_0x38db3b);}else{return createEndUser(_0x38db3b,_0x537de8,_0x49d4cd,_0xd7b76c)[_0x422c('0x18')](function(_0x1c33f9){logger[_0x422c('0x11')](_0x422c('0x2c'),_0x38db3b['endUserId']);_0x445353(_0x1c33f9);});}}else{return createEndUser(_0x38db3b,_0x537de8,_0x49d4cd,_0xd7b76c)[_0x422c('0x18')](function(_0x19402c){logger[_0x422c('0x11')](_0x422c('0x2c'),_0x38db3b[_0x422c('0x2d')]);_0x445353(_0x19402c);});}})['catch'](function(_0x4dd34a){throw new Error(_0x4dd34a['message']);});});};}function createEndUser(_0x5d082b,_0x346b5b,_0x26814f,_0x1fa990){return new Promise(function(_0xdfcaf6,_0xbc6d71){var _0x38f893=moment();var _0x5b08e2={'method':_0x422c('0x2e'),'uri':_0x1fa990+_0x422c('0x2f'),'body':{'contact':{'last_name':_0x5d082b[_0x422c('0x29')],'work_number':_0x5d082b[_0x422c('0x29')],'mobile_number':_0x5d082b['contactNumber'],'owner_id':_0x5d082b[_0x422c('0x1a')],'created_at':_0x38f893[_0x422c('0x30')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x5b08e2[_0x422c('0x16')]=_0x26814f;logger[_0x422c('0x11')](_0x422c('0x31'));return rp(_0x5b08e2)['then'](function(_0x1f2992){_0x5d082b[_0x422c('0x2d')]=_0x1f2992[_0x422c('0x32')]['id'];_0xdfcaf6(_0x5d082b);})[_0x422c('0x1e')](function(_0x5ee196){logger[_0x422c('0x14')]('['+[_0x346b5b[_0x422c('0x15')]()]+']',_0x5ee196['message']);_0xbc6d71(_0x5ee196['message']);});});}function getTicket(_0x276fb6,_0x55285c,_0x580d19,_0x44ad4e,_0x21356b){return function(_0x4c926b){logger[_0x422c('0x11')]('Creating\x20new\x20task');return new Promise(function(_0x28b585,_0x5be24f){var _0x299692=moment();var _0x1d77e1={'method':'POST','uri':_0x580d19+_0x422c('0x33'),'body':{'title':intUtil['getString'](_0x44ad4e[_0x422c('0x34')],_0x21356b,'\x20'),'description':intUtil[_0x422c('0x35')](_0x44ad4e[_0x422c('0x36')],_0x21356b,'\x0a'),'owner_id':_0x4c926b[_0x422c('0x1a')],'creater_id':_0x4c926b[_0x422c('0x10')],'targetable_id':_0x4c926b[_0x422c('0x2d')],'targetable_type':_0x422c('0x37'),'created_at':_0x299692[_0x422c('0x30')](_0x422c('0x38')),'due_date':_0x299692[_0x422c('0x39')](0x1e,'m')[_0x422c('0x30')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x1d77e1[_0x422c('0x16')]=_0x55285c;return rp(_0x1d77e1)[_0x422c('0x18')](function(_0x2f5a5a){_0x4c926b[_0x422c('0x3a')]=_0x2f5a5a[_0x422c('0x3b')]['id'];logger['info'](_0x422c('0x3c'),_0x4c926b[_0x422c('0x3a')]);_0x28b585(_0x4c926b);})['catch'](function(_0xc7c551){logger[_0x422c('0x14')]('['+[_0x276fb6[_0x422c('0x15')]()]+']',_0xc7c551['message']);_0x5be24f(_0xc7c551[_0x422c('0x1f')]);});});};}function emit(_0x8cacca,_0x320109,_0x247526){var _0x2f524d={'uri':_0x8cacca+_0x422c('0x3d')+_0x247526};io['to'](util[_0x422c('0x30')](_0x422c('0x3e'),_0x320109))['emit']('trigger:browser:url',_0x2f524d);}exports['cs']=function(_0x4b1bfc,_0x1d363d,_0x2ccc39,_0x48526d,_0x585a7c,_0x114452,_0x1b50e3,_0x3f3b71){var _0x217aae={};var _0x381ee3={'Authorization':_0x422c('0x3f')+_0x114452[_0x422c('0x40')]};_0x114452[_0x422c('0x41')]=intUtil[_0x422c('0x42')](_0x114452[_0x422c('0x41')]);_0x114452[_0x422c('0x43')]=intUtil['stripTrailingSlash'](_0x114452['serverUrl']);var _0x3d5443=_0x114452[_0x422c('0x41')];_0x217aae['adminEmail']=_0x114452[_0x422c('0x44')];_0x217aae[_0x422c('0x29')]=_0x3f3b71['toLowerCase']()===_0x422c('0x45')?_0x1d363d[_0x422c('0x46')]:_0x1d363d['calleridnum'];_0x217aae[_0x422c('0x47')]=_0x3f3b71===_0x422c('0x48')||_0x3f3b71===_0x422c('0x49')?_0x422c('0x48'):_0x422c('0x45');if(_0x48526d){_0x217aae[_0x422c('0x4a')]=_0x48526d[_0x422c('0xe')];}var _0x3ecbce=util[_0x422c('0x30')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x114452[_0x422c('0x43')],_0x1d363d[_0x422c('0x4b')],md5(_0x1d363d[_0x422c('0x4b')]));if(_0x585a7c&&_0x585a7c[_0x422c('0x4c')]){logger[_0x422c('0x11')](_0x422c('0x4d'),_0x422c('0x4e'));_0x1d363d[_0x422c('0x4f')]=_0x3ecbce;}else if(_0x1b50e3&&_0x1b50e3[_0x422c('0x50')]&&_0x1b50e3[_0x422c('0x50')]!==_0x422c('0x51')){logger[_0x422c('0x11')](_0x422c('0x52'),_0x422c('0x4e'));_0x1d363d[_0x422c('0x4f')]=_0x3ecbce;}else{_0x1d363d['recordingURL']='';}return getAdminId(_0x217aae,_0x3f3b71,_0x381ee3,_0x3d5443)[_0x422c('0x18')](getUser(_0x3f3b71,_0x381ee3,_0x3d5443))['then'](getEndUser(_0x3f3b71,_0x381ee3,_0x3d5443))[_0x422c('0x18')](getTicket(_0x3f3b71,_0x381ee3,_0x3d5443,_0x2ccc39,_0x1d363d))['then'](function(_0x3c3bea){logger['info'](util[_0x422c('0x30')](_0x422c('0x53'),_0x3c3bea[_0x422c('0x3a')]));if(_0x3f3b71!=='unmanaged'){logger[_0x422c('0x11')]('['+[_0x3f3b71[_0x422c('0x15')]()]+']',_0x422c('0x54'));emit(_0x3d5443,_0x48526d[_0x422c('0x55')],_0x3c3bea[_0x422c('0x2d')]);}})[_0x422c('0x1e')](function(_0x20ab96){logger[_0x422c('0x14')]('['+[_0x3f3b71[_0x422c('0x15')]()]+_0x422c('0x56'),util[_0x422c('0x57')](_0x20ab96,{'showHidden':!![],'depth':null}));});};