ea36356f76e89bac1afadccb04b59f7ac3f01a2c
[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 _0xd21a=['info','Creating\x20new\x20ticket...','merge','format','calleridnum','getString','Subjects','Descriptions','<br>','Tags','Fields','custom_fields','keyBy','value','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','then','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','GET','map','forEach','includes','string','customField','nameField','toLowerCase','picklist','type','push','content','variable','variableName','idField','Variable','name','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','catch','stringify','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','error','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit'];(function(_0xf1a927,_0x273b40){var _0x1128fc=function(_0x455edd){while(--_0x455edd){_0xf1a927['push'](_0xf1a927['shift']());}};_0x1128fc(++_0x273b40);}(_0xd21a,0xac));var _0xad21=function(_0x8c0711,_0x588bba){_0x8c0711=_0x8c0711-0x0;var _0x51ae03=_0xd21a[_0x8c0711];return _0x51ae03;};'use strict';var _=require(_0xad21('0x0'));var rp=require(_0xad21('0x1'));var md5=require(_0xad21('0x2'));var util=require('util');var Redis=require(_0xad21('0x3'));var intUtil=require(_0xad21('0x4'));var config=require(_0xad21('0x5'));var logger=require(_0xad21('0x6'))(_0xad21('0x7'));config[_0xad21('0x8')]=_[_0xad21('0x9')](config[_0xad21('0x8')],{'host':_0xad21('0xa'),'port':0x18eb});var io=require(_0xad21('0xb'))(new Redis(config[_0xad21('0x8')]));var headers={'Content-Type':_0xad21('0xc'),'Accept':_0xad21('0xc')};function emit(_0x455243,_0x51777c,_0x2a2ef4){io['to'](_0x455243)[_0xad21('0xd')](_0x51777c,_0x2a2ef4);}function getTicket(_0x120dd2,_0x29b5c8,_0x4284d5,_0x2cf582,_0x5a2eba){logger[_0xad21('0xe')](_0xad21('0xf'));var _0x360c97=_[_0xad21('0x10')]({'responder_id':_0x29b5c8['id'],'requester_id':_0x4284d5['id'],'name':util[_0xad21('0x11')]('Caller\x20-\x20%s',_0x5a2eba['calleridname']),'phone':_0x5a2eba[_0xad21('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xad21('0x13')](_0x2cf582[_0xad21('0x14')],_0x5a2eba,'\x20'),'description':intUtil[_0xad21('0x13')](_0x2cf582[_0xad21('0x15')],_0x5a2eba,_0xad21('0x16')),'tags':getTags(_0x2cf582[_0xad21('0x17')],'name')},getCustomFields(_0x2cf582[_0xad21('0x18')],_0x5a2eba));_0x360c97[_0xad21('0x19')]=_['mapValues'](_[_0xad21('0x1a')](_0x360c97[_0xad21('0x19')],'id'),_0xad21('0x1b'));return request({'uri':util['format'](_0xad21('0x1c'),_0x120dd2[_0xad21('0x1d')]),'method':_0xad21('0x1e'),'body':_0x360c97})['then'](function(_0x833b78){logger['info'](_0xad21('0x1f'));return _0x833b78;});}function getUser(_0x40f023,_0x23c3f6){if(intUtil[_0xad21('0x20')](_0x23c3f6)){return request({'uri':util[_0xad21('0x11')](_0xad21('0x21'),_0x40f023[_0xad21('0x1d')]),'qs':{'email':_0x23c3f6}})['then'](function(_0x3e8e38){if(_0x3e8e38[_0xad21('0x22')]){logger[_0xad21('0xe')](_0xad21('0x23'));return _['find'](_0x3e8e38,function(_0x151e4b){return _0x151e4b[_0xad21('0x24')][_0xad21('0x25')]===_0x23c3f6;});}else{logger[_0xad21('0xe')](_0xad21('0x26'));return request({'uri':util[_0xad21('0x11')](_0xad21('0x27'),_0x40f023[_0xad21('0x1d')])})['then'](function(_0x4907c7){logger[_0xad21('0xe')]('Admin\x20account\x20selected.');return _0x4907c7;});}});}else{logger[_0xad21('0xe')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xad21('0x11')]('%s/api/v2/agents/me',_0x40f023['remoteUri'])})[_0xad21('0x28')](function(_0x3cdf82){logger[_0xad21('0xe')]('Admin\x20account\x20selected.');return _0x3cdf82;});}}function getEndUser(_0x1e6e50,_0x1c1917,_0x363d5f){logger[_0xad21('0xe')](_0xad21('0x29'),_0x363d5f);return request({'uri':util[_0xad21('0x11')](_0xad21('0x2a'),_0x1e6e50[_0xad21('0x1d')]),'qs':{'phone':_0x363d5f}})['then'](function(_0x55c6bb){if(_0x55c6bb[_0xad21('0x22')]){logger[_0xad21('0xe')]('Enduser\x20found!');return _['find'](_0x55c6bb,{'phone':_0x363d5f});}else{logger['info'](_0xad21('0x2b'));return request({'uri':util['format'](_0xad21('0x2a'),_0x1e6e50[_0xad21('0x1d')]),'method':'POST','body':{'name':_0x1c1917,'phone':_0x363d5f}})['then'](function(_0x11da09){logger[_0xad21('0xe')](_0xad21('0x2c'));return _0x11da09;});}});}function getAuth(_0x2245f4){return util[_0xad21('0x11')](_0xad21('0x2d'),new Buffer(_0x2245f4['apiKey']+':X')[_0xad21('0x2e')](_0xad21('0x2f')));}function request(_0x599af8){logger[_0xad21('0x30')]('[HTTP]',JSON['stringify'](_0x599af8));return rp(_[_0xad21('0x9')](_0x599af8,{'method':_0xad21('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x252c9c,_0x5a0e35){var _0x3d380e=[];if(_0x252c9c&&_0x252c9c['length']>0x0){_0x3d380e=_[_0xad21('0x32')](_0x252c9c,_0x5a0e35);}return _0x3d380e;}function getCustomFields(_0x4dc566,_0x35366d){var _0x2162df=[];var _0x24c51a={'custom_fields':[]};if(_0x4dc566[_0xad21('0x22')]>0x0){_[_0xad21('0x33')](_0x4dc566,function(_0x57af0d){if(_[_0xad21('0x34')]([_0xad21('0x35'),'picklist'],_0x57af0d['type'])&&_0x57af0d['nameField']&&!_0x57af0d[_0xad21('0x36')]){_0x24c51a[_0x57af0d[_0xad21('0x37')][_0xad21('0x38')]()]=_0x57af0d['content'][_0xad21('0x2e')]();}else if(_[_0xad21('0x34')]([_0xad21('0x35'),_0xad21('0x39')],_0x57af0d[_0xad21('0x3a')])&&_0x57af0d['idField']&&_0x57af0d[_0xad21('0x36')]){_0x24c51a['custom_fields'][_0xad21('0x3b')]({'id':_0x57af0d['idField'],'value':_0x57af0d[_0xad21('0x3c')][_0xad21('0x2e')]()});}else if(_0x57af0d['type']===_0xad21('0x3d')&&_0x57af0d[_0xad21('0x3e')]&&_0x57af0d[_0xad21('0x3f')]&&_0x57af0d[_0xad21('0x36')]){_0x35366d[_0x57af0d[_0xad21('0x3e')]]&&_0x24c51a[_0xad21('0x19')][_0xad21('0x3b')]({'id':_0x57af0d[_0xad21('0x3f')],'value':_0x35366d[_0x57af0d[_0xad21('0x3e')]][_0xad21('0x2e')]()});}else if(_0x57af0d['type']==='customVariable'&&_0x57af0d[_0xad21('0x40')]&&_0x57af0d['Variable'][_0xad21('0x41')]&&_0x57af0d['idField']&&_0x57af0d[_0xad21('0x36')]){_0x35366d[_0x57af0d[_0xad21('0x40')][_0xad21('0x41')]['toLowerCase']()]&&_0x24c51a[_0xad21('0x19')][_0xad21('0x3b')]({'id':_0x57af0d[_0xad21('0x3f')],'value':_0x35366d[_0x57af0d[_0xad21('0x40')][_0xad21('0x41')][_0xad21('0x38')]()]['toString']()});}});}return _0x24c51a;}exports[_0xad21('0x42')]=function(_0x5ba599,_0x452d49,_0x4a176b,_0x422f87,_0x3be0f8,_0x4a2f59){var _0x7d02a9,_0x28bafa;_0x4a2f59[_0xad21('0x1d')]=intUtil[_0xad21('0x43')](_0x4a2f59[_0xad21('0x1d')]);_0x4a2f59[_0xad21('0x44')]=intUtil[_0xad21('0x43')](_0x4a2f59[_0xad21('0x44')]);if(_0x3be0f8&&_0x3be0f8['monitor_format']){logger[_0xad21('0xe')](_0xad21('0x45'),_0xad21('0x46'));_0x452d49[_0xad21('0x47')]=util[_0xad21('0x11')](_0xad21('0x48'),_0x4a2f59[_0xad21('0x44')],_0x452d49[_0xad21('0x49')],md5(_0x452d49['uniqueid']));}else{_0x452d49['recordingURL']='';}headers[_0xad21('0x4a')]=getAuth(_0x4a2f59);return getUser(_0x4a2f59,_0x422f87[_0xad21('0x25')])['then'](function(_0x152928){_0x7d02a9=_0x152928;logger[_0xad21('0xe')](_0xad21('0x4b'),_0x7d02a9['id']);return getEndUser(_0x4a2f59,_0x452d49[_0xad21('0x4c')],_0x452d49['calleridnum']);})[_0xad21('0x28')](function(_0x3d2281){_0x28bafa=_0x3d2281;logger['info']('The\x20Enduser\x20ID\x20is:',_0x28bafa['id']);return getTicket(_0x4a2f59,_0x7d02a9,_0x28bafa,_0x4a176b,_0x452d49);})[_0xad21('0x28')](function(_0x403645){if(_0x403645&&_0x403645['id']){logger[_0xad21('0xe')](_0xad21('0x1f'));logger['info'](_0xad21('0x4d'),_0x403645['id']);logger[_0xad21('0xe')](_0xad21('0x45'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xad21('0x11')](_0xad21('0x4e'),_0x422f87['name']),_0xad21('0x4f'),{'uri':util[_0xad21('0x11')]('%s/helpdesk/tickets/%d',_0x4a2f59[_0xad21('0x1d')],_0x403645['id'])});}})[_0xad21('0x50')](function(_0x5da5cf){logger['error'](_0xad21('0x45'),JSON[_0xad21('0x51')](_0x5da5cf));});};exports[_0xad21('0x52')]=function(_0x25916f,_0x493d86,_0x2b4f25,_0x4b650a,_0x3b1678,_0x3d57a2,_0x5092ef){var _0x1837a4,_0xb4d6ac;_0x3d57a2[_0xad21('0x1d')]=intUtil[_0xad21('0x43')](_0x3d57a2['remoteUri']);_0x3d57a2['serverUrl']=intUtil['stripTrailingSlash'](_0x3d57a2[_0xad21('0x44')]);if(_0x5092ef&&_0x5092ef[_0xad21('0x53')]&&_0x5092ef['recordingFormat']!==_0xad21('0x54')){logger[_0xad21('0xe')](_0xad21('0x55'),_0xad21('0x46'));_0x493d86[_0xad21('0x47')]=util[_0xad21('0x11')](_0xad21('0x48'),_0x3d57a2[_0xad21('0x44')],_0x493d86[_0xad21('0x49')],md5(_0x493d86[_0xad21('0x49')]));}headers[_0xad21('0x4a')]=getAuth(_0x3d57a2);return getUser(_0x3d57a2,_0x4b650a[_0xad21('0x25')])[_0xad21('0x28')](function(_0x1d884c){_0x1837a4=_0x1d884c;logger[_0xad21('0xe')](_0xad21('0x4b'),_0x1837a4['id']);return getEndUser(_0x3d57a2,_0x493d86[_0xad21('0x56')],_0x493d86['destcalleridnum']);})['then'](function(_0x588f42){_0xb4d6ac=_0x588f42;logger[_0xad21('0xe')]('The\x20Enduser\x20ID\x20is:',_0xb4d6ac['id']);return getTicket(_0x3d57a2,_0x1837a4,_0xb4d6ac,_0x2b4f25,_0x493d86);})[_0xad21('0x28')](function(_0x76228a){if(_0x76228a&&_0x76228a['id']){logger['info'](_0xad21('0x1f'));logger['info'](_0xad21('0x4d'),_0x76228a['id']);logger['info'](_0xad21('0x55'),_0xad21('0x57'));emit(util['format'](_0xad21('0x4e'),_0x4b650a['name']),_0xad21('0x4f'),{'uri':util['format'](_0xad21('0x58'),_0x3d57a2[_0xad21('0x1d')],_0x76228a['id'])});}})[_0xad21('0x50')](function(_0x104f97){logger[_0xad21('0x59')]('[OUTBOUND]',JSON[_0xad21('0x51')](_0x104f97));});};exports[_0xad21('0x5a')]=function(_0x5596ed,_0x4e99af,_0x1fc2df,_0x2e915f,_0x40f8a2,_0x327e46){var _0x3b661f,_0x4a2f97;_0x327e46[_0xad21('0x1d')]=intUtil[_0xad21('0x43')](_0x327e46[_0xad21('0x1d')]);_0x327e46[_0xad21('0x44')]=intUtil[_0xad21('0x43')](_0x327e46['serverUrl']);if(_0x40f8a2&&_0x40f8a2['monitor_format']){logger[_0xad21('0xe')]('['+_0x4e99af[_0xad21('0x5b')]['toUpperCase']()+']',_0xad21('0x46'));_0x4e99af[_0xad21('0x47')]=util['format'](_0xad21('0x48'),_0x327e46[_0xad21('0x44')],_0x4e99af[_0xad21('0x49')],md5(_0x4e99af[_0xad21('0x49')]));}else{_0x4e99af[_0xad21('0x47')]='';}headers[_0xad21('0x4a')]=getAuth(_0x327e46);return getUser(_0x327e46,'')[_0xad21('0x28')](function(_0xc4987e){_0x3b661f=_0xc4987e;logger[_0xad21('0xe')](_0xad21('0x4b'),_0x3b661f['id']);return getEndUser(_0x327e46,_0x4e99af[_0xad21('0x4c')],_0x4e99af[_0xad21('0x12')]);})[_0xad21('0x28')](function(_0x1111ae){_0x4a2f97=_0x1111ae;logger[_0xad21('0xe')]('The\x20Enduser\x20ID\x20is:',_0x4a2f97['id']);return getTicket(_0x327e46,_0x3b661f,_0x4a2f97,_0x1fc2df,_0x4e99af);})[_0xad21('0x28')](function(_0x455e2e){if(_0x455e2e){logger[_0xad21('0xe')](_0xad21('0x1f'));logger[_0xad21('0xe')](_0xad21('0x4d'),_0x455e2e['id']);}})['catch'](function(_0x102416){logger[_0xad21('0x59')]('['+_0x4e99af['lastevent'][_0xad21('0x5c')]()+']',JSON[_0xad21('0x51')](_0x102416));});};