493873d3962ecb1f826ab545384e87a0d4bc5d4f
[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 _0x1a76=['ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','remoteUri','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','variable','variableName','custom_fields','customVariable','Variable','name','push','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','Zendesk\x20account\x20type\x20not\x20recognized','inspect','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','/api/v2','error','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','catch','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','emit','application/json','info','Creating\x20new\x20ticket...','format','POST','Tags','getString','Subjects','Descriptions','Fields','then'];(function(_0x2f25c9,_0xabd53a){var _0x58c8f8=function(_0x5b45a4){while(--_0x5b45a4){_0x2f25c9['push'](_0x2f25c9['shift']());}};_0x58c8f8(++_0xabd53a);}(_0x1a76,0xd5));var _0x61a7=function(_0xba144b,_0x62e472){_0xba144b=_0xba144b-0x0;var _0x43b7f1=_0x1a76[_0xba144b];return _0x43b7f1;};'use strict';var _=require(_0x61a7('0x0'));var rp=require(_0x61a7('0x1'));var md5=require('md5');var util=require(_0x61a7('0x2'));var Redis=require(_0x61a7('0x3'));var intUtil=require('./util');var config=require(_0x61a7('0x4'));var logger=require(_0x61a7('0x5'))('zendesk');config['redis']=_[_0x61a7('0x6')](config[_0x61a7('0x7')],{'host':_0x61a7('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x61a7('0x7')]));function emit(_0x2cd78b,_0xa80451,_0x13eb0b){io['to'](_0x2cd78b)[_0x61a7('0x9')](_0xa80451,_0x13eb0b);}var headers={'Content-Type':_0x61a7('0xa'),'Accept':_0x61a7('0xa')};function getTicket(_0x1b1052,_0x525b09,_0xd8aad5,_0x2562ec,_0x1a05e5){logger[_0x61a7('0xb')](_0x61a7('0xc'));return request({'uri':util[_0x61a7('0xd')]('%s/tickets.json',_0x1b1052['remoteUri']),'method':_0x61a7('0xe'),'body':{'ticket':_['merge']({'requester_id':_0xd8aad5['id'],'submitter_id':_0x525b09?_0x525b09['id']:undefined,'assignee_id':_0x525b09?_0x525b09['id']:undefined,'tags':getTags(_0x2562ec[_0x61a7('0xf')],'name'),'subject':intUtil[_0x61a7('0x10')](_0x2562ec[_0x61a7('0x11')],_0x1a05e5,'\x20'),'description':intUtil['getString'](_0x2562ec[_0x61a7('0x12')],_0x1a05e5,'\x0a'),'comment':{'public':![],'body':intUtil[_0x61a7('0x10')](_0x2562ec['Descriptions'],_0x1a05e5,'\x0a')}},getCustomFields(_0x2562ec[_0x61a7('0x13')],_0x1a05e5))}})[_0x61a7('0x14')](function(_0x4beabe){logger[_0x61a7('0xb')]('Ticket\x20created!');return _0x4beabe[_0x61a7('0x15')];});}function getUser(_0x30aa94,_0x397db3){if(intUtil[_0x61a7('0x16')](_0x397db3)){logger[_0x61a7('0xb')](_0x61a7('0x17'),_0x397db3);return request({'uri':util[_0x61a7('0xd')](_0x61a7('0x18'),_0x30aa94['remoteUri']),'qs':{'query':util['format'](_0x61a7('0x19'),_0x397db3)}})[_0x61a7('0x14')](function(_0xe5fc6f){if(_0xe5fc6f[_0x61a7('0x1a')]){logger[_0x61a7('0xb')](_0x61a7('0x1b'));return _[_0x61a7('0x1c')](_0xe5fc6f['results'],{'email':_0x397db3,'role':_0x61a7('0x1d')});}else{logger[_0x61a7('0xb')](_0x61a7('0x1e'));return request({'uri':util['format'](_0x61a7('0x1f'),_0x30aa94['remoteUri'])})[_0x61a7('0x14')](function(_0x18386d){logger['info'](_0x61a7('0x20'));return _0x18386d[_0x61a7('0x21')];});}});}else{logger[_0x61a7('0xb')](_0x61a7('0x1e'));return request({'uri':util[_0x61a7('0xd')](_0x61a7('0x1f'),_0x30aa94['remoteUri'])})['then'](function(_0x3ec18a){logger[_0x61a7('0xb')](_0x61a7('0x20'));return _0x3ec18a['user'];});}}function getEndUser(_0x5de400,_0x282eb2,_0xb2ec9){logger[_0x61a7('0xb')](_0x61a7('0x22'),_0xb2ec9);return request({'uri':util[_0x61a7('0xd')](_0x61a7('0x18'),_0x5de400[_0x61a7('0x23')]),'qs':{'query':util[_0x61a7('0xd')](_0x61a7('0x24'),_0xb2ec9)}})['then'](function(_0x417ac7){var _0x8c98d4;if(_0x417ac7[_0x61a7('0x25')][_0x61a7('0x26')]){_0x417ac7['results']=_[_0x61a7('0x27')](_0x417ac7[_0x61a7('0x25')],{'suspended':![],'role':_0x61a7('0x28')});if(_0x417ac7['results'][_0x61a7('0x26')]){_0x8c98d4=_[_0x61a7('0x29')](_0x417ac7['results']);}}if(_0x8c98d4){logger[_0x61a7('0xb')](_0x61a7('0x2a'));return _0x8c98d4;}else{logger[_0x61a7('0xb')](_0x61a7('0x2b'));return request({'uri':util[_0x61a7('0xd')](_0x61a7('0x2c'),_0x5de400[_0x61a7('0x23')]),'method':_0x61a7('0xe'),'body':{'user':{'role':_0x61a7('0x28'),'name':util['format'](_0x61a7('0x2d'),_0x282eb2||_0xb2ec9),'phone':_0xb2ec9}}})[_0x61a7('0x14')](function(_0x1abc1a){logger[_0x61a7('0xb')](_0x61a7('0x2e'));return _0x1abc1a[_0x61a7('0x21')];});}});}function getAuth(_0xd0e6c0){var _0x461bf9;if(_0xd0e6c0['authType']===_0x61a7('0x2f')){_0x461bf9=util['format'](_0x61a7('0x30'),_0xd0e6c0[_0x61a7('0x31')],_0xd0e6c0[_0x61a7('0x2f')]);}else if(_0xd0e6c0[_0x61a7('0x32')]===_0x61a7('0x33')){_0x461bf9=util[_0x61a7('0xd')](_0x61a7('0x34'),_0xd0e6c0[_0x61a7('0x31')],_0xd0e6c0['token']);}return util['format'](_0x61a7('0x35'),new Buffer(_0x461bf9)[_0x61a7('0x36')](_0x61a7('0x37')));}function request(_0x20c329){logger[_0x61a7('0x38')](_0x61a7('0x39'),JSON['stringify'](_0x20c329));return rp(_['defaults'](_0x20c329,{'method':_0x61a7('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x5db360,_0x1a8d01){var _0x4e91e2=[];if(_0x5db360&&_0x5db360['length']>0x0){_0x4e91e2=_[_0x61a7('0x3b')](_0x5db360,_0x1a8d01);}return _0x4e91e2;}function getCustomFields(_0x303456,_0x44bc6b){var _0x51edb3=[];var _0x30ecfb={'custom_fields':[]};if(_0x303456[_0x61a7('0x26')]>0x0){_['forEach'](_0x303456,function(_0x3cbc8b){if(_[_0x61a7('0x3c')]([_0x61a7('0x3d'),_0x61a7('0x3e')],_0x3cbc8b[_0x61a7('0x3f')])&&_0x3cbc8b[_0x61a7('0x40')]&&!_0x3cbc8b[_0x61a7('0x41')]){_0x30ecfb[_0x3cbc8b[_0x61a7('0x40')][_0x61a7('0x42')]()]=_0x3cbc8b[_0x61a7('0x43')][_0x61a7('0x36')]();}else if(_[_0x61a7('0x3c')]([_0x61a7('0x3d'),_0x61a7('0x3e')],_0x3cbc8b[_0x61a7('0x3f')])&&_0x3cbc8b[_0x61a7('0x44')]&&_0x3cbc8b['customField']){_0x30ecfb['custom_fields']['push']({'id':_0x3cbc8b[_0x61a7('0x44')],'value':_0x3cbc8b[_0x61a7('0x43')][_0x61a7('0x36')]()});}else if(_0x3cbc8b['type']===_0x61a7('0x45')&&_0x3cbc8b[_0x61a7('0x46')]&&_0x3cbc8b['idField']&&_0x3cbc8b[_0x61a7('0x41')]){_0x44bc6b[_0x3cbc8b[_0x61a7('0x46')]]&&_0x30ecfb[_0x61a7('0x47')]['push']({'id':_0x3cbc8b['idField'],'value':_0x44bc6b[_0x3cbc8b[_0x61a7('0x46')]][_0x61a7('0x36')]()});}else if(_0x3cbc8b['type']===_0x61a7('0x48')&&_0x3cbc8b[_0x61a7('0x49')]&&_0x3cbc8b[_0x61a7('0x49')][_0x61a7('0x4a')]&&_0x3cbc8b['idField']&&_0x3cbc8b[_0x61a7('0x41')]){_0x44bc6b[_0x3cbc8b['Variable'][_0x61a7('0x4a')][_0x61a7('0x42')]()]&&_0x30ecfb[_0x61a7('0x47')][_0x61a7('0x4b')]({'id':_0x3cbc8b[_0x61a7('0x44')],'value':_0x44bc6b[_0x3cbc8b['Variable']['name'][_0x61a7('0x42')]()][_0x61a7('0x36')]()});}});}return _0x30ecfb;}exports[_0x61a7('0x4c')]=function(_0xc5f96c,_0x4bba78,_0xff598e,_0xa155d4,_0x5435da,_0x78e39f){var _0xe76182,_0x34772b;_0x78e39f[_0x61a7('0x23')]=intUtil[_0x61a7('0x4d')](_0x78e39f['remoteUri']);_0x78e39f[_0x61a7('0x4e')]=intUtil[_0x61a7('0x4d')](_0x78e39f[_0x61a7('0x4e')]);if(_0x5435da&&_0x5435da[_0x61a7('0x4f')]){logger[_0x61a7('0xb')]('[QUEUE]',_0x61a7('0x50'));_0x4bba78[_0x61a7('0x51')]=util[_0x61a7('0xd')](_0x61a7('0x52'),_0x78e39f[_0x61a7('0x4e')],_0x4bba78[_0x61a7('0x53')],md5(_0x4bba78['uniqueid']));}else{_0x4bba78[_0x61a7('0x51')]='';}headers[_0x61a7('0x54')]=getAuth(_0x78e39f);return getUser(_0x78e39f,_0xa155d4[_0x61a7('0x55')])[_0x61a7('0x14')](function(_0x138eb0){_0xe76182=_0x138eb0;logger[_0x61a7('0xb')]('The\x20User\x20ID\x20is:',_0xe76182['id']);return getEndUser(_0x78e39f,_0x4bba78[_0x61a7('0x56')],_0x4bba78[_0x61a7('0x57')]);})[_0x61a7('0x14')](function(_0x2fbddb){_0x34772b=_0x2fbddb;logger[_0x61a7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x34772b['id']);return getTicket(_0x78e39f,_0xe76182,_0x34772b,_0xff598e,_0x4bba78);})['then'](function(_0x38f1e8){if(_0x38f1e8){logger[_0x61a7('0xb')](_0x61a7('0x58'),_0x38f1e8['id']);switch(_0x78e39f[_0x61a7('0x3f')]){case _0x61a7('0x59'):logger['info'](_0x61a7('0x5a'),_0x61a7('0x5b'));return request({'uri':util['format'](_0x61a7('0x5c'),_0x78e39f[_0x61a7('0x23')],_0xe76182['id'],_0x38f1e8['id']),'method':_0x61a7('0xe')});case _0x61a7('0x5d'):logger['info'](_0x61a7('0x5a'),_0x61a7('0x5e'));emit(util[_0x61a7('0xd')](_0x61a7('0x5f'),_0xa155d4['name']),_0x61a7('0x60'),{'uri':util[_0x61a7('0xd')](_0x61a7('0x61'),_0x78e39f[_0x61a7('0x23')][_0x61a7('0x62')]('/api/v2',''),_0x38f1e8['id'])});break;default:logger['error']('[QUEUE]',_0x61a7('0x63'));}}})['catch'](function(_0x4799a3){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x61a7('0x64')](_0x4799a3,{'showHidden':!![],'depth':null}));});};exports[_0x61a7('0x65')]=function(_0x522d9e,_0x3129ff,_0x41837a,_0x185144,_0x103fb9,_0x4a94e1,_0x4eec4a){var _0x18401c,_0x4d1778;_0x4a94e1[_0x61a7('0x23')]=intUtil[_0x61a7('0x4d')](_0x4a94e1[_0x61a7('0x23')]);_0x4a94e1[_0x61a7('0x4e')]=intUtil['stripTrailingSlash'](_0x4a94e1[_0x61a7('0x4e')]);if(_0x4eec4a&&_0x4eec4a[_0x61a7('0x66')]&&_0x4eec4a['recordingFormat']!==_0x61a7('0x67')){logger['info'](_0x61a7('0x68'),'Recording\x20is\x20enabled!');_0x3129ff[_0x61a7('0x51')]=util[_0x61a7('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a94e1[_0x61a7('0x4e')],_0x3129ff['uniqueid'],md5(_0x3129ff[_0x61a7('0x53')]));}headers[_0x61a7('0x54')]=getAuth(_0x4a94e1);return getUser(_0x4a94e1,_0x185144[_0x61a7('0x55')])[_0x61a7('0x14')](function(_0x55ec2b){_0x18401c=_0x55ec2b;logger[_0x61a7('0xb')](_0x61a7('0x69'),_0x18401c['id']);return getEndUser(_0x4a94e1,_0x3129ff[_0x61a7('0x6a')],_0x3129ff[_0x61a7('0x6b')]);})['then'](function(_0x375fa4){_0x4d1778=_0x375fa4;logger['info'](_0x61a7('0x6c'),_0x4d1778['id']);return getTicket(_0x4a94e1,_0x18401c,_0x4d1778,_0x41837a,_0x3129ff);})[_0x61a7('0x14')](function(_0x8e1440){if(_0x8e1440){logger['info'](_0x61a7('0x58'),_0x8e1440['id']);switch(_0x4a94e1[_0x61a7('0x3f')]){case _0x61a7('0x59'):logger[_0x61a7('0xb')](_0x61a7('0x68'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x61a7('0xd')](_0x61a7('0x5c'),_0x4a94e1[_0x61a7('0x23')],_0x18401c['id'],_0x8e1440['id']),'method':_0x61a7('0xe')});case _0x61a7('0x5d'):logger[_0x61a7('0xb')]('[OUTBOUND]',_0x61a7('0x5e'));emit(util[_0x61a7('0xd')](_0x61a7('0x5f'),_0x185144[_0x61a7('0x4a')]),_0x61a7('0x60'),{'uri':util[_0x61a7('0xd')](_0x61a7('0x61'),_0x4a94e1[_0x61a7('0x23')]['replace'](_0x61a7('0x6d'),''),_0x8e1440['id'])});break;default:logger[_0x61a7('0x6e')](_0x61a7('0x68'),_0x61a7('0x63'));}}})['catch'](function(_0x224f7f){logger[_0x61a7('0x6e')](_0x61a7('0x6f'),util[_0x61a7('0x64')](_0x224f7f,{'showHidden':!![],'depth':null}));});};exports[_0x61a7('0x70')]=function(_0x36b51f,_0x203da7,_0x4f31b1,_0x2f9d20,_0xebb5b5,_0x11c8d5){var _0x1bdde6,_0x2c425e;_0x11c8d5[_0x61a7('0x23')]=intUtil['stripTrailingSlash'](_0x11c8d5[_0x61a7('0x23')]);_0x11c8d5[_0x61a7('0x4e')]=intUtil[_0x61a7('0x4d')](_0x11c8d5[_0x61a7('0x4e')]);if(_0xebb5b5&&_0xebb5b5[_0x61a7('0x4f')]){logger[_0x61a7('0xb')]('['+_0x203da7[_0x61a7('0x71')][_0x61a7('0x72')]()+']','Recording\x20is\x20enabled!');_0x203da7['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x11c8d5[_0x61a7('0x4e')],_0x203da7['uniqueid'],md5(_0x203da7[_0x61a7('0x53')]));}else{_0x203da7[_0x61a7('0x51')]='';}headers[_0x61a7('0x54')]=getAuth(_0x11c8d5);return getUser(_0x11c8d5)['then'](function(_0x543295){_0x1bdde6=_0x543295;logger[_0x61a7('0xb')](_0x61a7('0x69'),_0x1bdde6['id']);return getEndUser(_0x11c8d5,_0x203da7[_0x61a7('0x56')],_0x203da7[_0x61a7('0x57')]);})[_0x61a7('0x14')](function(_0x5160aa){_0x2c425e=_0x5160aa;logger[_0x61a7('0xb')](_0x61a7('0x6c'),_0x2c425e['id']);return getTicket(_0x11c8d5,_0x1bdde6,_0x2c425e,_0x4f31b1,_0x203da7);})[_0x61a7('0x14')](function(_0x588f7c){if(_0x588f7c){logger[_0x61a7('0xb')](_0x61a7('0x58'),_0x588f7c['id']);}})[_0x61a7('0x73')](function(_0x42861b){logger[_0x61a7('0x6e')]('['+_0x203da7['lastevent'][_0x61a7('0x72')]()+']'+_0x61a7('0x74'),util['inspect'](_0x42861b,{'showHidden':!![],'depth':null}));});};