Built motion from commit f57cc866.|2.6.31
[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 _0xc0b3=['freshsales','redis','defaults','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','catch','/api/lookup?q=','&f=','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Descriptions','Contact','ticketId','task','Task\x20created:','user:%s','trigger:browser:url','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','queue','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','bluebird','ioredis','../../../../config/environment','../../../../config/logger'];(function(_0x1f88d4,_0x3f2a9c){var _0x31970d=function(_0x439a8a){while(--_0x439a8a){_0x1f88d4['push'](_0x1f88d4['shift']());}};_0x31970d(++_0x3f2a9c);}(_0xc0b3,0x130));var _0x3c0b=function(_0x324e6d,_0x18d296){_0x324e6d=_0x324e6d-0x0;var _0x193e28=_0xc0b3[_0x324e6d];return _0x193e28;};'use strict';var _=require(_0x3c0b('0x0'));var rp=require(_0x3c0b('0x1'));var md5=require(_0x3c0b('0x2'));var util=require(_0x3c0b('0x3'));var moment=require('moment');var Promise=require(_0x3c0b('0x4'));var Redis=require(_0x3c0b('0x5'));var intUtil=require('./util');var config=require(_0x3c0b('0x6'));var logger=require(_0x3c0b('0x7'))(_0x3c0b('0x8'));config[_0x3c0b('0x9')]=_[_0x3c0b('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x3c0b('0xb'))(new Redis(config[_0x3c0b('0x9')]));function getAdminId(_0x5e1196,_0x4ef4e5,_0x51dcea,_0x27af7e){return new Promise(function(_0x48405f,_0x5ef16c){var _0x23ae25=![];var _0x4d0f48={'method':_0x3c0b('0xc'),'uri':_0x27af7e+_0x3c0b('0xd'),'json':!![]};_0x4d0f48[_0x3c0b('0xe')]=_0x51dcea;logger[_0x3c0b('0xf')](_0x3c0b('0x10'));return rp(_0x4d0f48)[_0x3c0b('0x11')](function(_0x84fddf){if(_0x84fddf){var _0x1365e4=_0x84fddf[_0x3c0b('0x12')];var _0x5ce5df=null;for(_0x5ce5df=0x0;_0x5ce5df<_0x1365e4[_0x3c0b('0x13')];_0x5ce5df++){if(_0x1365e4[_0x5ce5df][_0x3c0b('0x14')]===_0x5e1196[_0x3c0b('0x15')]){_0x5e1196[_0x3c0b('0x16')]=_0x1365e4[_0x5ce5df]['id'];_0x23ae25=!![];}}if(_0x23ae25){logger[_0x3c0b('0xf')]('Admin\x20found:',_0x5e1196['adminId']);_0x48405f(_0x5e1196);}else{_0x5ef16c({'statusCode':0x194,'message':_0x3c0b('0x17')});}}else{_0x5ef16c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x20daef){logger[_0x3c0b('0x18')]('['+[_0x4ef4e5[_0x3c0b('0x19')]()]+']',_0x20daef[_0x3c0b('0x1a')]);_0x5ef16c(_0x20daef);});});}function getUser(_0x4dc0f6,_0x43b75e,_0x2e6f40){return function(_0x194e20){return new Promise(function(_0x381db8,_0x2d2ce3){var _0xb5fd76={'method':_0x3c0b('0xc'),'uri':_0x2e6f40+'/api/selector/owners','json':!![]};_0xb5fd76[_0x3c0b('0xe')]=_0x43b75e;logger[_0x3c0b('0xf')](_0x3c0b('0x1b'));return rp(_0xb5fd76)[_0x3c0b('0x11')](function(_0x41e84f){if(_0x41e84f){var _0x4e8b4c=_0x41e84f[_0x3c0b('0x12')];var _0x39864d=![];var _0x26f55a=null;if(_0x194e20[_0x3c0b('0x1c')]!==null){logger[_0x3c0b('0xf')](_0x3c0b('0x1d'),_0x194e20['agentEmail']);_0x194e20['userEmail']=_0x194e20['agentEmail'];for(_0x26f55a=0x0;_0x26f55a<_0x4e8b4c['length'];_0x26f55a++){if(_0x4e8b4c[_0x26f55a][_0x3c0b('0x14')]===_0x194e20['agentEmail']){_0x39864d=!![];_0x194e20[_0x3c0b('0x1e')]=_0x4e8b4c[_0x26f55a]['id'];logger[_0x3c0b('0xf')](_0x3c0b('0x1f'),_0x194e20[_0x3c0b('0x1e')]);}}}if(!_0x39864d){logger[_0x3c0b('0xf')](_0x3c0b('0x20'));_0x194e20[_0x3c0b('0x21')]=_0x194e20[_0x3c0b('0x15')];_0x194e20['userId']=_0x194e20[_0x3c0b('0x16')];_0x39864d=!![];}if(_0x39864d){_0x381db8(_0x194e20);}else{_0x2d2ce3({'statusCode':0x194,'message':_0x3c0b('0x17')});}}else{_0x2d2ce3({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x3c0b('0x22')](function(_0x186b57){logger[_0x3c0b('0x18')]('['+[_0x4dc0f6[_0x3c0b('0x19')]()]+']',_0x186b57[_0x3c0b('0x1a')]);_0x2d2ce3(_0x186b57);});});};}function searchContact(_0x3fc392,_0x23263c,_0x47cd17,_0x57f4a9){return new Promise(function(_0x41e325,_0x5a134b){var _0x3652c0={'method':_0x3c0b('0xc'),'headers':_0x23263c,'uri':_0x3fc392+_0x3c0b('0x23')+_0x57f4a9+_0x3c0b('0x24')+_0x47cd17+'&entities=contact','json':!![]};rp(_0x3652c0)['then'](function(_0x1f52ea){var _0x216760=_['find'](_0x1f52ea[_0x3c0b('0x25')][_0x3c0b('0x25')],[_0x47cd17,_0x57f4a9]);_0x41e325(_0x216760);})[_0x3c0b('0x22')](function(_0x5b3801){_0x5a134b(_0x5b3801);});});}function getEndUser(_0x54356c,_0x45395b,_0x18d37d){return function(_0x50884c){return new Promise(function(_0x2de062,_0x5ea54e){logger[_0x3c0b('0xf')](util[_0x3c0b('0x26')](_0x3c0b('0x27'),_0x50884c[_0x3c0b('0x28')]));searchContact(_0x18d37d,_0x45395b,_0x3c0b('0x29'),_0x50884c['contactNumber'])[_0x3c0b('0x11')](function(_0x30aa5e){if(_0x30aa5e){_0x50884c[_0x3c0b('0x2a')]=_0x30aa5e['id'];logger[_0x3c0b('0xf')](_0x3c0b('0x2b'),_0x50884c['endUserId']);return _0x2de062(_0x50884c);}searchContact(_0x18d37d,_0x45395b,_0x3c0b('0x2c'),_0x50884c[_0x3c0b('0x28')])[_0x3c0b('0x11')](function(_0x358058){if(_0x358058){_0x50884c[_0x3c0b('0x2a')]=_0x358058['id'];logger[_0x3c0b('0xf')](_0x3c0b('0x2d'),_0x50884c[_0x3c0b('0x2a')]);return _0x2de062(_0x50884c);}createEndUser(_0x50884c,_0x54356c,_0x45395b,_0x18d37d)[_0x3c0b('0x11')](function(_0x16ba63){logger[_0x3c0b('0xf')]('Contact\x20created:',_0x16ba63[_0x3c0b('0x2a')]);return _0x2de062(_0x16ba63);});});})['catch'](function(_0x4b5fb4){_0x5ea54e(_0x4b5fb4);});});};}function createEndUser(_0x29b1c1,_0x4c20a0,_0x3cefb0,_0x4ba81f){return new Promise(function(_0x4520f8,_0x519a98){var _0xc52f2b=moment();var _0x168d03={'method':_0x3c0b('0x2e'),'uri':_0x4ba81f+_0x3c0b('0x2f'),'body':{'contact':{'last_name':_0x29b1c1['contactNumber'],'work_number':_0x29b1c1[_0x3c0b('0x28')],'mobile_number':_0x29b1c1[_0x3c0b('0x28')],'owner_id':_0x29b1c1[_0x3c0b('0x1e')],'created_at':_0xc52f2b[_0x3c0b('0x26')](_0x3c0b('0x30'))}},'json':!![]};_0x168d03[_0x3c0b('0xe')]=_0x3cefb0;logger[_0x3c0b('0xf')](_0x3c0b('0x31'));return rp(_0x168d03)[_0x3c0b('0x11')](function(_0xd13b33){_0x29b1c1[_0x3c0b('0x2a')]=_0xd13b33[_0x3c0b('0x32')]['id'];_0x4520f8(_0x29b1c1);})[_0x3c0b('0x22')](function(_0x2d0c87){logger[_0x3c0b('0x18')]('['+[_0x4c20a0[_0x3c0b('0x19')]()]+']',_0x2d0c87[_0x3c0b('0x1a')]);_0x519a98(_0x2d0c87[_0x3c0b('0x1a')]);});});}function getTicket(_0xf122d7,_0x2de118,_0x3b6900,_0xa5a1c8,_0x1817c2){return function(_0x2db351){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x363b14,_0x3f4a3e){var _0x287224=moment();var _0x49c48b={'method':_0x3c0b('0x2e'),'uri':_0x3b6900+_0x3c0b('0x33'),'body':{'title':intUtil[_0x3c0b('0x34')](_0xa5a1c8['Subjects'],_0x1817c2,'\x20'),'description':intUtil[_0x3c0b('0x34')](_0xa5a1c8[_0x3c0b('0x35')],_0x1817c2,'\x0a'),'owner_id':_0x2db351[_0x3c0b('0x1e')],'creater_id':_0x2db351[_0x3c0b('0x16')],'targetable_id':_0x2db351[_0x3c0b('0x2a')],'targetable_type':_0x3c0b('0x36'),'created_at':_0x287224[_0x3c0b('0x26')](_0x3c0b('0x30')),'due_date':_0x287224['add'](0x1e,'m')[_0x3c0b('0x26')](_0x3c0b('0x30'))},'json':!![]};_0x49c48b['headers']=_0x2de118;return rp(_0x49c48b)[_0x3c0b('0x11')](function(_0x589d42){_0x2db351[_0x3c0b('0x37')]=_0x589d42[_0x3c0b('0x38')]['id'];logger[_0x3c0b('0xf')](_0x3c0b('0x39'),_0x2db351[_0x3c0b('0x37')]);_0x363b14(_0x2db351);})[_0x3c0b('0x22')](function(_0x30a352){logger[_0x3c0b('0x18')]('['+[_0xf122d7[_0x3c0b('0x19')]()]+']',_0x30a352[_0x3c0b('0x1a')]);_0x3f4a3e(_0x30a352['message']);});});};}function emit(_0x17ff5c,_0x5314c4,_0xd08164){var _0x18a270={'uri':_0x17ff5c+'/contacts/'+_0xd08164};io['to'](util[_0x3c0b('0x26')](_0x3c0b('0x3a'),_0x5314c4))['emit'](_0x3c0b('0x3b'),_0x18a270);}exports['cs']=function(_0x5752fb,_0x2d252a,_0x20f01f,_0x5c387e,_0x19449e,_0x5a84a7,_0x13ab19,_0x4215f3){var _0x5daeda={};var _0x491180={'Authorization':'Token\x20token='+_0x5a84a7[_0x3c0b('0x3c')]};_0x5a84a7[_0x3c0b('0x3d')]=intUtil['stripTrailingSlash'](_0x5a84a7[_0x3c0b('0x3d')]);_0x5a84a7[_0x3c0b('0x3e')]=intUtil[_0x3c0b('0x3f')](_0x5a84a7['serverUrl']);var _0x5d4af3=_0x5a84a7[_0x3c0b('0x3d')];_0x5daeda[_0x3c0b('0x15')]=_0x5a84a7[_0x3c0b('0x40')];_0x5daeda['contactNumber']=_0x4215f3[_0x3c0b('0x41')]()==='outbound'?_0x2d252a['destcalleridnum']:_0x2d252a['calleridnum'];_0x5daeda['callDirection']=_0x4215f3===_0x3c0b('0x42')||_0x4215f3==='unmanaged'?'queue':'outbound';if(_0x5c387e){_0x5daeda[_0x3c0b('0x1c')]=_0x5c387e[_0x3c0b('0x14')];}var _0x3a047d=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5a84a7[_0x3c0b('0x3e')],_0x2d252a[_0x3c0b('0x43')],md5(_0x2d252a[_0x3c0b('0x43')]));if(_0x19449e&&_0x19449e[_0x3c0b('0x44')]){logger[_0x3c0b('0xf')]('[QUEUE]',_0x3c0b('0x45'));_0x2d252a[_0x3c0b('0x46')]=_0x3a047d;}else if(_0x13ab19&&_0x13ab19[_0x3c0b('0x47')]&&_0x13ab19['recordingFormat']!==_0x3c0b('0x48')){logger['info']('[OUTBOUND]',_0x3c0b('0x45'));_0x2d252a[_0x3c0b('0x46')]=_0x3a047d;}else{_0x2d252a[_0x3c0b('0x46')]='';}return getAdminId(_0x5daeda,_0x4215f3,_0x491180,_0x5d4af3)[_0x3c0b('0x11')](getUser(_0x4215f3,_0x491180,_0x5d4af3))[_0x3c0b('0x11')](getEndUser(_0x4215f3,_0x491180,_0x5d4af3))[_0x3c0b('0x11')](getTicket(_0x4215f3,_0x491180,_0x5d4af3,_0x20f01f,_0x2d252a))['then'](function(_0xa7697c){logger[_0x3c0b('0xf')](util['format'](_0x3c0b('0x49'),_0xa7697c[_0x3c0b('0x37')]));if(_0x4215f3!=='unmanaged'){logger['info']('['+[_0x4215f3['toUpperCase']()]+']',_0x3c0b('0x4a'));emit(_0x5d4af3,_0x5c387e[_0x3c0b('0x4b')],_0xa7697c[_0x3c0b('0x2a')]);}})[_0x3c0b('0x22')](function(_0x2e93e5){logger[_0x3c0b('0x18')]('['+[_0x4215f3['toUpperCase']()]+_0x3c0b('0x4c'),util[_0x3c0b('0x4d')](_0x2e93e5,{'showHidden':!![],'depth':null}));});};