ba0dd5522efddfbc258166c59e35b6efd939d5b1
[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 _0xdd7c=['Agent\x20found!','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','defaults','forEach','string','picklist','nameField','customField','toLowerCase','content','includes','type','idField','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','monitor_format','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','Descriptions','Tags','name','Fields','custom_fields','keyBy','value','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','info'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdd7c,0xf4));var _0xcdd7=function(_0x339129,_0x86dcc6){_0x339129=_0x339129-0x0;var _0x1570df=_0xdd7c[_0x339129];return _0x1570df;};'use strict';var _=require(_0xcdd7('0x0'));var rp=require(_0xcdd7('0x1'));var md5=require('md5');var util=require(_0xcdd7('0x2'));var Redis=require(_0xcdd7('0x3'));var intUtil=require(_0xcdd7('0x4'));var config=require(_0xcdd7('0x5'));var logger=require(_0xcdd7('0x6'))(_0xcdd7('0x7'));config[_0xcdd7('0x8')]=_['defaults'](config[_0xcdd7('0x8')],{'host':_0xcdd7('0x9'),'port':0x18eb});var io=require(_0xcdd7('0xa'))(new Redis(config[_0xcdd7('0x8')]));var headers={'Content-Type':_0xcdd7('0xb'),'Accept':_0xcdd7('0xb')};function emit(_0x21d6f7,_0x54a17f,_0x56402e){io['to'](_0x21d6f7)[_0xcdd7('0xc')](_0x54a17f,_0x56402e);}function getTicket(_0x181a89,_0x327716,_0x3396ee,_0x5a4179,_0xa872ee){logger['info'](_0xcdd7('0xd'));var _0x18e029=_[_0xcdd7('0xe')]({'responder_id':_0x327716['id'],'requester_id':_0x3396ee['id'],'name':util['format'](_0xcdd7('0xf'),_0xa872ee[_0xcdd7('0x10')]),'phone':_0xa872ee[_0xcdd7('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x5a4179[_0xcdd7('0x12')],_0xa872ee,'\x20'),'description':intUtil['getString'](_0x5a4179[_0xcdd7('0x13')],_0xa872ee,'<br>'),'tags':getTags(_0x5a4179[_0xcdd7('0x14')],_0xcdd7('0x15'))},getCustomFields(_0x5a4179[_0xcdd7('0x16')],_0xa872ee));_0x18e029[_0xcdd7('0x17')]=_['mapValues'](_[_0xcdd7('0x18')](_0x18e029[_0xcdd7('0x17')],'id'),_0xcdd7('0x19'));return request({'uri':util[_0xcdd7('0x1a')](_0xcdd7('0x1b'),_0x181a89[_0xcdd7('0x1c')]),'method':_0xcdd7('0x1d'),'body':_0x18e029})[_0xcdd7('0x1e')](function(_0x1bd4ca){logger['info'](_0xcdd7('0x1f'));return _0x1bd4ca;});}function getUser(_0x1404a3,_0x4cc8c6){if(intUtil[_0xcdd7('0x20')](_0x4cc8c6)){return request({'uri':util['format']('%s/api/v2/agents',_0x1404a3['remoteUri']),'qs':{'email':_0x4cc8c6}})[_0xcdd7('0x1e')](function(_0x23074e){if(_0x23074e[_0xcdd7('0x21')]){logger[_0xcdd7('0x22')](_0xcdd7('0x23'));return _[_0xcdd7('0x24')](_0x23074e,function(_0xa067fe){return _0xa067fe['contact'][_0xcdd7('0x25')]===_0x4cc8c6;});}else{logger['info'](_0xcdd7('0x26'));return request({'uri':util['format'](_0xcdd7('0x27'),_0x1404a3[_0xcdd7('0x1c')])})[_0xcdd7('0x1e')](function(_0x46c4a5){logger['info'](_0xcdd7('0x28'));return _0x46c4a5;});}});}else{logger[_0xcdd7('0x22')](_0xcdd7('0x29'));return request({'uri':util[_0xcdd7('0x1a')](_0xcdd7('0x27'),_0x1404a3[_0xcdd7('0x1c')])})['then'](function(_0x507865){logger[_0xcdd7('0x22')](_0xcdd7('0x28'));return _0x507865;});}}function getEndUser(_0x1b4599,_0x4659bb,_0x3baa36){logger[_0xcdd7('0x22')]('Searching\x20enduser\x20with\x20phone',_0x3baa36);return request({'uri':util[_0xcdd7('0x1a')](_0xcdd7('0x2a'),_0x1b4599[_0xcdd7('0x1c')]),'qs':{'phone':_0x3baa36}})['then'](function(_0x13e6d6){if(_0x13e6d6['length']){logger[_0xcdd7('0x22')](_0xcdd7('0x2b'));return _[_0xcdd7('0x24')](_0x13e6d6,{'phone':_0x3baa36});}else{logger['info'](_0xcdd7('0x2c'));return request({'uri':util[_0xcdd7('0x1a')](_0xcdd7('0x2a'),_0x1b4599[_0xcdd7('0x1c')]),'method':_0xcdd7('0x1d'),'body':{'name':_0x4659bb,'phone':_0x3baa36}})['then'](function(_0x237962){logger[_0xcdd7('0x22')]('Enduser\x20created.');return _0x237962;});}});}function getAuth(_0x34ae84){return util[_0xcdd7('0x1a')](_0xcdd7('0x2d'),new Buffer(_0x34ae84['apiKey']+':X')[_0xcdd7('0x2e')](_0xcdd7('0x2f')));}function request(_0xd0ab0){logger[_0xcdd7('0x30')](_0xcdd7('0x31'),JSON[_0xcdd7('0x32')](_0xd0ab0));return rp(_[_0xcdd7('0x33')](_0xd0ab0,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x1766ea,_0x299a9e){var _0x21665e=[];if(_0x1766ea&&_0x1766ea[_0xcdd7('0x21')]>0x0){_0x21665e=_['map'](_0x1766ea,_0x299a9e);}return _0x21665e;}function getCustomFields(_0x57704c,_0x25b743){var _0x21fe81=[];var _0x37f9a2={'custom_fields':[]};if(_0x57704c[_0xcdd7('0x21')]>0x0){_[_0xcdd7('0x34')](_0x57704c,function(_0x1422a9){if(_['includes']([_0xcdd7('0x35'),_0xcdd7('0x36')],_0x1422a9['type'])&&_0x1422a9[_0xcdd7('0x37')]&&!_0x1422a9[_0xcdd7('0x38')]){_0x37f9a2[_0x1422a9[_0xcdd7('0x37')][_0xcdd7('0x39')]()]=_0x1422a9[_0xcdd7('0x3a')][_0xcdd7('0x2e')]();}else if(_[_0xcdd7('0x3b')]([_0xcdd7('0x35'),_0xcdd7('0x36')],_0x1422a9[_0xcdd7('0x3c')])&&_0x1422a9[_0xcdd7('0x3d')]&&_0x1422a9[_0xcdd7('0x38')]){_0x37f9a2['custom_fields'][_0xcdd7('0x3e')]({'id':_0x1422a9['idField'],'value':_0x1422a9[_0xcdd7('0x3a')][_0xcdd7('0x2e')]()});}else if(_0x1422a9[_0xcdd7('0x3c')]===_0xcdd7('0x3f')&&_0x1422a9[_0xcdd7('0x40')]&&_0x1422a9[_0xcdd7('0x3d')]&&_0x1422a9[_0xcdd7('0x38')]){_0x25b743[_0x1422a9[_0xcdd7('0x40')]]&&_0x37f9a2[_0xcdd7('0x17')][_0xcdd7('0x3e')]({'id':_0x1422a9['idField'],'value':_0x25b743[_0x1422a9[_0xcdd7('0x40')]]['toString']()});}else if(_0x1422a9[_0xcdd7('0x3c')]==='customVariable'&&_0x1422a9[_0xcdd7('0x41')]&&_0x1422a9['Variable'][_0xcdd7('0x15')]&&_0x1422a9[_0xcdd7('0x3d')]&&_0x1422a9['customField']){_0x25b743[_0x1422a9[_0xcdd7('0x41')][_0xcdd7('0x15')][_0xcdd7('0x39')]()]&&_0x37f9a2[_0xcdd7('0x17')][_0xcdd7('0x3e')]({'id':_0x1422a9[_0xcdd7('0x3d')],'value':_0x25b743[_0x1422a9['Variable'][_0xcdd7('0x15')][_0xcdd7('0x39')]()][_0xcdd7('0x2e')]()});}});}return _0x37f9a2;}exports[_0xcdd7('0x42')]=function(_0x9aa156,_0x45ab4e,_0x19c054,_0x3cf814,_0xdb4f03,_0x5a94bd){var _0x341893,_0xdef3f6;_0x5a94bd[_0xcdd7('0x1c')]=intUtil[_0xcdd7('0x43')](_0x5a94bd[_0xcdd7('0x1c')]);_0x5a94bd['serverUrl']=intUtil[_0xcdd7('0x43')](_0x5a94bd[_0xcdd7('0x44')]);if(_0xdb4f03&&_0xdb4f03['monitor_format']){logger[_0xcdd7('0x22')](_0xcdd7('0x45'),_0xcdd7('0x46'));_0x45ab4e[_0xcdd7('0x47')]=util[_0xcdd7('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5a94bd['serverUrl'],_0x45ab4e['uniqueid'],md5(_0x45ab4e[_0xcdd7('0x48')]));}else{_0x45ab4e['recordingURL']='';}headers[_0xcdd7('0x49')]=getAuth(_0x5a94bd);return getUser(_0x5a94bd,_0x3cf814[_0xcdd7('0x25')])[_0xcdd7('0x1e')](function(_0x3bc2e0){_0x341893=_0x3bc2e0;logger[_0xcdd7('0x22')](_0xcdd7('0x4a'),_0x341893['id']);return getEndUser(_0x5a94bd,_0x45ab4e['calleridname'],_0x45ab4e[_0xcdd7('0x11')]);})[_0xcdd7('0x1e')](function(_0x10abfc){_0xdef3f6=_0x10abfc;logger[_0xcdd7('0x22')](_0xcdd7('0x4b'),_0xdef3f6['id']);return getTicket(_0x5a94bd,_0x341893,_0xdef3f6,_0x19c054,_0x45ab4e);})[_0xcdd7('0x1e')](function(_0x3dfe24){if(_0x3dfe24&&_0x3dfe24['id']){logger[_0xcdd7('0x22')](_0xcdd7('0x1f'));logger[_0xcdd7('0x22')](_0xcdd7('0x4c'),_0x3dfe24['id']);logger[_0xcdd7('0x22')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcdd7('0x1a')](_0xcdd7('0x4d'),_0x3cf814['name']),_0xcdd7('0x4e'),{'uri':util['format'](_0xcdd7('0x4f'),_0x5a94bd['remoteUri'],_0x3dfe24['id'])});}})[_0xcdd7('0x50')](function(_0x3ecdc5){logger[_0xcdd7('0x51')]('[QUEUE]',JSON[_0xcdd7('0x32')](_0x3ecdc5));});};exports['outbound']=function(_0x4d59d7,_0x44699b,_0x16ed17,_0x3655ed,_0xc1b1f6,_0x560e53,_0x4e973f){var _0x191030,_0xe871bc;_0x560e53['remoteUri']=intUtil['stripTrailingSlash'](_0x560e53[_0xcdd7('0x1c')]);_0x560e53[_0xcdd7('0x44')]=intUtil['stripTrailingSlash'](_0x560e53[_0xcdd7('0x44')]);if(_0x4e973f&&_0x4e973f[_0xcdd7('0x52')]&&_0x4e973f['recordingFormat']!==_0xcdd7('0x53')){logger[_0xcdd7('0x22')]('[OUTBOUND]',_0xcdd7('0x46'));_0x44699b[_0xcdd7('0x47')]=util[_0xcdd7('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x560e53[_0xcdd7('0x44')],_0x44699b[_0xcdd7('0x48')],md5(_0x44699b[_0xcdd7('0x48')]));}headers[_0xcdd7('0x49')]=getAuth(_0x560e53);return getUser(_0x560e53,_0x3655ed[_0xcdd7('0x25')])[_0xcdd7('0x1e')](function(_0x3dbd7e){_0x191030=_0x3dbd7e;logger[_0xcdd7('0x22')](_0xcdd7('0x4a'),_0x191030['id']);return getEndUser(_0x560e53,_0x44699b[_0xcdd7('0x54')],_0x44699b[_0xcdd7('0x55')]);})['then'](function(_0x88e519){_0xe871bc=_0x88e519;logger[_0xcdd7('0x22')]('The\x20Enduser\x20ID\x20is:',_0xe871bc['id']);return getTicket(_0x560e53,_0x191030,_0xe871bc,_0x16ed17,_0x44699b);})[_0xcdd7('0x1e')](function(_0x534144){if(_0x534144&&_0x534144['id']){logger[_0xcdd7('0x22')]('Ticket\x20created!');logger[_0xcdd7('0x22')](_0xcdd7('0x4c'),_0x534144['id']);logger[_0xcdd7('0x22')](_0xcdd7('0x56'),_0xcdd7('0x57'));emit(util['format']('user:%s',_0x3655ed['name']),_0xcdd7('0x4e'),{'uri':util['format'](_0xcdd7('0x4f'),_0x560e53[_0xcdd7('0x1c')],_0x534144['id'])});}})[_0xcdd7('0x50')](function(_0x38c0e4){logger[_0xcdd7('0x51')]('[OUTBOUND]',JSON[_0xcdd7('0x32')](_0x38c0e4));});};exports[_0xcdd7('0x58')]=function(_0x325fc3,_0x494343,_0x4ba8a1,_0x5cf884,_0x1e8b0c,_0x3ddfce){var _0x5c3891,_0x15b24a;_0x3ddfce[_0xcdd7('0x1c')]=intUtil[_0xcdd7('0x43')](_0x3ddfce[_0xcdd7('0x1c')]);_0x3ddfce[_0xcdd7('0x44')]=intUtil[_0xcdd7('0x43')](_0x3ddfce[_0xcdd7('0x44')]);if(_0x1e8b0c&&_0x1e8b0c[_0xcdd7('0x59')]){logger[_0xcdd7('0x22')]('['+_0x494343[_0xcdd7('0x5a')][_0xcdd7('0x5b')]()+']','Recording\x20is\x20enabled!');_0x494343[_0xcdd7('0x47')]=util[_0xcdd7('0x1a')](_0xcdd7('0x5c'),_0x3ddfce['serverUrl'],_0x494343[_0xcdd7('0x48')],md5(_0x494343['uniqueid']));}else{_0x494343['recordingURL']='';}headers[_0xcdd7('0x49')]=getAuth(_0x3ddfce);return getUser(_0x3ddfce,'')[_0xcdd7('0x1e')](function(_0x3f47a5){_0x5c3891=_0x3f47a5;logger[_0xcdd7('0x22')](_0xcdd7('0x4a'),_0x5c3891['id']);return getEndUser(_0x3ddfce,_0x494343[_0xcdd7('0x10')],_0x494343[_0xcdd7('0x11')]);})['then'](function(_0x4b768c){_0x15b24a=_0x4b768c;logger['info'](_0xcdd7('0x4b'),_0x15b24a['id']);return getTicket(_0x3ddfce,_0x5c3891,_0x15b24a,_0x4ba8a1,_0x494343);})[_0xcdd7('0x1e')](function(_0x4421b3){if(_0x4421b3){logger[_0xcdd7('0x22')](_0xcdd7('0x1f'));logger[_0xcdd7('0x22')](_0xcdd7('0x4c'),_0x4421b3['id']);}})[_0xcdd7('0x50')](function(_0x1fce3b){logger[_0xcdd7('0x51')]('['+_0x494343['lastevent'][_0xcdd7('0x5b')]()+']',JSON['stringify'](_0x1fce3b));});};