e4d17bff4b3d1a30aacb9c014bd2f2d5ce0aebb3
[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 _0x747a=['debug','[HTTP]','stringify','GET','map','forEach','nameField','toString','type','string','idField','customField','push','content','variable','variableName','Variable','toLowerCase','queue','serverUrl','stripTrailingSlash','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','[QUEUE]','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','format','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Basic\x20%s','base64'];(function(_0x364d1f,_0x449555){var _0x178519=function(_0x14b02a){while(--_0x14b02a){_0x364d1f['push'](_0x364d1f['shift']());}};_0x178519(++_0x449555);}(_0x747a,0x89));var _0xa747=function(_0x41cf0d,_0x1ca38a){_0x41cf0d=_0x41cf0d-0x0;var _0x343c85=_0x747a[_0x41cf0d];return _0x343c85;};'use strict';var _=require(_0xa747('0x0'));var rp=require(_0xa747('0x1'));var md5=require('md5');var util=require(_0xa747('0x2'));var Redis=require(_0xa747('0x3'));var intUtil=require(_0xa747('0x4'));var config=require(_0xa747('0x5'));var logger=require('../../../../config/logger')('freshdesk');config[_0xa747('0x6')]=_['defaults'](config[_0xa747('0x6')],{'host':_0xa747('0x7'),'port':0x18eb});var io=require(_0xa747('0x8'))(new Redis(config[_0xa747('0x6')]));var headers={'Content-Type':_0xa747('0x9'),'Accept':_0xa747('0x9')};function emit(_0x317e45,_0x30304d,_0x4c69dd){io['to'](_0x317e45)[_0xa747('0xa')](_0x30304d,_0x4c69dd);}function getTicket(_0x199396,_0x38cd2e,_0x191541,_0x5c019b,_0x5ef330){logger[_0xa747('0xb')](_0xa747('0xc'));var _0x473708=_[_0xa747('0xd')]({'responder_id':_0x38cd2e['id'],'requester_id':_0x191541['id'],'name':util['format'](_0xa747('0xe'),_0x5ef330[_0xa747('0xf')]),'phone':_0x5ef330[_0xa747('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xa747('0x11')](_0x5c019b['Subjects'],_0x5ef330,'\x20'),'description':intUtil[_0xa747('0x11')](_0x5c019b[_0xa747('0x12')],_0x5ef330,_0xa747('0x13')),'tags':getTags(_0x5c019b[_0xa747('0x14')],_0xa747('0x15'))},getCustomFields(_0x5c019b[_0xa747('0x16')],_0x5ef330));_0x473708[_0xa747('0x17')]=_[_0xa747('0x18')](_[_0xa747('0x19')](_0x473708[_0xa747('0x17')],'id'),_0xa747('0x1a'));return request({'uri':util['format']('%s/api/v2/tickets',_0x199396[_0xa747('0x1b')]),'method':_0xa747('0x1c'),'body':_0x473708})[_0xa747('0x1d')](function(_0x9be36b){logger['info'](_0xa747('0x1e'));return _0x9be36b;});}function getUser(_0x49d65a,_0x36320e){if(intUtil['validateEmail'](_0x36320e)){return request({'uri':util['format'](_0xa747('0x1f'),_0x49d65a[_0xa747('0x1b')]),'qs':{'email':_0x36320e}})['then'](function(_0x1316f7){if(_0x1316f7[_0xa747('0x20')]){logger[_0xa747('0xb')](_0xa747('0x21'));return _['find'](_0x1316f7,function(_0x598504){return _0x598504[_0xa747('0x22')][_0xa747('0x23')]===_0x36320e;});}else{logger[_0xa747('0xb')](_0xa747('0x24'));return request({'uri':util[_0xa747('0x25')](_0xa747('0x26'),_0x49d65a['remoteUri'])})[_0xa747('0x1d')](function(_0x187f7b){logger[_0xa747('0xb')](_0xa747('0x27'));return _0x187f7b;});}});}else{logger[_0xa747('0xb')](_0xa747('0x28'));return request({'uri':util[_0xa747('0x25')](_0xa747('0x26'),_0x49d65a[_0xa747('0x1b')])})[_0xa747('0x1d')](function(_0x1c7bbf){logger[_0xa747('0xb')]('Admin\x20account\x20selected.');return _0x1c7bbf;});}}function getEndUser(_0xd8263d,_0x35c724,_0x34cce7){logger[_0xa747('0xb')](_0xa747('0x29'),_0x34cce7);return request({'uri':util[_0xa747('0x25')](_0xa747('0x2a'),_0xd8263d[_0xa747('0x1b')]),'qs':{'phone':_0x34cce7}})[_0xa747('0x1d')](function(_0x24ac74){if(_0x24ac74[_0xa747('0x20')]){logger[_0xa747('0xb')](_0xa747('0x2b'));return _[_0xa747('0x2c')](_0x24ac74,{'phone':_0x34cce7});}else{logger[_0xa747('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xa747('0x25')](_0xa747('0x2a'),_0xd8263d['remoteUri']),'method':_0xa747('0x1c'),'body':{'name':_0x35c724,'phone':_0x34cce7}})[_0xa747('0x1d')](function(_0x4431cc){logger['info']('Enduser\x20created.');return _0x4431cc;});}});}function getAuth(_0x14ea6b){return util['format'](_0xa747('0x2d'),new Buffer(_0x14ea6b['apiKey']+':X')['toString'](_0xa747('0x2e')));}function request(_0x5e2352){logger[_0xa747('0x2f')](_0xa747('0x30'),JSON[_0xa747('0x31')](_0x5e2352));return rp(_['defaults'](_0x5e2352,{'method':_0xa747('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x5025e7,_0x48eae7){var _0x266447=[];if(_0x5025e7&&_0x5025e7[_0xa747('0x20')]>0x0){_0x266447=_[_0xa747('0x33')](_0x5025e7,_0x48eae7);}return _0x266447;}function getCustomFields(_0x1e41e7,_0x522e0a){var _0x3b7e78=[];var _0xfaccb6={'custom_fields':[]};if(_0x1e41e7['length']>0x0){_[_0xa747('0x34')](_0x1e41e7,function(_0x55cd5e){if(_0x55cd5e['type']==='string'&&_0x55cd5e[_0xa747('0x35')]&&!_0x55cd5e['customField']){_0xfaccb6[_0x55cd5e[_0xa747('0x35')]['toLowerCase']()]=_0x55cd5e['content'][_0xa747('0x36')]();}else if(_0x55cd5e[_0xa747('0x37')]===_0xa747('0x38')&&_0x55cd5e[_0xa747('0x39')]&&_0x55cd5e[_0xa747('0x3a')]){_0xfaccb6[_0xa747('0x17')][_0xa747('0x3b')]({'id':_0x55cd5e[_0xa747('0x39')],'value':_0x55cd5e[_0xa747('0x3c')][_0xa747('0x36')]()});}else if(_0x55cd5e[_0xa747('0x37')]===_0xa747('0x3d')&&_0x55cd5e[_0xa747('0x3e')]&&_0x55cd5e[_0xa747('0x39')]&&_0x55cd5e[_0xa747('0x3a')]){_0x522e0a[_0x55cd5e[_0xa747('0x3e')]]&&_0xfaccb6[_0xa747('0x17')][_0xa747('0x3b')]({'id':_0x55cd5e[_0xa747('0x39')],'value':_0x522e0a[_0x55cd5e[_0xa747('0x3e')]][_0xa747('0x36')]()});}else if(_0x55cd5e[_0xa747('0x37')]==='customVariable'&&_0x55cd5e['Variable']&&_0x55cd5e[_0xa747('0x3f')]['name']&&_0x55cd5e[_0xa747('0x39')]&&_0x55cd5e[_0xa747('0x3a')]){_0x522e0a[_0x55cd5e['Variable'][_0xa747('0x15')]['toLowerCase']()]&&_0xfaccb6[_0xa747('0x17')][_0xa747('0x3b')]({'id':_0x55cd5e[_0xa747('0x39')],'value':_0x522e0a[_0x55cd5e[_0xa747('0x3f')][_0xa747('0x15')][_0xa747('0x40')]()][_0xa747('0x36')]()});}});}return _0xfaccb6;}exports[_0xa747('0x41')]=function(_0x1edf96,_0x53c50e,_0xd6f339,_0x2529d8,_0x1d317e,_0x39234b){var _0x3dd911,_0x489f65;_0x39234b[_0xa747('0x1b')]=intUtil['stripTrailingSlash'](_0x39234b[_0xa747('0x1b')]);_0x39234b[_0xa747('0x42')]=intUtil[_0xa747('0x43')](_0x39234b[_0xa747('0x42')]);if(_0x1d317e&&_0x1d317e['monitor_format']){logger[_0xa747('0xb')]('[QUEUE]',_0xa747('0x44'));_0x53c50e['recordingURL']=util[_0xa747('0x25')](_0xa747('0x45'),_0x39234b[_0xa747('0x42')],_0x53c50e[_0xa747('0x46')],md5(_0x53c50e['uniqueid']));}else{_0x53c50e['recordingURL']='';}headers[_0xa747('0x47')]=getAuth(_0x39234b);return getUser(_0x39234b,_0x2529d8[_0xa747('0x23')])[_0xa747('0x1d')](function(_0x218784){_0x3dd911=_0x218784;logger[_0xa747('0xb')](_0xa747('0x48'),_0x3dd911['id']);return getEndUser(_0x39234b,_0x53c50e[_0xa747('0xf')],_0x53c50e['calleridnum']);})[_0xa747('0x1d')](function(_0x539ecf){_0x489f65=_0x539ecf;logger[_0xa747('0xb')](_0xa747('0x49'),_0x489f65['id']);return getTicket(_0x39234b,_0x3dd911,_0x489f65,_0xd6f339,_0x53c50e);})['then'](function(_0x4ea29c){if(_0x4ea29c&&_0x4ea29c['id']){logger[_0xa747('0xb')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x4ea29c['id']);logger['info']('[QUEUE]',_0xa747('0x4a'));emit(util['format'](_0xa747('0x4b'),_0x2529d8[_0xa747('0x15')]),'trigger:browser:url',{'uri':util[_0xa747('0x25')](_0xa747('0x4c'),_0x39234b['remoteUri'],_0x4ea29c['id'])});}})[_0xa747('0x4d')](function(_0x3e72f3){logger[_0xa747('0x4e')](_0xa747('0x4f'),JSON['stringify'](_0x3e72f3));});};exports[_0xa747('0x50')]=function(_0x1fbdc5,_0x18d916,_0x4fc6c9,_0x5505fc,_0x440dbb,_0x59c43a,_0x48626e){var _0x240dea,_0x1524d0;_0x59c43a[_0xa747('0x1b')]=intUtil[_0xa747('0x43')](_0x59c43a[_0xa747('0x1b')]);_0x59c43a[_0xa747('0x42')]=intUtil[_0xa747('0x43')](_0x59c43a[_0xa747('0x42')]);if(_0x48626e&&_0x48626e[_0xa747('0x51')]&&_0x48626e[_0xa747('0x51')]!==_0xa747('0x52')){logger[_0xa747('0xb')](_0xa747('0x53'),'Recording\x20is\x20enabled!');_0x18d916[_0xa747('0x54')]=util[_0xa747('0x25')](_0xa747('0x45'),_0x59c43a['serverUrl'],_0x18d916['uniqueid'],md5(_0x18d916[_0xa747('0x46')]));}headers['Authorization']=getAuth(_0x59c43a);return getUser(_0x59c43a,_0x5505fc[_0xa747('0x23')])['then'](function(_0x4ec5ca){_0x240dea=_0x4ec5ca;logger[_0xa747('0xb')](_0xa747('0x48'),_0x240dea['id']);return getEndUser(_0x59c43a,_0x18d916[_0xa747('0x55')],_0x18d916[_0xa747('0x56')]);})[_0xa747('0x1d')](function(_0x201d27){_0x1524d0=_0x201d27;logger[_0xa747('0xb')](_0xa747('0x49'),_0x1524d0['id']);return getTicket(_0x59c43a,_0x240dea,_0x1524d0,_0x4fc6c9,_0x18d916);})[_0xa747('0x1d')](function(_0x32bea0){if(_0x32bea0&&_0x32bea0['id']){logger['info'](_0xa747('0x1e'));logger[_0xa747('0xb')](_0xa747('0x57'),_0x32bea0['id']);logger['info'](_0xa747('0x53'),_0xa747('0x4a'));emit(util['format'](_0xa747('0x4b'),_0x5505fc[_0xa747('0x15')]),'trigger:browser:url',{'uri':util[_0xa747('0x25')](_0xa747('0x4c'),_0x59c43a['remoteUri'],_0x32bea0['id'])});}})['catch'](function(_0x4169c0){logger[_0xa747('0x4e')](_0xa747('0x53'),JSON[_0xa747('0x31')](_0x4169c0));});};exports[_0xa747('0x58')]=function(_0x411b3d,_0x2ec016,_0xd6bc77,_0x17df2e,_0x61e715,_0x184f38){var _0x351bf9,_0x17ca6b;_0x184f38['remoteUri']=intUtil['stripTrailingSlash'](_0x184f38[_0xa747('0x1b')]);_0x184f38[_0xa747('0x42')]=intUtil['stripTrailingSlash'](_0x184f38['serverUrl']);if(_0x61e715&&_0x61e715[_0xa747('0x59')]){logger['info']('['+_0x2ec016[_0xa747('0x5a')][_0xa747('0x5b')]()+']','Recording\x20is\x20enabled!');_0x2ec016[_0xa747('0x54')]=util[_0xa747('0x25')](_0xa747('0x45'),_0x184f38[_0xa747('0x42')],_0x2ec016['uniqueid'],md5(_0x2ec016[_0xa747('0x46')]));}else{_0x2ec016[_0xa747('0x54')]='';}headers[_0xa747('0x47')]=getAuth(_0x184f38);return getUser(_0x184f38,'')[_0xa747('0x1d')](function(_0x47e873){_0x351bf9=_0x47e873;logger[_0xa747('0xb')](_0xa747('0x48'),_0x351bf9['id']);return getEndUser(_0x184f38,_0x2ec016[_0xa747('0xf')],_0x2ec016[_0xa747('0x10')]);})[_0xa747('0x1d')](function(_0x3a6a2d){_0x17ca6b=_0x3a6a2d;logger[_0xa747('0xb')]('The\x20Enduser\x20ID\x20is:',_0x17ca6b['id']);return getTicket(_0x184f38,_0x351bf9,_0x17ca6b,_0xd6bc77,_0x2ec016);})[_0xa747('0x1d')](function(_0x3908e6){if(_0x3908e6){logger[_0xa747('0xb')](_0xa747('0x1e'));logger['info'](_0xa747('0x57'),_0x3908e6['id']);}})[_0xa747('0x4d')](function(_0x49a218){logger['error']('['+_0x2ec016[_0xa747('0x5a')][_0xa747('0x5b')]()+']',JSON['stringify'](_0x49a218));});};