265cf72ab1025446b1397ffd9004eb81b9eee12c
[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 _0x44d5=['%s:%s','password','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','defaults','GET','map','forEach','includes','string','type','nameField','customField','toLowerCase','content','picklist','custom_fields','push','variable','variableName','idField','customVariable','Variable','name','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','%s/channels/voice/agents/%d/tickets/%d/display.json','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','monitor_format','lastevent','Recording\x20is\x20enabled!','calleridnum','The\x20Enduser\x20ID\x20is:','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','POST','merge','Tags','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','format','%s/search.json','type:user\x20role:agent\x20email:%s','results','agent','%s/users/me.json','remoteUri','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','authType'];(function(_0x3e3eaa,_0xb98be9){var _0x3a1e7f=function(_0x5992f4){while(--_0x5992f4){_0x3e3eaa['push'](_0x3e3eaa['shift']());}};_0x3a1e7f(++_0xb98be9);}(_0x44d5,0x19b));var _0x544d=function(_0x5f2acc,_0x47fcfd){_0x5f2acc=_0x5f2acc-0x0;var _0x1ec79c=_0x44d5[_0x5f2acc];return _0x1ec79c;};'use strict';var _=require(_0x544d('0x0'));var rp=require(_0x544d('0x1'));var md5=require(_0x544d('0x2'));var util=require(_0x544d('0x3'));var Redis=require(_0x544d('0x4'));var intUtil=require(_0x544d('0x5'));var config=require(_0x544d('0x6'));var logger=require(_0x544d('0x7'))(_0x544d('0x8'));config['redis']=_['defaults'](config['redis'],{'host':_0x544d('0x9'),'port':0x18eb});var io=require(_0x544d('0xa'))(new Redis(config['redis']));function emit(_0x3dac5,_0x421f72,_0x30c1f3){io['to'](_0x3dac5)[_0x544d('0xb')](_0x421f72,_0x30c1f3);}var headers={'Content-Type':'application/json','Accept':_0x544d('0xc')};function getTicket(_0x4180cc,_0x1de4a3,_0x253767,_0x369d75,_0x176efe){logger[_0x544d('0xd')](_0x544d('0xe'));return request({'uri':util['format']('%s/tickets.json',_0x4180cc['remoteUri']),'method':_0x544d('0xf'),'body':{'ticket':_[_0x544d('0x10')]({'requester_id':_0x253767['id'],'submitter_id':_0x1de4a3?_0x1de4a3['id']:undefined,'assignee_id':_0x1de4a3?_0x1de4a3['id']:undefined,'tags':getTags(_0x369d75[_0x544d('0x11')],'name'),'subject':intUtil[_0x544d('0x12')](_0x369d75[_0x544d('0x13')],_0x176efe,'\x20'),'description':intUtil['getString'](_0x369d75[_0x544d('0x14')],_0x176efe,'\x0a'),'comment':{'public':![],'body':intUtil[_0x544d('0x12')](_0x369d75[_0x544d('0x14')],_0x176efe,'\x0a')}},getCustomFields(_0x369d75[_0x544d('0x15')],_0x176efe))}})[_0x544d('0x16')](function(_0x431c09){logger[_0x544d('0xd')](_0x544d('0x17'));return _0x431c09[_0x544d('0x18')];});}function getUser(_0xc4a1d0,_0x2f641b){if(intUtil[_0x544d('0x19')](_0x2f641b)){logger['info']('Getting\x20agent\x20with\x20email',_0x2f641b);return request({'uri':util[_0x544d('0x1a')](_0x544d('0x1b'),_0xc4a1d0['remoteUri']),'qs':{'query':util[_0x544d('0x1a')](_0x544d('0x1c'),_0x2f641b)}})[_0x544d('0x16')](function(_0x469713){if(_0x469713['count']){logger['info']('Agent\x20found!');return _['find'](_0x469713[_0x544d('0x1d')],{'email':_0x2f641b,'role':_0x544d('0x1e')});}else{logger[_0x544d('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x544d('0x1f'),_0xc4a1d0['remoteUri'])})['then'](function(_0x50afa2){logger[_0x544d('0xd')]('Admin\x20account\x20selected.');return _0x50afa2['user'];});}});}else{logger[_0x544d('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x544d('0x1a')]('%s/users/me.json',_0xc4a1d0[_0x544d('0x20')])})[_0x544d('0x16')](function(_0x58e61d){logger['info'](_0x544d('0x21'));return _0x58e61d[_0x544d('0x22')];});}}function getEndUser(_0x22c5fb,_0x444fea,_0x6347e3){logger[_0x544d('0xd')](_0x544d('0x23'),_0x6347e3);return request({'uri':util[_0x544d('0x1a')](_0x544d('0x1b'),_0x22c5fb[_0x544d('0x20')]),'qs':{'query':util[_0x544d('0x1a')](_0x544d('0x24'),_0x6347e3)}})[_0x544d('0x16')](function(_0x53cdee){var _0x4ee1a7;if(_0x53cdee['results'][_0x544d('0x25')]){_0x53cdee[_0x544d('0x1d')]=_[_0x544d('0x26')](_0x53cdee['results'],{'suspended':![],'role':'end-user'});if(_0x53cdee[_0x544d('0x1d')][_0x544d('0x25')]){_0x4ee1a7=_['first'](_0x53cdee[_0x544d('0x1d')]);}}if(_0x4ee1a7){logger[_0x544d('0xd')](_0x544d('0x27'));return _0x4ee1a7;}else{logger[_0x544d('0xd')](_0x544d('0x28'));return request({'uri':util[_0x544d('0x1a')](_0x544d('0x29'),_0x22c5fb[_0x544d('0x20')]),'method':_0x544d('0xf'),'body':{'user':{'role':_0x544d('0x2a'),'name':util['format'](_0x544d('0x2b'),_0x444fea||_0x6347e3),'phone':_0x6347e3}}})[_0x544d('0x16')](function(_0x2386eb){logger[_0x544d('0xd')]('Enduser\x20created.');return _0x2386eb[_0x544d('0x22')];});}});}function getAuth(_0x2b9cb4){var _0x184a20;if(_0x2b9cb4[_0x544d('0x2c')]==='password'){_0x184a20=util[_0x544d('0x1a')](_0x544d('0x2d'),_0x2b9cb4['username'],_0x2b9cb4[_0x544d('0x2e')]);}else if(_0x2b9cb4[_0x544d('0x2c')]===_0x544d('0x2f')){_0x184a20=util['format'](_0x544d('0x30'),_0x2b9cb4['username'],_0x2b9cb4[_0x544d('0x2f')]);}return util[_0x544d('0x1a')](_0x544d('0x31'),new Buffer(_0x184a20)[_0x544d('0x32')](_0x544d('0x33')));}function request(_0x53ba3c){logger[_0x544d('0x34')](_0x544d('0x35'),JSON[_0x544d('0x36')](_0x53ba3c));return rp(_[_0x544d('0x37')](_0x53ba3c,{'method':_0x544d('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x42d723,_0x2910f1){var _0x4bc5b0=[];if(_0x42d723&&_0x42d723[_0x544d('0x25')]>0x0){_0x4bc5b0=_[_0x544d('0x39')](_0x42d723,_0x2910f1);}return _0x4bc5b0;}function getCustomFields(_0x29c074,_0x393292){var _0x1bcad2=[];var _0x50e327={'custom_fields':[]};if(_0x29c074['length']>0x0){_[_0x544d('0x3a')](_0x29c074,function(_0x5079cb){if(_[_0x544d('0x3b')]([_0x544d('0x3c'),'picklist'],_0x5079cb[_0x544d('0x3d')])&&_0x5079cb[_0x544d('0x3e')]&&!_0x5079cb[_0x544d('0x3f')]){_0x50e327[_0x5079cb[_0x544d('0x3e')][_0x544d('0x40')]()]=_0x5079cb[_0x544d('0x41')][_0x544d('0x32')]();}else if(_['includes']([_0x544d('0x3c'),_0x544d('0x42')],_0x5079cb[_0x544d('0x3d')])&&_0x5079cb['idField']&&_0x5079cb[_0x544d('0x3f')]){_0x50e327[_0x544d('0x43')][_0x544d('0x44')]({'id':_0x5079cb['idField'],'value':_0x5079cb[_0x544d('0x41')]['toString']()});}else if(_0x5079cb[_0x544d('0x3d')]===_0x544d('0x45')&&_0x5079cb[_0x544d('0x46')]&&_0x5079cb[_0x544d('0x47')]&&_0x5079cb[_0x544d('0x3f')]){_0x393292[_0x5079cb[_0x544d('0x46')]]&&_0x50e327['custom_fields'][_0x544d('0x44')]({'id':_0x5079cb['idField'],'value':_0x393292[_0x5079cb['variableName']][_0x544d('0x32')]()});}else if(_0x5079cb[_0x544d('0x3d')]===_0x544d('0x48')&&_0x5079cb[_0x544d('0x49')]&&_0x5079cb[_0x544d('0x49')][_0x544d('0x4a')]&&_0x5079cb[_0x544d('0x47')]&&_0x5079cb[_0x544d('0x3f')]){_0x393292[_0x5079cb[_0x544d('0x49')][_0x544d('0x4a')][_0x544d('0x40')]()]&&_0x50e327[_0x544d('0x43')][_0x544d('0x44')]({'id':_0x5079cb[_0x544d('0x47')],'value':_0x393292[_0x5079cb[_0x544d('0x49')][_0x544d('0x4a')]['toLowerCase']()]['toString']()});}});}return _0x50e327;}exports['queue']=function(_0x47baa8,_0x1b1449,_0x6bd054,_0x4d66a2,_0x2d717f,_0x500c32){var _0x5f4515,_0x568120;_0x500c32['remoteUri']=intUtil[_0x544d('0x4b')](_0x500c32[_0x544d('0x20')]);_0x500c32['serverUrl']=intUtil[_0x544d('0x4b')](_0x500c32[_0x544d('0x4c')]);if(_0x2d717f&&_0x2d717f['monitor_format']){logger[_0x544d('0xd')](_0x544d('0x4d'),'Recording\x20is\x20enabled!');_0x1b1449[_0x544d('0x4e')]=util['format'](_0x544d('0x4f'),_0x500c32[_0x544d('0x4c')],_0x1b1449[_0x544d('0x50')],md5(_0x1b1449[_0x544d('0x50')]));}else{_0x1b1449[_0x544d('0x4e')]='';}headers[_0x544d('0x51')]=getAuth(_0x500c32);return getUser(_0x500c32,_0x4d66a2['email'])[_0x544d('0x16')](function(_0x2a9e06){_0x5f4515=_0x2a9e06;logger[_0x544d('0xd')](_0x544d('0x52'),_0x5f4515['id']);return getEndUser(_0x500c32,_0x1b1449[_0x544d('0x53')],_0x1b1449['calleridnum']);})[_0x544d('0x16')](function(_0x499b84){_0x568120=_0x499b84;logger['info']('The\x20Enduser\x20ID\x20is:',_0x568120['id']);return getTicket(_0x500c32,_0x5f4515,_0x568120,_0x6bd054,_0x1b1449);})[_0x544d('0x16')](function(_0x100b4b){if(_0x100b4b){logger['info'](_0x544d('0x54'),_0x100b4b['id']);switch(_0x500c32[_0x544d('0x3d')]){case _0x544d('0x55'):logger['info']('[QUEUE]',_0x544d('0x56'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x500c32['remoteUri'],_0x5f4515['id'],_0x100b4b['id']),'method':_0x544d('0xf')});case _0x544d('0x57'):logger['info'](_0x544d('0x4d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x544d('0x58'),_0x4d66a2['name']),_0x544d('0x59'),{'uri':util['format'](_0x544d('0x5a'),_0x500c32[_0x544d('0x20')][_0x544d('0x5b')](_0x544d('0x5c'),''),_0x100b4b['id'])});break;default:logger[_0x544d('0x5d')]('[QUEUE]',_0x544d('0x5e'));}}})[_0x544d('0x5f')](function(_0x9f152b){logger[_0x544d('0x5d')](_0x544d('0x60'),util[_0x544d('0x61')](_0x9f152b,{'showHidden':!![],'depth':null}));});};exports[_0x544d('0x62')]=function(_0x3fe42e,_0x27da8f,_0x1806fd,_0x4298f1,_0x395207,_0x42a961,_0x331c93){var _0x434eed,_0x98ec9b;_0x42a961[_0x544d('0x20')]=intUtil['stripTrailingSlash'](_0x42a961['remoteUri']);_0x42a961[_0x544d('0x4c')]=intUtil[_0x544d('0x4b')](_0x42a961['serverUrl']);if(_0x331c93&&_0x331c93[_0x544d('0x63')]&&_0x331c93[_0x544d('0x63')]!==_0x544d('0x64')){logger[_0x544d('0xd')](_0x544d('0x65'),'Recording\x20is\x20enabled!');_0x27da8f[_0x544d('0x4e')]=util[_0x544d('0x1a')](_0x544d('0x4f'),_0x42a961['serverUrl'],_0x27da8f['uniqueid'],md5(_0x27da8f[_0x544d('0x50')]));}headers[_0x544d('0x51')]=getAuth(_0x42a961);return getUser(_0x42a961,_0x4298f1['email'])[_0x544d('0x16')](function(_0x3689fc){_0x434eed=_0x3689fc;logger[_0x544d('0xd')]('The\x20User\x20ID\x20is:',_0x434eed['id']);return getEndUser(_0x42a961,_0x27da8f[_0x544d('0x66')],_0x27da8f[_0x544d('0x67')]);})['then'](function(_0x2cb061){_0x98ec9b=_0x2cb061;logger[_0x544d('0xd')]('The\x20Enduser\x20ID\x20is:',_0x98ec9b['id']);return getTicket(_0x42a961,_0x434eed,_0x98ec9b,_0x1806fd,_0x27da8f);})[_0x544d('0x16')](function(_0x1e5cde){if(_0x1e5cde){logger[_0x544d('0xd')](_0x544d('0x54'),_0x1e5cde['id']);switch(_0x42a961[_0x544d('0x3d')]){case _0x544d('0x55'):logger['info'](_0x544d('0x65'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x544d('0x1a')](_0x544d('0x68'),_0x42a961[_0x544d('0x20')],_0x434eed['id'],_0x1e5cde['id']),'method':_0x544d('0xf')});case _0x544d('0x57'):logger[_0x544d('0xd')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x544d('0x1a')]('user:%s',_0x4298f1[_0x544d('0x4a')]),_0x544d('0x59'),{'uri':util['format'](_0x544d('0x5a'),_0x42a961[_0x544d('0x20')][_0x544d('0x5b')](_0x544d('0x5c'),''),_0x1e5cde['id'])});break;default:logger[_0x544d('0x5d')](_0x544d('0x65'),_0x544d('0x5e'));}}})[_0x544d('0x5f')](function(_0x9dc2ed){logger[_0x544d('0x5d')](_0x544d('0x69'),util[_0x544d('0x61')](_0x9dc2ed,{'showHidden':!![],'depth':null}));});};exports[_0x544d('0x6a')]=function(_0x554628,_0x3fe2b0,_0x2290d5,_0x262176,_0x31a76c,_0x940f0e){var _0x5cf2a3,_0x55e528;_0x940f0e[_0x544d('0x20')]=intUtil['stripTrailingSlash'](_0x940f0e[_0x544d('0x20')]);_0x940f0e[_0x544d('0x4c')]=intUtil[_0x544d('0x4b')](_0x940f0e['serverUrl']);if(_0x31a76c&&_0x31a76c[_0x544d('0x6b')]){logger[_0x544d('0xd')]('['+_0x3fe2b0[_0x544d('0x6c')]['toUpperCase']()+']',_0x544d('0x6d'));_0x3fe2b0[_0x544d('0x4e')]=util[_0x544d('0x1a')](_0x544d('0x4f'),_0x940f0e[_0x544d('0x4c')],_0x3fe2b0[_0x544d('0x50')],md5(_0x3fe2b0[_0x544d('0x50')]));}else{_0x3fe2b0[_0x544d('0x4e')]='';}headers[_0x544d('0x51')]=getAuth(_0x940f0e);return getUser(_0x940f0e)[_0x544d('0x16')](function(_0x55ae34){_0x5cf2a3=_0x55ae34;logger['info'](_0x544d('0x52'),_0x5cf2a3['id']);return getEndUser(_0x940f0e,_0x3fe2b0[_0x544d('0x53')],_0x3fe2b0[_0x544d('0x6e')]);})[_0x544d('0x16')](function(_0x32fa37){_0x55e528=_0x32fa37;logger[_0x544d('0xd')](_0x544d('0x6f'),_0x55e528['id']);return getTicket(_0x940f0e,_0x5cf2a3,_0x55e528,_0x2290d5,_0x3fe2b0);})[_0x544d('0x16')](function(_0x22c697){if(_0x22c697){logger[_0x544d('0xd')](_0x544d('0x54'),_0x22c697['id']);}})[_0x544d('0x5f')](function(_0x13ef5f){logger['error']('['+_0x3fe2b0[_0x544d('0x6c')][_0x544d('0x70')]()+']'+_0x544d('0x71'),util[_0x544d('0x61')](_0x13ef5f,{'showHidden':!![],'depth':null}));});};