819e18b427fe3e1aebf1aadfd881933c8a8d4621
[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 _0x43fd=['headers','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','catch','message','/api/lookup?q=','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','Contact','add','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','trigger:browser:url','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','moment','bluebird','./util','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase'];(function(_0x5b8871,_0xfe7ea1){var _0x57d152=function(_0x3bfb9d){while(--_0x3bfb9d){_0x5b8871['push'](_0x5b8871['shift']());}};_0x57d152(++_0xfe7ea1);}(_0x43fd,0x1ec));var _0xd43f=function(_0x5e82e0,_0x26d739){_0x5e82e0=_0x5e82e0-0x0;var _0x2cc3e4=_0x43fd[_0x5e82e0];return _0x2cc3e4;};'use strict';var _=require('lodash');var rp=require(_0xd43f('0x0'));var md5=require('md5');var util=require('util');var moment=require(_0xd43f('0x1'));var Promise=require(_0xd43f('0x2'));var Redis=require('ioredis');var intUtil=require(_0xd43f('0x3'));var config=require('../../../../config/environment');var logger=require(_0xd43f('0x4'))(_0xd43f('0x5'));config[_0xd43f('0x6')]=_[_0xd43f('0x7')](config['redis'],{'host':_0xd43f('0x8'),'port':0x18eb});var io=require(_0xd43f('0x9'))(new Redis(config[_0xd43f('0x6')]));function getAdminId(_0x331163,_0x547e12,_0x19c71d,_0x20d066){return new Promise(function(_0x52e9c8,_0x474216){var _0x2d5011=![];var _0x114c2e={'method':_0xd43f('0xa'),'uri':_0x20d066+_0xd43f('0xb'),'json':!![]};_0x114c2e['headers']=_0x19c71d;logger[_0xd43f('0xc')](_0xd43f('0xd'));return rp(_0x114c2e)[_0xd43f('0xe')](function(_0x1ed31a){if(_0x1ed31a){var _0x430977=_0x1ed31a[_0xd43f('0xf')];var _0x22f057=null;for(_0x22f057=0x0;_0x22f057<_0x430977[_0xd43f('0x10')];_0x22f057++){if(_0x430977[_0x22f057][_0xd43f('0x11')]===_0x331163[_0xd43f('0x12')]){_0x331163[_0xd43f('0x13')]=_0x430977[_0x22f057]['id'];_0x2d5011=!![];}}if(_0x2d5011){logger['info'](_0xd43f('0x14'),_0x331163[_0xd43f('0x13')]);_0x52e9c8(_0x331163);}else{_0x474216({'statusCode':0x194,'message':_0xd43f('0x15')});}}else{_0x474216({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x4a2b49){logger[_0xd43f('0x16')]('['+[_0x547e12[_0xd43f('0x17')]()]+']',_0x4a2b49['message']);_0x474216(_0x4a2b49);});});}function getUser(_0x3c0953,_0x3647df,_0x57635e){return function(_0x5ced70){return new Promise(function(_0x4fd639,_0x54bbcd){var _0x135734={'method':_0xd43f('0xa'),'uri':_0x57635e+'/api/selector/owners','json':!![]};_0x135734[_0xd43f('0x18')]=_0x3647df;logger[_0xd43f('0xc')](_0xd43f('0x19'));return rp(_0x135734)[_0xd43f('0xe')](function(_0x5deaed){if(_0x5deaed){var _0xa86810=_0x5deaed[_0xd43f('0xf')];var _0xb37d52=![];var _0x564261=null;if(_0x5ced70['agentEmail']!==null){logger['info'](_0xd43f('0x1a'),_0x5ced70[_0xd43f('0x1b')]);_0x5ced70[_0xd43f('0x1c')]=_0x5ced70[_0xd43f('0x1b')];for(_0x564261=0x0;_0x564261<_0xa86810[_0xd43f('0x10')];_0x564261++){if(_0xa86810[_0x564261][_0xd43f('0x11')]===_0x5ced70[_0xd43f('0x1b')]){_0xb37d52=!![];_0x5ced70['userId']=_0xa86810[_0x564261]['id'];logger[_0xd43f('0xc')]('User\x20found:',_0x5ced70[_0xd43f('0x1d')]);}}}if(!_0xb37d52){logger['info']('Admin\x20selected');_0x5ced70[_0xd43f('0x1c')]=_0x5ced70[_0xd43f('0x12')];_0x5ced70[_0xd43f('0x1d')]=_0x5ced70[_0xd43f('0x13')];_0xb37d52=!![];}if(_0xb37d52){_0x4fd639(_0x5ced70);}else{_0x54bbcd({'statusCode':0x194,'message':_0xd43f('0x15')});}}else{_0x54bbcd({'statusCode':0x194,'message':_0xd43f('0x15')});}})[_0xd43f('0x1e')](function(_0xc2e3da){logger[_0xd43f('0x16')]('['+[_0x3c0953['toUpperCase']()]+']',_0xc2e3da[_0xd43f('0x1f')]);_0x54bbcd(_0xc2e3da);});});};}function searchContact(_0x2d5915,_0x366cf7,_0x2d54a7,_0x209ccd){return new Promise(function(_0x4a8b4d,_0x161540){var _0x7b6761={'method':_0xd43f('0xa'),'headers':_0x366cf7,'uri':_0x2d5915+_0xd43f('0x20')+_0x209ccd+_0xd43f('0x21')+_0x2d54a7+_0xd43f('0x22'),'json':!![]};rp(_0x7b6761)['then'](function(_0x1e54d0){var _0x1f476d=_['find'](_0x1e54d0[_0xd43f('0x23')]['contacts'],[_0x2d54a7,_0x209ccd]);_0x4a8b4d(_0x1f476d);})['catch'](function(_0x45e84a){_0x161540(_0x45e84a);});});}function getEndUser(_0x18472c,_0x29e123,_0x4d032e){return function(_0x410921){return new Promise(function(_0x23c4f7,_0x5bba3d){logger['info'](util[_0xd43f('0x24')](_0xd43f('0x25'),_0x410921[_0xd43f('0x26')]));searchContact(_0x4d032e,_0x29e123,_0xd43f('0x27'),_0x410921['contactNumber'])[_0xd43f('0xe')](function(_0x24015b){if(_0x24015b){_0x410921[_0xd43f('0x28')]=_0x24015b['id'];logger[_0xd43f('0xc')](_0xd43f('0x29'),_0x410921[_0xd43f('0x28')]);return _0x23c4f7(_0x410921);}searchContact(_0x4d032e,_0x29e123,_0xd43f('0x2a'),_0x410921['contactNumber'])[_0xd43f('0xe')](function(_0x57ac0f){if(_0x57ac0f){_0x410921[_0xd43f('0x28')]=_0x57ac0f['id'];logger[_0xd43f('0xc')](_0xd43f('0x2b'),_0x410921['endUserId']);return _0x23c4f7(_0x410921);}createEndUser(_0x410921,_0x18472c,_0x29e123,_0x4d032e)[_0xd43f('0xe')](function(_0x2ccd50){logger['info'](_0xd43f('0x2c'),_0x2ccd50[_0xd43f('0x28')]);return _0x23c4f7(_0x2ccd50);});});})[_0xd43f('0x1e')](function(_0x4ed4eb){_0x5bba3d(_0x4ed4eb);});});};}function createEndUser(_0x291f05,_0x13f996,_0x1c0d7f,_0x20682d){return new Promise(function(_0x176aac,_0x5bce4d){var _0x3386d9=moment();var _0x4b1c73={'method':_0xd43f('0x2d'),'uri':_0x20682d+_0xd43f('0x2e'),'body':{'contact':{'last_name':_0x291f05[_0xd43f('0x26')],'work_number':_0x291f05['contactNumber'],'mobile_number':_0x291f05[_0xd43f('0x26')],'owner_id':_0x291f05[_0xd43f('0x1d')],'created_at':_0x3386d9['format'](_0xd43f('0x2f'))}},'json':!![]};_0x4b1c73['headers']=_0x1c0d7f;logger['info'](_0xd43f('0x30'));return rp(_0x4b1c73)['then'](function(_0x5b648f){_0x291f05[_0xd43f('0x28')]=_0x5b648f['contact']['id'];_0x176aac(_0x291f05);})['catch'](function(_0x10679a){logger[_0xd43f('0x16')]('['+[_0x13f996[_0xd43f('0x17')]()]+']',_0x10679a[_0xd43f('0x1f')]);_0x5bce4d(_0x10679a[_0xd43f('0x1f')]);});});}function getTicket(_0x5caa8c,_0x44d29f,_0x236571,_0x8016ca,_0x3a823b){return function(_0x31e8c2){logger[_0xd43f('0xc')](_0xd43f('0x31'));return new Promise(function(_0x41f7e4,_0x173b01){var _0x3929e9=moment();var _0x37f496={'method':'POST','uri':_0x236571+_0xd43f('0x32'),'body':{'title':intUtil[_0xd43f('0x33')](_0x8016ca['Subjects'],_0x3a823b,'\x20'),'description':intUtil['getString'](_0x8016ca[_0xd43f('0x34')],_0x3a823b,'\x0a'),'owner_id':_0x31e8c2[_0xd43f('0x1d')],'creater_id':_0x31e8c2[_0xd43f('0x13')],'targetable_id':_0x31e8c2['endUserId'],'targetable_type':_0xd43f('0x35'),'created_at':_0x3929e9[_0xd43f('0x24')](_0xd43f('0x2f')),'due_date':_0x3929e9[_0xd43f('0x36')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x37f496[_0xd43f('0x18')]=_0x44d29f;return rp(_0x37f496)[_0xd43f('0xe')](function(_0x156e8a){_0x31e8c2['ticketId']=_0x156e8a[_0xd43f('0x37')]['id'];logger[_0xd43f('0xc')](_0xd43f('0x38'),_0x31e8c2[_0xd43f('0x39')]);_0x41f7e4(_0x31e8c2);})[_0xd43f('0x1e')](function(_0xc2a5a6){logger[_0xd43f('0x16')]('['+[_0x5caa8c[_0xd43f('0x17')]()]+']',_0xc2a5a6['message']);_0x173b01(_0xc2a5a6[_0xd43f('0x1f')]);});});};}function emit(_0x464d7d,_0x386dfa,_0x400273){var _0x343902={'uri':_0x464d7d+_0xd43f('0x3a')+_0x400273};io['to'](util[_0xd43f('0x24')](_0xd43f('0x3b'),_0x386dfa))[_0xd43f('0x3c')](_0xd43f('0x3d'),_0x343902);}exports['cs']=function(_0x3a17fe,_0x517509,_0x440627,_0x15d79c,_0x3b6d79,_0x237bc1,_0x45207d,_0x4763b7){var _0x54eaa2={};var _0x9e1727={'Authorization':'Token\x20token='+_0x237bc1[_0xd43f('0x3e')]};_0x237bc1['remoteUri']=intUtil[_0xd43f('0x3f')](_0x237bc1[_0xd43f('0x40')]);_0x237bc1[_0xd43f('0x41')]=intUtil[_0xd43f('0x3f')](_0x237bc1[_0xd43f('0x41')]);var _0x2eb1bf=_0x237bc1[_0xd43f('0x40')];_0x54eaa2[_0xd43f('0x12')]=_0x237bc1[_0xd43f('0x42')];_0x54eaa2['contactNumber']=_0x4763b7[_0xd43f('0x43')]()===_0xd43f('0x44')?_0x517509[_0xd43f('0x45')]:_0x517509[_0xd43f('0x46')];_0x54eaa2[_0xd43f('0x47')]=_0x4763b7===_0xd43f('0x48')||_0x4763b7===_0xd43f('0x49')?_0xd43f('0x48'):_0xd43f('0x44');if(_0x15d79c){_0x54eaa2[_0xd43f('0x1b')]=_0x15d79c[_0xd43f('0x11')];}var _0x5bb8e5=util['format'](_0xd43f('0x4a'),_0x237bc1[_0xd43f('0x41')],_0x517509[_0xd43f('0x4b')],md5(_0x517509['uniqueid']));if(_0x3b6d79&&_0x3b6d79['monitor_format']){logger[_0xd43f('0xc')](_0xd43f('0x4c'),_0xd43f('0x4d'));_0x517509[_0xd43f('0x4e')]=_0x5bb8e5;}else if(_0x45207d&&_0x45207d[_0xd43f('0x4f')]&&_0x45207d['recordingFormat']!==_0xd43f('0x50')){logger[_0xd43f('0xc')](_0xd43f('0x51'),_0xd43f('0x4d'));_0x517509[_0xd43f('0x4e')]=_0x5bb8e5;}else{_0x517509[_0xd43f('0x4e')]='';}return getAdminId(_0x54eaa2,_0x4763b7,_0x9e1727,_0x2eb1bf)['then'](getUser(_0x4763b7,_0x9e1727,_0x2eb1bf))[_0xd43f('0xe')](getEndUser(_0x4763b7,_0x9e1727,_0x2eb1bf))[_0xd43f('0xe')](getTicket(_0x4763b7,_0x9e1727,_0x2eb1bf,_0x440627,_0x517509))[_0xd43f('0xe')](function(_0x376d02){logger[_0xd43f('0xc')](util[_0xd43f('0x24')](_0xd43f('0x52'),_0x376d02[_0xd43f('0x39')]));if(_0x4763b7!=='unmanaged'){logger[_0xd43f('0xc')]('['+[_0x4763b7[_0xd43f('0x17')]()]+']',_0xd43f('0x53'));emit(_0x2eb1bf,_0x15d79c['name'],_0x376d02[_0xd43f('0x28')]);}})[_0xd43f('0x1e')](function(_0xb719d){logger[_0xd43f('0x16')]('['+[_0x4763b7[_0xd43f('0x17')]()]+_0xd43f('0x54'),util[_0xd43f('0x55')](_0xb719d,{'showHidden':!![],'depth':null}));});};