e79c1b85105ddae946a6d093e289c69e7083ea0f
[motion2.git] / server / services / ami / trigger / integration / zendesk.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 _0x44d3=['Authorization','email','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','remoteUri','format','type:user\x20role:agent\x20email:%s','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','length','end-user','first','Enduser\x20found!','Enduser\x20created.','password','%s:%s','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','custom_fields','push','variable','variableName','idField','customVariable','Variable','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','error','inspect','outbound','recordingFormat','none','[OUTBOUND]'];(function(_0x141397,_0x1b243a){var _0x2bd6ef=function(_0x2618b3){while(--_0x2618b3){_0x141397['push'](_0x141397['shift']());}};_0x2bd6ef(++_0x1b243a);}(_0x44d3,0x14c));var _0x344d=function(_0x467065,_0x4ff6bc){_0x467065=_0x467065-0x0;var _0x352def=_0x44d3[_0x467065];return _0x352def;};'use strict';var _=require(_0x344d('0x0'));var rp=require(_0x344d('0x1'));var md5=require(_0x344d('0x2'));var util=require(_0x344d('0x3'));var Redis=require(_0x344d('0x4'));var intUtil=require(_0x344d('0x5'));var config=require(_0x344d('0x6'));var logger=require('../../../../config/logger')('zendesk');config[_0x344d('0x7')]=_[_0x344d('0x8')](config['redis'],{'host':_0x344d('0x9'),'port':0x18eb});var io=require(_0x344d('0xa'))(new Redis(config['redis']));function emit(_0x389821,_0x25f9ba,_0x18017d){io['to'](_0x389821)[_0x344d('0xb')](_0x25f9ba,_0x18017d);}var headers={'Content-Type':'application/json','Accept':_0x344d('0xc')};function getTicket(_0x2cb58c,_0xcab36c,_0x4ec1bf,_0x4d49ee,_0x27c357){logger[_0x344d('0xd')](_0x344d('0xe'));return request({'uri':util['format']('%s/tickets.json',_0x2cb58c['remoteUri']),'method':_0x344d('0xf'),'body':{'ticket':_['merge']({'requester_id':_0x4ec1bf['id'],'submitter_id':_0xcab36c?_0xcab36c['id']:undefined,'assignee_id':_0xcab36c?_0xcab36c['id']:undefined,'tags':getTags(_0x4d49ee[_0x344d('0x10')],_0x344d('0x11')),'subject':intUtil[_0x344d('0x12')](_0x4d49ee[_0x344d('0x13')],_0x27c357,'\x20'),'description':intUtil[_0x344d('0x12')](_0x4d49ee['Descriptions'],_0x27c357,'\x0a'),'comment':{'public':![],'body':intUtil[_0x344d('0x12')](_0x4d49ee[_0x344d('0x14')],_0x27c357,'\x0a')}},getCustomFields(_0x4d49ee[_0x344d('0x15')],_0x27c357))}})[_0x344d('0x16')](function(_0x34ad01){logger[_0x344d('0xd')](_0x344d('0x17'));return _0x34ad01['ticket'];});}function getUser(_0x473468,_0x2b949f){if(intUtil[_0x344d('0x18')](_0x2b949f)){logger[_0x344d('0xd')](_0x344d('0x19'),_0x2b949f);return request({'uri':util['format']('%s/search.json',_0x473468[_0x344d('0x1a')]),'qs':{'query':util[_0x344d('0x1b')](_0x344d('0x1c'),_0x2b949f)}})['then'](function(_0x326e2f){if(_0x326e2f['count']){logger['info']('Agent\x20found!');return _[_0x344d('0x1d')](_0x326e2f[_0x344d('0x1e')],{'email':_0x2b949f,'role':_0x344d('0x1f')});}else{logger[_0x344d('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x344d('0x20'),_0x473468[_0x344d('0x1a')])})[_0x344d('0x16')](function(_0x28f3ed){logger['info'](_0x344d('0x21'));return _0x28f3ed[_0x344d('0x22')];});}});}else{logger[_0x344d('0xd')](_0x344d('0x23'));return request({'uri':util[_0x344d('0x1b')]('%s/users/me.json',_0x473468['remoteUri'])})[_0x344d('0x16')](function(_0xd88183){logger[_0x344d('0xd')](_0x344d('0x21'));return _0xd88183[_0x344d('0x22')];});}}function getEndUser(_0x597551,_0x1da133,_0x1514b0){logger['info'](_0x344d('0x24'),_0x1514b0);return request({'uri':util[_0x344d('0x1b')](_0x344d('0x25'),_0x597551['remoteUri']),'qs':{'query':util[_0x344d('0x1b')](_0x344d('0x26'),_0x1514b0)}})[_0x344d('0x16')](function(_0x3fc0d6){var _0x4df571;if(_0x3fc0d6[_0x344d('0x1e')][_0x344d('0x27')]){_0x3fc0d6[_0x344d('0x1e')]=_['filter'](_0x3fc0d6[_0x344d('0x1e')],{'suspended':![],'role':_0x344d('0x28')});if(_0x3fc0d6[_0x344d('0x1e')][_0x344d('0x27')]){_0x4df571=_[_0x344d('0x29')](_0x3fc0d6['results']);}}if(_0x4df571){logger['info'](_0x344d('0x2a'));return _0x4df571;}else{logger[_0x344d('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x344d('0x1b')]('%s/users.json',_0x597551[_0x344d('0x1a')]),'method':_0x344d('0xf'),'body':{'user':{'role':_0x344d('0x28'),'name':util[_0x344d('0x1b')]('Caller\x20-\x20%s',_0x1da133||_0x1514b0),'phone':_0x1514b0}}})[_0x344d('0x16')](function(_0x50a796){logger[_0x344d('0xd')](_0x344d('0x2b'));return _0x50a796[_0x344d('0x22')];});}});}function getAuth(_0x4d08d1){var _0x5514ec;if(_0x4d08d1['authType']===_0x344d('0x2c')){_0x5514ec=util[_0x344d('0x1b')](_0x344d('0x2d'),_0x4d08d1[_0x344d('0x2e')],_0x4d08d1[_0x344d('0x2c')]);}else if(_0x4d08d1[_0x344d('0x2f')]===_0x344d('0x30')){_0x5514ec=util[_0x344d('0x1b')](_0x344d('0x31'),_0x4d08d1[_0x344d('0x2e')],_0x4d08d1['token']);}return util[_0x344d('0x1b')](_0x344d('0x32'),new Buffer(_0x5514ec)[_0x344d('0x33')](_0x344d('0x34')));}function request(_0x4257ee){logger[_0x344d('0x35')](_0x344d('0x36'),JSON['stringify'](_0x4257ee));return rp(_[_0x344d('0x8')](_0x4257ee,{'method':_0x344d('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x2e0e72,_0x116a48){var _0x1b0c7f=[];if(_0x2e0e72&&_0x2e0e72[_0x344d('0x27')]>0x0){_0x1b0c7f=_[_0x344d('0x38')](_0x2e0e72,_0x116a48);}return _0x1b0c7f;}function getCustomFields(_0x3a91cf,_0x5bdcaf){var _0x553e8d=[];var _0x1a2920={'custom_fields':[]};if(_0x3a91cf[_0x344d('0x27')]>0x0){_[_0x344d('0x39')](_0x3a91cf,function(_0x5e4e4f){if(_[_0x344d('0x3a')]([_0x344d('0x3b'),_0x344d('0x3c')],_0x5e4e4f[_0x344d('0x3d')])&&_0x5e4e4f[_0x344d('0x3e')]&&!_0x5e4e4f[_0x344d('0x3f')]){_0x1a2920[_0x5e4e4f[_0x344d('0x3e')][_0x344d('0x40')]()]=_0x5e4e4f[_0x344d('0x41')][_0x344d('0x33')]();}else if(_[_0x344d('0x3a')]([_0x344d('0x3b'),_0x344d('0x3c')],_0x5e4e4f[_0x344d('0x3d')])&&_0x5e4e4f['idField']&&_0x5e4e4f[_0x344d('0x3f')]){_0x1a2920[_0x344d('0x42')][_0x344d('0x43')]({'id':_0x5e4e4f['idField'],'value':_0x5e4e4f['content'][_0x344d('0x33')]()});}else if(_0x5e4e4f[_0x344d('0x3d')]===_0x344d('0x44')&&_0x5e4e4f[_0x344d('0x45')]&&_0x5e4e4f[_0x344d('0x46')]&&_0x5e4e4f[_0x344d('0x3f')]){_0x5bdcaf[_0x5e4e4f[_0x344d('0x45')]]&&_0x1a2920['custom_fields'][_0x344d('0x43')]({'id':_0x5e4e4f['idField'],'value':_0x5bdcaf[_0x5e4e4f[_0x344d('0x45')]][_0x344d('0x33')]()});}else if(_0x5e4e4f[_0x344d('0x3d')]===_0x344d('0x47')&&_0x5e4e4f['Variable']&&_0x5e4e4f[_0x344d('0x48')][_0x344d('0x11')]&&_0x5e4e4f[_0x344d('0x46')]&&_0x5e4e4f[_0x344d('0x3f')]){_0x5bdcaf[_0x5e4e4f[_0x344d('0x48')][_0x344d('0x11')]['toLowerCase']()]&&_0x1a2920[_0x344d('0x42')][_0x344d('0x43')]({'id':_0x5e4e4f[_0x344d('0x46')],'value':_0x5bdcaf[_0x5e4e4f[_0x344d('0x48')][_0x344d('0x11')]['toLowerCase']()]['toString']()});}});}return _0x1a2920;}exports['queue']=function(_0x55f1c3,_0x2a097f,_0x3483dc,_0x230c6f,_0x2def14,_0x130384){var _0x319366,_0x4778b4;_0x130384[_0x344d('0x1a')]=intUtil[_0x344d('0x49')](_0x130384[_0x344d('0x1a')]);_0x130384[_0x344d('0x4a')]=intUtil['stripTrailingSlash'](_0x130384[_0x344d('0x4a')]);if(_0x2def14&&_0x2def14['monitor_format']){logger['info'](_0x344d('0x4b'),_0x344d('0x4c'));_0x2a097f[_0x344d('0x4d')]=util[_0x344d('0x1b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x130384[_0x344d('0x4a')],_0x2a097f[_0x344d('0x4e')],md5(_0x2a097f[_0x344d('0x4e')]));}else{_0x2a097f[_0x344d('0x4d')]='';}headers['Authorization']=getAuth(_0x130384);return getUser(_0x130384,_0x230c6f['email'])['then'](function(_0x4a34f7){_0x319366=_0x4a34f7;logger[_0x344d('0xd')](_0x344d('0x4f'),_0x319366['id']);return getEndUser(_0x130384,_0x2a097f[_0x344d('0x50')],_0x2a097f[_0x344d('0x51')]);})[_0x344d('0x16')](function(_0x24e1b8){_0x4778b4=_0x24e1b8;logger['info'](_0x344d('0x52'),_0x4778b4['id']);return getTicket(_0x130384,_0x319366,_0x4778b4,_0x3483dc,_0x2a097f);})[_0x344d('0x16')](function(_0x5cdd11){if(_0x5cdd11){logger['info'](_0x344d('0x53'),_0x5cdd11['id']);switch(_0x130384['type']){case _0x344d('0x54'):logger[_0x344d('0xd')]('[QUEUE]',_0x344d('0x55'));return request({'uri':util[_0x344d('0x1b')](_0x344d('0x56'),_0x130384['remoteUri'],_0x319366['id'],_0x5cdd11['id']),'method':_0x344d('0xf')});case'newTab':logger[_0x344d('0xd')](_0x344d('0x4b'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x344d('0x1b')](_0x344d('0x57'),_0x230c6f[_0x344d('0x11')]),_0x344d('0x58'),{'uri':util[_0x344d('0x1b')](_0x344d('0x59'),_0x130384['remoteUri'][_0x344d('0x5a')](_0x344d('0x5b'),''),_0x5cdd11['id'])});break;default:logger['error'](_0x344d('0x4b'),_0x344d('0x5c'));}}})[_0x344d('0x5d')](function(_0x2ad918){logger[_0x344d('0x5e')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x344d('0x5f')](_0x2ad918,{'showHidden':!![],'depth':null}));});};exports[_0x344d('0x60')]=function(_0x5b4485,_0xda8f41,_0x15e3cf,_0x42ddb1,_0x463eca,_0x3275a0,_0x40b90e){var _0x32eb3c,_0x954cd0;_0x3275a0[_0x344d('0x1a')]=intUtil[_0x344d('0x49')](_0x3275a0[_0x344d('0x1a')]);_0x3275a0[_0x344d('0x4a')]=intUtil[_0x344d('0x49')](_0x3275a0[_0x344d('0x4a')]);if(_0x40b90e&&_0x40b90e[_0x344d('0x61')]&&_0x40b90e['recordingFormat']!==_0x344d('0x62')){logger[_0x344d('0xd')](_0x344d('0x63'),'Recording\x20is\x20enabled!');_0xda8f41[_0x344d('0x4d')]=util[_0x344d('0x1b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3275a0['serverUrl'],_0xda8f41[_0x344d('0x4e')],md5(_0xda8f41[_0x344d('0x4e')]));}headers[_0x344d('0x64')]=getAuth(_0x3275a0);return getUser(_0x3275a0,_0x42ddb1[_0x344d('0x65')])['then'](function(_0x53d6ab){_0x32eb3c=_0x53d6ab;logger[_0x344d('0xd')](_0x344d('0x4f'),_0x32eb3c['id']);return getEndUser(_0x3275a0,_0xda8f41['destcalleridname'],_0xda8f41[_0x344d('0x66')]);})['then'](function(_0x52ed80){_0x954cd0=_0x52ed80;logger[_0x344d('0xd')]('The\x20Enduser\x20ID\x20is:',_0x954cd0['id']);return getTicket(_0x3275a0,_0x32eb3c,_0x954cd0,_0x15e3cf,_0xda8f41);})[_0x344d('0x16')](function(_0x396aac){if(_0x396aac){logger[_0x344d('0xd')](_0x344d('0x53'),_0x396aac['id']);switch(_0x3275a0[_0x344d('0x3d')]){case _0x344d('0x54'):logger['info']('[OUTBOUND]',_0x344d('0x55'));return request({'uri':util[_0x344d('0x1b')](_0x344d('0x56'),_0x3275a0[_0x344d('0x1a')],_0x32eb3c['id'],_0x396aac['id']),'method':_0x344d('0xf')});case'newTab':logger[_0x344d('0xd')](_0x344d('0x63'),_0x344d('0x67'));emit(util[_0x344d('0x1b')]('user:%s',_0x42ddb1[_0x344d('0x11')]),_0x344d('0x58'),{'uri':util[_0x344d('0x1b')](_0x344d('0x59'),_0x3275a0['remoteUri']['replace']('/api/v2',''),_0x396aac['id'])});break;default:logger[_0x344d('0x5e')]('[OUTBOUND]',_0x344d('0x5c'));}}})['catch'](function(_0x2b4e4f){logger[_0x344d('0x5e')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x344d('0x5f')](_0x2b4e4f,{'showHidden':!![],'depth':null}));});};exports[_0x344d('0x68')]=function(_0x14bd21,_0x2d961e,_0x598205,_0xea2cc1,_0x54b092,_0x23c120){var _0x42c6f0,_0x328ab6;_0x23c120['remoteUri']=intUtil[_0x344d('0x49')](_0x23c120[_0x344d('0x1a')]);_0x23c120['serverUrl']=intUtil[_0x344d('0x49')](_0x23c120[_0x344d('0x4a')]);if(_0x54b092&&_0x54b092[_0x344d('0x69')]){logger[_0x344d('0xd')]('['+_0x2d961e[_0x344d('0x6a')][_0x344d('0x6b')]()+']','Recording\x20is\x20enabled!');_0x2d961e['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x23c120[_0x344d('0x4a')],_0x2d961e[_0x344d('0x4e')],md5(_0x2d961e['uniqueid']));}else{_0x2d961e[_0x344d('0x4d')]='';}headers[_0x344d('0x64')]=getAuth(_0x23c120);return getUser(_0x23c120)['then'](function(_0x20d20d){_0x42c6f0=_0x20d20d;logger['info'](_0x344d('0x4f'),_0x42c6f0['id']);return getEndUser(_0x23c120,_0x2d961e[_0x344d('0x50')],_0x2d961e['calleridnum']);})[_0x344d('0x16')](function(_0x47ae4b){_0x328ab6=_0x47ae4b;logger['info']('The\x20Enduser\x20ID\x20is:',_0x328ab6['id']);return getTicket(_0x23c120,_0x42c6f0,_0x328ab6,_0x598205,_0x2d961e);})[_0x344d('0x16')](function(_0x4d9a9a){if(_0x4d9a9a){logger['info'](_0x344d('0x53'),_0x4d9a9a['id']);}})['catch'](function(_0x113e9d){logger[_0x344d('0x5e')]('['+_0x2d961e[_0x344d('0x6a')]['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x113e9d,{'showHidden':!![],'depth':null}));});};