Built motion from commit (unavailable).|2.3.4
[motion2.git] / server / services / ami / trigger / integration / freshdesk.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 _0x5450=['Subjects','Descriptions','name','Fields','custom_fields','mapValues','value','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','GET','map','forEach','type','nameField','customField','toLowerCase','string','idField','variable','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','[QUEUE]','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','abandoned','[ABANDONED]','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','localhost','socket.io-emitter','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString'];(function(_0x590097,_0x34c41f){var _0x14fbeb=function(_0x10271a){while(--_0x10271a){_0x590097['push'](_0x590097['shift']());}};_0x14fbeb(++_0x34c41f);}(_0x5450,0x1b9));var _0x0545=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x5450[_0x4fde08];return _0x12e725;};'use strict';var _=require('lodash');var rp=require(_0x0545('0x0'));var md5=require(_0x0545('0x1'));var util=require('util');var Redis=require(_0x0545('0x2'));var intUtil=require(_0x0545('0x3'));var config=require(_0x0545('0x4'));var logger=require(_0x0545('0x5'))(_0x0545('0x6'));config['redis']=_['defaults'](config['redis'],{'host':_0x0545('0x7'),'port':0x18eb});var io=require(_0x0545('0x8'))(new Redis(config[_0x0545('0x9')]));var headers={'Content-Type':_0x0545('0xa'),'Accept':'application/json'};function emit(_0x208e93,_0xc6b56f,_0x3a1e64){io['to'](_0x208e93)[_0x0545('0xb')](_0xc6b56f,_0x3a1e64);}function getTicket(_0x4f7c25,_0x4b5fbf,_0x2306fd,_0xf2bfff,_0x50cf0c){logger[_0x0545('0xc')](_0x0545('0xd'));var _0x5deae7=_[_0x0545('0xe')]({'responder_id':_0x4b5fbf['id'],'requester_id':_0x2306fd['id'],'name':util[_0x0545('0xf')](_0x0545('0x10'),_0x50cf0c['calleridname']),'phone':_0x50cf0c[_0x0545('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0545('0x12')](_0xf2bfff[_0x0545('0x13')],_0x50cf0c,'\x20'),'description':intUtil[_0x0545('0x12')](_0xf2bfff[_0x0545('0x14')],_0x50cf0c,'<br>'),'tags':getTags(_0xf2bfff['Tags'],_0x0545('0x15'))},getCustomFields(_0xf2bfff[_0x0545('0x16')],_0x50cf0c));_0x5deae7[_0x0545('0x17')]=_[_0x0545('0x18')](_['keyBy'](_0x5deae7['custom_fields'],'id'),_0x0545('0x19'));return request({'uri':util['format'](_0x0545('0x1a'),_0x4f7c25['remoteUri']),'method':_0x0545('0x1b'),'body':_0x5deae7})[_0x0545('0x1c')](function(_0x248a18){logger[_0x0545('0xc')](_0x0545('0x1d'));return _0x248a18;});}function getUser(_0x1ad74f,_0x3c73b5){if(intUtil[_0x0545('0x1e')](_0x3c73b5)){return request({'uri':util['format'](_0x0545('0x1f'),_0x1ad74f[_0x0545('0x20')]),'qs':{'email':_0x3c73b5}})[_0x0545('0x1c')](function(_0x444728){if(_0x444728[_0x0545('0x21')]){logger[_0x0545('0xc')](_0x0545('0x22'));return _['find'](_0x444728,function(_0x3db31e){return _0x3db31e[_0x0545('0x23')][_0x0545('0x24')]===_0x3c73b5;});}else{logger[_0x0545('0xc')](_0x0545('0x25'));return request({'uri':util[_0x0545('0xf')]('%s/api/v2/agents/me',_0x1ad74f[_0x0545('0x20')])})[_0x0545('0x1c')](function(_0x2a4b7a){logger[_0x0545('0xc')](_0x0545('0x26'));return _0x2a4b7a;});}});}else{logger[_0x0545('0xc')](_0x0545('0x27'));return request({'uri':util[_0x0545('0xf')](_0x0545('0x28'),_0x1ad74f[_0x0545('0x20')])})[_0x0545('0x1c')](function(_0x27fe72){logger[_0x0545('0xc')]('Admin\x20account\x20selected.');return _0x27fe72;});}}function getEndUser(_0x2091c8,_0x3475a0,_0x22b0aa){logger[_0x0545('0xc')]('Searching\x20enduser\x20with\x20phone',_0x22b0aa);return request({'uri':util['format']('%s/api/v2/contacts',_0x2091c8[_0x0545('0x20')]),'qs':{'phone':_0x22b0aa}})[_0x0545('0x1c')](function(_0x5be970){if(_0x5be970[_0x0545('0x21')]){logger[_0x0545('0xc')](_0x0545('0x29'));return _['find'](_0x5be970,{'phone':_0x22b0aa});}else{logger['info'](_0x0545('0x2a'));return request({'uri':util[_0x0545('0xf')]('%s/api/v2/contacts',_0x2091c8['remoteUri']),'method':'POST','body':{'name':_0x3475a0,'phone':_0x22b0aa}})[_0x0545('0x1c')](function(_0x34b109){logger['info'](_0x0545('0x2b'));return _0x34b109;});}});}function getAuth(_0x5e39e2){return util[_0x0545('0xf')](_0x0545('0x2c'),new Buffer(_0x5e39e2[_0x0545('0x2d')]+':X')[_0x0545('0x2e')]('base64'));}function request(_0xed850f){logger[_0x0545('0x2f')](_0x0545('0x30'),JSON[_0x0545('0x31')](_0xed850f));return rp(_['defaults'](_0xed850f,{'method':_0x0545('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x31d1e6,_0xfc6f0f){var _0x44d105=[];if(_0x31d1e6&&_0x31d1e6['length']>0x0){_0x44d105=_[_0x0545('0x33')](_0x31d1e6,_0xfc6f0f);}return _0x44d105;}function getCustomFields(_0x11ddee,_0x499f1d){var _0x5f57c5=[];var _0x52f4d8={'custom_fields':[]};if(_0x11ddee[_0x0545('0x21')]>0x0){_[_0x0545('0x34')](_0x11ddee,function(_0x3c1f2d){if(_0x3c1f2d[_0x0545('0x35')]==='string'&&_0x3c1f2d[_0x0545('0x36')]&&!_0x3c1f2d[_0x0545('0x37')]){_0x52f4d8[_0x3c1f2d['nameField'][_0x0545('0x38')]()]=_0x3c1f2d['content'][_0x0545('0x2e')]();}else if(_0x3c1f2d[_0x0545('0x35')]===_0x0545('0x39')&&_0x3c1f2d[_0x0545('0x3a')]&&_0x3c1f2d[_0x0545('0x37')]){_0x52f4d8[_0x0545('0x17')]['push']({'id':_0x3c1f2d[_0x0545('0x3a')],'value':_0x3c1f2d['content'][_0x0545('0x2e')]()});}else if(_0x3c1f2d[_0x0545('0x35')]===_0x0545('0x3b')&&_0x3c1f2d[_0x0545('0x3c')]&&_0x3c1f2d[_0x0545('0x3a')]&&_0x3c1f2d[_0x0545('0x37')]){_0x499f1d[_0x3c1f2d[_0x0545('0x3c')]]&&_0x52f4d8[_0x0545('0x17')][_0x0545('0x3d')]({'id':_0x3c1f2d[_0x0545('0x3a')],'value':_0x499f1d[_0x3c1f2d[_0x0545('0x3c')]][_0x0545('0x2e')]()});}else if(_0x3c1f2d[_0x0545('0x35')]===_0x0545('0x3e')&&_0x3c1f2d[_0x0545('0x3f')]&&_0x3c1f2d['Variable']['name']&&_0x3c1f2d[_0x0545('0x3a')]&&_0x3c1f2d[_0x0545('0x37')]){_0x499f1d[_0x3c1f2d[_0x0545('0x3f')]['name'][_0x0545('0x38')]()]&&_0x52f4d8['custom_fields'][_0x0545('0x3d')]({'id':_0x3c1f2d[_0x0545('0x3a')],'value':_0x499f1d[_0x3c1f2d[_0x0545('0x3f')][_0x0545('0x15')]['toLowerCase']()]['toString']()});}});}return _0x52f4d8;}exports[_0x0545('0x40')]=function(_0x5c48fc,_0x34d92a,_0x1a5603,_0x1d2aa8,_0x463577,_0x5acffc){var _0x158ab8,_0x5adfb2;_0x5acffc[_0x0545('0x20')]=intUtil[_0x0545('0x41')](_0x5acffc[_0x0545('0x20')]);_0x5acffc[_0x0545('0x42')]=intUtil[_0x0545('0x41')](_0x5acffc[_0x0545('0x42')]);if(_0x463577&&_0x463577[_0x0545('0x43')]){logger['info']('[QUEUE]',_0x0545('0x44'));_0x34d92a[_0x0545('0x45')]=util[_0x0545('0xf')](_0x0545('0x46'),_0x5acffc['serverUrl'],_0x34d92a[_0x0545('0x47')],md5(_0x34d92a[_0x0545('0x47')]));}else{_0x34d92a[_0x0545('0x45')]='';}headers[_0x0545('0x48')]=getAuth(_0x5acffc);return getUser(_0x5acffc,_0x1d2aa8[_0x0545('0x24')])[_0x0545('0x1c')](function(_0x54eeee){_0x158ab8=_0x54eeee;logger[_0x0545('0xc')](_0x0545('0x49'),_0x158ab8['id']);return getEndUser(_0x5acffc,_0x34d92a[_0x0545('0x4a')],_0x34d92a[_0x0545('0x11')]);})[_0x0545('0x1c')](function(_0xf58f59){_0x5adfb2=_0xf58f59;logger[_0x0545('0xc')](_0x0545('0x4b'),_0x5adfb2['id']);return getTicket(_0x5acffc,_0x158ab8,_0x5adfb2,_0x1a5603,_0x34d92a);})[_0x0545('0x1c')](function(_0x577891){if(_0x577891&&_0x577891['id']){logger[_0x0545('0xc')](_0x0545('0x1d'));logger[_0x0545('0xc')](_0x0545('0x4c'),_0x577891['id']);logger[_0x0545('0xc')]('[QUEUE]',_0x0545('0x4d'));emit(util['format'](_0x0545('0x4e'),_0x1d2aa8['name']),_0x0545('0x4f'),{'uri':util['format'](_0x0545('0x50'),_0x5acffc[_0x0545('0x20')],_0x577891['id'])});}})[_0x0545('0x51')](function(_0x5c5dbb){logger[_0x0545('0x52')](_0x0545('0x53'),JSON[_0x0545('0x31')](_0x5c5dbb));});};exports[_0x0545('0x54')]=function(_0x45638d,_0x5d5bb9,_0x2d7ec7,_0x1a8ce1,_0x200779,_0x90603c,_0x55f61e){var _0x111e64,_0x5a0158;_0x90603c['remoteUri']=intUtil[_0x0545('0x41')](_0x90603c[_0x0545('0x20')]);_0x90603c[_0x0545('0x42')]=intUtil[_0x0545('0x41')](_0x90603c[_0x0545('0x42')]);if(_0x55f61e&&_0x55f61e[_0x0545('0x55')]&&_0x55f61e[_0x0545('0x55')]!==_0x0545('0x56')){logger[_0x0545('0xc')](_0x0545('0x57'),_0x0545('0x44'));_0x5d5bb9[_0x0545('0x45')]=util[_0x0545('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x90603c[_0x0545('0x42')],_0x5d5bb9[_0x0545('0x47')],md5(_0x5d5bb9['uniqueid']));}headers[_0x0545('0x48')]=getAuth(_0x90603c);return getUser(_0x90603c,_0x1a8ce1['email'])[_0x0545('0x1c')](function(_0x5312a8){_0x111e64=_0x5312a8;logger['info'](_0x0545('0x49'),_0x111e64['id']);return getEndUser(_0x90603c,_0x5d5bb9[_0x0545('0x58')],_0x5d5bb9[_0x0545('0x59')]);})['then'](function(_0x1af43a){_0x5a0158=_0x1af43a;logger['info'](_0x0545('0x4b'),_0x5a0158['id']);return getTicket(_0x90603c,_0x111e64,_0x5a0158,_0x2d7ec7,_0x5d5bb9);})['then'](function(_0x30d8cc){if(_0x30d8cc&&_0x30d8cc['id']){logger[_0x0545('0xc')]('Ticket\x20created!');logger[_0x0545('0xc')]('The\x20Ticket\x20ID\x20is:',_0x30d8cc['id']);logger['info'](_0x0545('0x57'),_0x0545('0x4d'));emit(util[_0x0545('0xf')](_0x0545('0x4e'),_0x1a8ce1[_0x0545('0x15')]),_0x0545('0x4f'),{'uri':util[_0x0545('0xf')](_0x0545('0x50'),_0x90603c[_0x0545('0x20')],_0x30d8cc['id'])});}})[_0x0545('0x51')](function(_0x4877a3){logger[_0x0545('0x52')](_0x0545('0x57'),JSON[_0x0545('0x31')](_0x4877a3));});};exports[_0x0545('0x5a')]=function(_0x152e55,_0x28e4f3,_0x4ad73d,_0x7ad790,_0x3fee74,_0x36ae7e){var _0x15ed3c,_0x5063d3;_0x36ae7e['remoteUri']=intUtil[_0x0545('0x41')](_0x36ae7e[_0x0545('0x20')]);_0x36ae7e[_0x0545('0x42')]=intUtil[_0x0545('0x41')](_0x36ae7e['serverUrl']);if(_0x3fee74&&_0x3fee74['monitor_format']){logger[_0x0545('0xc')](_0x0545('0x5b'),'Recording\x20is\x20enabled!');_0x28e4f3[_0x0545('0x45')]=util[_0x0545('0xf')](_0x0545('0x46'),_0x36ae7e['serverUrl'],_0x28e4f3['uniqueid'],md5(_0x28e4f3[_0x0545('0x47')]));}else{_0x28e4f3[_0x0545('0x45')]='';}headers['Authorization']=getAuth(_0x36ae7e);return getUser(_0x36ae7e,'')[_0x0545('0x1c')](function(_0x1cb426){_0x15ed3c=_0x1cb426;logger[_0x0545('0xc')]('The\x20User\x20ID\x20is:',_0x15ed3c['id']);return getEndUser(_0x36ae7e,_0x28e4f3[_0x0545('0x4a')],_0x28e4f3[_0x0545('0x11')]);})['then'](function(_0x1c5146){_0x5063d3=_0x1c5146;logger[_0x0545('0xc')](_0x0545('0x4b'),_0x5063d3['id']);return getTicket(_0x36ae7e,_0x15ed3c,_0x5063d3,_0x4ad73d,_0x28e4f3);})[_0x0545('0x1c')](function(_0x292af5){if(_0x292af5){logger[_0x0545('0xc')](_0x0545('0x1d'));logger['info'](_0x0545('0x4c'),_0x292af5['id']);}})['catch'](function(_0x562a20){logger[_0x0545('0x52')](_0x0545('0x5b'),JSON['stringify'](_0x562a20));});};