69dc35d361092bb2fd899b6e7e67c421d7d1e30d
[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 _0x5432=['The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','util','moment','bluebird','ioredis','./util','localhost','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','users','email','adminEmail','adminId','info','Requested\x20Resource\x20not\x20Found','catch','error','message','Getting\x20user\x20list','then','agentEmail','Getting\x20user\x20with\x20email','userEmail','Admin\x20selected','userId','toUpperCase','/api/contacts/filters','Getting\x20contacts\x20filter','filters','forEach','All\x20Contacts','/api/contacts/view/','Searching\x20contact\x20with\x20phone','contacts','length','find','contactNumber','endUserId','Contact\x20found:','Contact\x20created:','POST','format','contact','/api/tasks','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','remoteUri','serverUrl','username','outbound','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0x5432,0xe9));var _0x2543=function(_0x31d49a,_0x2dd19d){_0x31d49a=_0x31d49a-0x0;var _0x1407b3=_0x5432[_0x31d49a];return _0x1407b3;};'use strict';var _=require('lodash');var rp=require(_0x2543('0x0'));var md5=require(_0x2543('0x1'));var util=require(_0x2543('0x2'));var moment=require(_0x2543('0x3'));var Promise=require(_0x2543('0x4'));var Redis=require(_0x2543('0x5'));var intUtil=require(_0x2543('0x6'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')('freshsales');config['redis']=_['defaults'](config['redis'],{'host':_0x2543('0x7'),'port':0x18eb});var io=require(_0x2543('0x8'))(new Redis(config['redis']));function getAdminId(_0x37b8d9,_0x285a7c,_0x3fbd51,_0x5c831c){return new Promise(function(_0x3f798c,_0x35ceac){var _0x54ef17=![];var _0x12a0b4={'method':_0x2543('0x9'),'uri':_0x5c831c+_0x2543('0xa'),'json':!![]};_0x12a0b4[_0x2543('0xb')]=_0x3fbd51;logger['info'](_0x2543('0xc'));return rp(_0x12a0b4)['then'](function(_0x4b5295){if(_0x4b5295){var _0x22e69e=_0x4b5295[_0x2543('0xd')];var _0x590645=null;for(_0x590645=0x0;_0x590645<_0x22e69e['length'];_0x590645++){if(_0x22e69e[_0x590645][_0x2543('0xe')]===_0x37b8d9[_0x2543('0xf')]){_0x37b8d9[_0x2543('0x10')]=_0x22e69e[_0x590645]['id'];_0x54ef17=!![];}}if(_0x54ef17){logger[_0x2543('0x11')]('Admin\x20found:',_0x37b8d9[_0x2543('0x10')]);_0x3f798c(_0x37b8d9);}else{_0x35ceac({'statusCode':0x194,'message':_0x2543('0x12')});}}else{_0x35ceac({'statusCode':0x194,'message':_0x2543('0x12')});}})[_0x2543('0x13')](function(_0x3fb6d2){logger[_0x2543('0x14')]('['+[_0x285a7c['toUpperCase']()]+']',_0x3fb6d2[_0x2543('0x15')]);_0x35ceac(_0x3fb6d2);});});}function getUser(_0x1856a6,_0xf50177,_0x45ab54){return function(_0x279d40){return new Promise(function(_0xd07322,_0x21de4f){var _0x5039da={'method':_0x2543('0x9'),'uri':_0x45ab54+_0x2543('0xa'),'json':!![]};_0x5039da['headers']=_0xf50177;logger[_0x2543('0x11')](_0x2543('0x16'));return rp(_0x5039da)[_0x2543('0x17')](function(_0x3628b7){if(_0x3628b7){var _0x2f4b75=_0x3628b7[_0x2543('0xd')];var _0x6409ca=![];var _0x4d0dd0=null;if(_0x279d40[_0x2543('0x18')]!==null){logger[_0x2543('0x11')](_0x2543('0x19'),_0x279d40[_0x2543('0x18')]);_0x279d40[_0x2543('0x1a')]=_0x279d40[_0x2543('0x18')];for(_0x4d0dd0=0x0;_0x4d0dd0<_0x2f4b75['length'];_0x4d0dd0++){if(_0x2f4b75[_0x4d0dd0][_0x2543('0xe')]===_0x279d40[_0x2543('0x18')]){_0x6409ca=!![];_0x279d40['userId']=_0x2f4b75[_0x4d0dd0]['id'];logger[_0x2543('0x11')]('User\x20found:',_0x279d40['userId']);}}}if(!_0x6409ca){logger[_0x2543('0x11')](_0x2543('0x1b'));_0x279d40[_0x2543('0x1a')]=_0x279d40[_0x2543('0xf')];_0x279d40[_0x2543('0x1c')]=_0x279d40[_0x2543('0x10')];_0x6409ca=!![];}if(_0x6409ca){_0xd07322(_0x279d40);}else{_0x21de4f({'statusCode':0x194,'message':_0x2543('0x12')});}}else{_0x21de4f({'statusCode':0x194,'message':_0x2543('0x12')});}})['catch'](function(_0x46271f){logger['error']('['+[_0x1856a6[_0x2543('0x1d')]()]+']',_0x46271f[_0x2543('0x15')]);_0x21de4f(_0x46271f);});});};}function getEndUser(_0x2ff5e3,_0x50a0d8,_0x11c161){return function(_0x28e1c4){return new Promise(function(_0x346370,_0xa91757){var _0x1e7398=0x0;var _0x1e878c={'method':'GET','uri':_0x11c161+_0x2543('0x1e'),'json':!![]};_0x1e878c[_0x2543('0xb')]=_0x50a0d8;logger[_0x2543('0x11')](_0x2543('0x1f'));return rp(_0x1e878c)[_0x2543('0x17')](function(_0x5bb40c){_0x5bb40c[_0x2543('0x20')][_0x2543('0x21')](function(_0x4ab896){if(_0x4ab896['name']===_0x2543('0x22')){_0x1e7398=_0x4ab896['id'];}});})[_0x2543('0x17')](function(){logger[_0x2543('0x11')]('Getting\x20contact\x20list');var _0x5e2b7b={'method':_0x2543('0x9'),'uri':_0x11c161+_0x2543('0x23')+_0x1e7398,'json':!![]};_0x5e2b7b[_0x2543('0xb')]=_0x50a0d8;return rp(_0x5e2b7b);})['then'](function(_0x2f59dd){logger[_0x2543('0x11')](_0x2543('0x24'),_0x28e1c4['contactNumber']);if(_0x2f59dd[_0x2543('0x25')][_0x2543('0x26')]>0x0){var _0x17f564=_[_0x2543('0x27')](_0x2f59dd[_0x2543('0x25')],function(_0x5af0b4){if(_0x5af0b4['work_number']===_0x28e1c4[_0x2543('0x28')]||_0x5af0b4['mobile_number']===_0x28e1c4[_0x2543('0x28')]){return _0x5af0b4;}});if(_0x17f564){_0x28e1c4[_0x2543('0x29')]=_0x17f564['id'];logger[_0x2543('0x11')](_0x2543('0x2a'),_0x28e1c4[_0x2543('0x29')]);_0x346370(_0x28e1c4);}else{return createEndUser(_0x28e1c4,_0x2ff5e3,_0x50a0d8,_0x11c161)[_0x2543('0x17')](function(_0x116d50){logger['info'](_0x2543('0x2b'),_0x28e1c4[_0x2543('0x29')]);_0x346370(_0x116d50);});}}else{return createEndUser(_0x28e1c4,_0x2ff5e3,_0x50a0d8,_0x11c161)[_0x2543('0x17')](function(_0x4f85e6){logger[_0x2543('0x11')](_0x2543('0x2b'),_0x28e1c4['endUserId']);_0x346370(_0x4f85e6);});}})[_0x2543('0x13')](function(_0x193d01){throw new Error(_0x193d01['message']);});});};}function createEndUser(_0xcc782b,_0x3cafdc,_0x2e04f4,_0x1ad123){return new Promise(function(_0x335bcf,_0x39f9b1){var _0x55c3f3=moment();var _0x27da17={'method':_0x2543('0x2c'),'uri':_0x1ad123+'/api/contacts','body':{'contact':{'last_name':_0xcc782b[_0x2543('0x28')],'work_number':_0xcc782b[_0x2543('0x28')],'mobile_number':_0xcc782b[_0x2543('0x28')],'owner_id':_0xcc782b['userId'],'created_at':_0x55c3f3[_0x2543('0x2d')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x27da17[_0x2543('0xb')]=_0x2e04f4;logger[_0x2543('0x11')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x27da17)[_0x2543('0x17')](function(_0x47d8a0){_0xcc782b[_0x2543('0x29')]=_0x47d8a0[_0x2543('0x2e')]['id'];_0x335bcf(_0xcc782b);})[_0x2543('0x13')](function(_0x15d6fc){logger['error']('['+[_0x3cafdc['toUpperCase']()]+']',_0x15d6fc[_0x2543('0x15')]);_0x39f9b1(_0x15d6fc[_0x2543('0x15')]);});});}function getTicket(_0x2bb595,_0x1dec5f,_0x47a572,_0x248281,_0x17d640){return function(_0xff9b8c){logger[_0x2543('0x11')]('Creating\x20new\x20task');return new Promise(function(_0x3775d8,_0x39b5f2){var _0x1f42e8=moment();var _0x24e744={'method':_0x2543('0x2c'),'uri':_0x47a572+_0x2543('0x2f'),'body':{'title':intUtil['getString'](_0x248281['Subjects'],_0x17d640,'\x20'),'description':intUtil['getString'](_0x248281[_0x2543('0x30')],_0x17d640,'\x0a'),'owner_id':_0xff9b8c['userId'],'creater_id':_0xff9b8c[_0x2543('0x10')],'targetable_id':_0xff9b8c[_0x2543('0x29')],'targetable_type':_0x2543('0x31'),'created_at':_0x1f42e8['format'](_0x2543('0x32')),'due_date':_0x1f42e8[_0x2543('0x33')](0x1e,'m')[_0x2543('0x2d')](_0x2543('0x32'))},'json':!![]};_0x24e744[_0x2543('0xb')]=_0x1dec5f;return rp(_0x24e744)[_0x2543('0x17')](function(_0x1c9a13){_0xff9b8c[_0x2543('0x34')]=_0x1c9a13['task']['id'];logger[_0x2543('0x11')](_0x2543('0x35'),_0xff9b8c['ticketId']);_0x3775d8(_0xff9b8c);})[_0x2543('0x13')](function(_0x168e6f){logger['error']('['+[_0x2bb595['toUpperCase']()]+']',_0x168e6f[_0x2543('0x15')]);_0x39b5f2(_0x168e6f[_0x2543('0x15')]);});});};}function emit(_0x3fcb58,_0x5b8471,_0x28a0e0){var _0x414003={'uri':_0x3fcb58+_0x2543('0x36')+_0x28a0e0};io['to'](util[_0x2543('0x2d')](_0x2543('0x37'),_0x5b8471))[_0x2543('0x38')]('trigger:browser:url',_0x414003);}exports['cs']=function(_0x3eca5c,_0x268023,_0x4039eb,_0x4ef7bd,_0xe53a96,_0x4de623,_0x3c17a0,_0x16832a){var _0x402c82={};var _0x53246c={'Authorization':'Token\x20token='+_0x4de623['apiKey']};_0x4de623[_0x2543('0x39')]=intUtil['stripTrailingSlash'](_0x4de623[_0x2543('0x39')]);_0x4de623[_0x2543('0x3a')]=intUtil['stripTrailingSlash'](_0x4de623['serverUrl']);var _0x31d539=_0x4de623['remoteUri'];_0x402c82[_0x2543('0xf')]=_0x4de623[_0x2543('0x3b')];_0x402c82['contactNumber']=_0x16832a['toLowerCase']()===_0x2543('0x3c')?_0x268023[_0x2543('0x3d')]:_0x268023[_0x2543('0x3e')];_0x402c82['callDirection']=_0x16832a===_0x2543('0x3f')||_0x16832a===_0x2543('0x40')?_0x2543('0x3f'):'outbound';if(_0x4ef7bd){_0x402c82['agentEmail']=_0x4ef7bd[_0x2543('0xe')];}var _0x13c6a5=util['format'](_0x2543('0x41'),_0x4de623[_0x2543('0x3a')],_0x268023[_0x2543('0x42')],md5(_0x268023[_0x2543('0x42')]));if(_0xe53a96&&_0xe53a96['monitor_format']){logger[_0x2543('0x11')](_0x2543('0x43'),_0x2543('0x44'));_0x268023[_0x2543('0x45')]=_0x13c6a5;}else if(_0x3c17a0&&_0x3c17a0[_0x2543('0x46')]&&_0x3c17a0['recordingFormat']!=='none'){logger[_0x2543('0x11')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x268023[_0x2543('0x45')]=_0x13c6a5;}else{_0x268023[_0x2543('0x45')]='';}return getAdminId(_0x402c82,_0x16832a,_0x53246c,_0x31d539)['then'](getUser(_0x16832a,_0x53246c,_0x31d539))[_0x2543('0x17')](getEndUser(_0x16832a,_0x53246c,_0x31d539))[_0x2543('0x17')](getTicket(_0x16832a,_0x53246c,_0x31d539,_0x4039eb,_0x268023))[_0x2543('0x17')](function(_0x3a21e0){logger['info'](util[_0x2543('0x2d')](_0x2543('0x47'),_0x3a21e0[_0x2543('0x34')]));if(_0x16832a!==_0x2543('0x40')){logger['info']('['+[_0x16832a[_0x2543('0x1d')]()]+']',_0x2543('0x48'));emit(_0x31d539,_0x4ef7bd[_0x2543('0x49')],_0x3a21e0['endUserId']);}})['catch'](function(_0x256e19){logger[_0x2543('0x14')]('['+[_0x16832a[_0x2543('0x1d')]()]+_0x2543('0x4a'),util[_0x2543('0x4b')](_0x256e19,{'showHidden':!![],'depth':null}));});};