95c51970b739876e7aba49e27e5ca91d387e6fe8
[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 _0xedd9=['The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','recordingFormat','none','[OUTBOUND]','email','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','newTab','inspect','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','agent','%s/users/me.json','Admin\x20account\x20selected.','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','Searching\x20enduser\x20with\x20phone','length','results','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','base64','debug','[HTTP]','stringify','GET','map','forEach','type','nameField','customField','content','toString','idField','custom_fields','push','variable','variableName','customVariable','Variable','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization'];(function(_0x2d283c,_0x1702d3){var _0xa8fbc0=function(_0x69f21b){while(--_0x69f21b){_0x2d283c['push'](_0x2d283c['shift']());}};_0xa8fbc0(++_0x1702d3);}(_0xedd9,0xfc));var _0x9edd=function(_0x2aac26,_0x378b29){_0x2aac26=_0x2aac26-0x0;var _0x1b1f7a=_0xedd9[_0x2aac26];return _0x1b1f7a;};'use strict';var _=require('lodash');var rp=require(_0x9edd('0x0'));var md5=require(_0x9edd('0x1'));var util=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var intUtil=require(_0x9edd('0x4'));var config=require(_0x9edd('0x5'));var logger=require(_0x9edd('0x6'))(_0x9edd('0x7'));config['redis']=_[_0x9edd('0x8')](config[_0x9edd('0x9')],{'host':_0x9edd('0xa'),'port':0x18eb});var io=require(_0x9edd('0xb'))(new Redis(config['redis']));function emit(_0xf0b2d8,_0x571af9,_0x172522){io['to'](_0xf0b2d8)[_0x9edd('0xc')](_0x571af9,_0x172522);}var headers={'Content-Type':_0x9edd('0xd'),'Accept':_0x9edd('0xd')};function getTicket(_0x49d5e3,_0x494a24,_0x5d2f90,_0x2076fc,_0x138767){logger['info'](_0x9edd('0xe'));return request({'uri':util[_0x9edd('0xf')]('%s/tickets.json',_0x49d5e3[_0x9edd('0x10')]),'method':_0x9edd('0x11'),'body':{'ticket':_[_0x9edd('0x12')]({'requester_id':_0x5d2f90['id'],'submitter_id':_0x494a24?_0x494a24['id']:undefined,'assignee_id':_0x494a24?_0x494a24['id']:undefined,'tags':getTags(_0x2076fc[_0x9edd('0x13')],_0x9edd('0x14')),'subject':intUtil[_0x9edd('0x15')](_0x2076fc[_0x9edd('0x16')],_0x138767,'\x20'),'description':intUtil[_0x9edd('0x15')](_0x2076fc['Descriptions'],_0x138767,'\x0a'),'comment':{'public':![],'body':intUtil[_0x9edd('0x15')](_0x2076fc[_0x9edd('0x17')],_0x138767,'\x0a')}},getCustomFields(_0x2076fc[_0x9edd('0x18')],_0x138767))}})[_0x9edd('0x19')](function(_0x13b6b6){logger[_0x9edd('0x1a')](_0x9edd('0x1b'));return _0x13b6b6[_0x9edd('0x1c')];});}function getUser(_0x4ea60f,_0x5f5bf4){if(intUtil[_0x9edd('0x1d')](_0x5f5bf4)){logger[_0x9edd('0x1a')]('Getting\x20agent\x20with\x20email',_0x5f5bf4);return request({'uri':util[_0x9edd('0xf')](_0x9edd('0x1e'),_0x4ea60f[_0x9edd('0x10')]),'qs':{'query':util['format'](_0x9edd('0x1f'),_0x5f5bf4)}})['then'](function(_0x2cdcef){if(_0x2cdcef[_0x9edd('0x20')]){logger['info']('Agent\x20found!');return _[_0x9edd('0x21')](_0x2cdcef['results'],{'email':_0x5f5bf4,'role':_0x9edd('0x22')});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x9edd('0xf')](_0x9edd('0x23'),_0x4ea60f['remoteUri'])})['then'](function(_0x341d67){logger[_0x9edd('0x1a')](_0x9edd('0x24'));return _0x341d67['user'];});}});}else{logger[_0x9edd('0x1a')](_0x9edd('0x25'));return request({'uri':util[_0x9edd('0xf')](_0x9edd('0x23'),_0x4ea60f[_0x9edd('0x10')])})['then'](function(_0x46c383){logger[_0x9edd('0x1a')](_0x9edd('0x24'));return _0x46c383[_0x9edd('0x26')];});}}function getEndUser(_0x310a4d,_0x4d507f,_0x4b3d1b){logger[_0x9edd('0x1a')](_0x9edd('0x27'),_0x4b3d1b);return request({'uri':util[_0x9edd('0xf')](_0x9edd('0x1e'),_0x310a4d[_0x9edd('0x10')]),'qs':{'query':util['format']('type:user\x20role:end-user\x20phone:%s',_0x4b3d1b)}})[_0x9edd('0x19')](function(_0x257a26){var _0x1c762c;if(_0x257a26['results'][_0x9edd('0x28')]){_0x257a26[_0x9edd('0x29')]=_[_0x9edd('0x2a')](_0x257a26[_0x9edd('0x29')],{'suspended':![],'role':'end-user'});if(_0x257a26[_0x9edd('0x29')][_0x9edd('0x28')]){_0x1c762c=_[_0x9edd('0x2b')](_0x257a26[_0x9edd('0x29')]);}}if(_0x1c762c){logger[_0x9edd('0x1a')](_0x9edd('0x2c'));return _0x1c762c;}else{logger[_0x9edd('0x1a')](_0x9edd('0x2d'));return request({'uri':util[_0x9edd('0xf')](_0x9edd('0x2e'),_0x310a4d[_0x9edd('0x10')]),'method':_0x9edd('0x11'),'body':{'user':{'role':_0x9edd('0x2f'),'name':util[_0x9edd('0xf')](_0x9edd('0x30'),_0x4d507f||_0x4b3d1b),'phone':_0x4b3d1b}}})['then'](function(_0x1453d2){logger[_0x9edd('0x1a')](_0x9edd('0x31'));return _0x1453d2['user'];});}});}function getAuth(_0x2d2f88){var _0x3990fb;if(_0x2d2f88[_0x9edd('0x32')]===_0x9edd('0x33')){_0x3990fb=util[_0x9edd('0xf')](_0x9edd('0x34'),_0x2d2f88[_0x9edd('0x35')],_0x2d2f88[_0x9edd('0x33')]);}else if(_0x2d2f88[_0x9edd('0x32')]===_0x9edd('0x36')){_0x3990fb=util[_0x9edd('0xf')](_0x9edd('0x37'),_0x2d2f88[_0x9edd('0x35')],_0x2d2f88[_0x9edd('0x36')]);}return util['format'](_0x9edd('0x38'),new Buffer(_0x3990fb)['toString'](_0x9edd('0x39')));}function request(_0x148630){logger[_0x9edd('0x3a')](_0x9edd('0x3b'),JSON[_0x9edd('0x3c')](_0x148630));return rp(_['defaults'](_0x148630,{'method':_0x9edd('0x3d'),'headers':headers,'json':!![]}));}function getTags(_0x44dbfc,_0x2b3469){var _0x38e9be=[];if(_0x44dbfc&&_0x44dbfc[_0x9edd('0x28')]>0x0){_0x38e9be=_[_0x9edd('0x3e')](_0x44dbfc,_0x2b3469);}return _0x38e9be;}function getCustomFields(_0x5c0627,_0x1cbbac){var _0x1ccee8=[];var _0x35c16f={'custom_fields':[]};if(_0x5c0627['length']>0x0){_[_0x9edd('0x3f')](_0x5c0627,function(_0x56a228){if(_0x56a228[_0x9edd('0x40')]==='string'&&_0x56a228[_0x9edd('0x41')]&&!_0x56a228[_0x9edd('0x42')]){_0x35c16f[_0x56a228[_0x9edd('0x41')]['toLowerCase']()]=_0x56a228[_0x9edd('0x43')][_0x9edd('0x44')]();}else if(_0x56a228[_0x9edd('0x40')]==='string'&&_0x56a228[_0x9edd('0x45')]&&_0x56a228['customField']){_0x35c16f[_0x9edd('0x46')][_0x9edd('0x47')]({'id':_0x56a228['idField'],'value':_0x56a228[_0x9edd('0x43')][_0x9edd('0x44')]()});}else if(_0x56a228[_0x9edd('0x40')]===_0x9edd('0x48')&&_0x56a228['variableName']&&_0x56a228[_0x9edd('0x45')]&&_0x56a228['customField']){_0x1cbbac[_0x56a228[_0x9edd('0x49')]]&&_0x35c16f[_0x9edd('0x46')]['push']({'id':_0x56a228[_0x9edd('0x45')],'value':_0x1cbbac[_0x56a228['variableName']]['toString']()});}else if(_0x56a228[_0x9edd('0x40')]===_0x9edd('0x4a')&&_0x56a228[_0x9edd('0x4b')]&&_0x56a228[_0x9edd('0x4b')][_0x9edd('0x14')]&&_0x56a228[_0x9edd('0x45')]&&_0x56a228[_0x9edd('0x42')]){_0x1cbbac[_0x56a228[_0x9edd('0x4b')][_0x9edd('0x14')][_0x9edd('0x4c')]()]&&_0x35c16f[_0x9edd('0x46')][_0x9edd('0x47')]({'id':_0x56a228[_0x9edd('0x45')],'value':_0x1cbbac[_0x56a228[_0x9edd('0x4b')][_0x9edd('0x14')]['toLowerCase']()][_0x9edd('0x44')]()});}});}return _0x35c16f;}exports[_0x9edd('0x4d')]=function(_0x2231c1,_0x1e5805,_0x241929,_0x3ecdfd,_0x10d41e,_0x4e9ad1){var _0x4a4656,_0x4bc7a1;_0x4e9ad1[_0x9edd('0x10')]=intUtil['stripTrailingSlash'](_0x4e9ad1[_0x9edd('0x10')]);_0x4e9ad1[_0x9edd('0x4e')]=intUtil[_0x9edd('0x4f')](_0x4e9ad1[_0x9edd('0x4e')]);if(_0x10d41e&&_0x10d41e[_0x9edd('0x50')]){logger['info'](_0x9edd('0x51'),_0x9edd('0x52'));_0x1e5805[_0x9edd('0x53')]=util['format'](_0x9edd('0x54'),_0x4e9ad1[_0x9edd('0x4e')],_0x1e5805[_0x9edd('0x55')],md5(_0x1e5805[_0x9edd('0x55')]));}else{_0x1e5805[_0x9edd('0x53')]='';}headers[_0x9edd('0x56')]=getAuth(_0x4e9ad1);return getUser(_0x4e9ad1,_0x3ecdfd['email'])[_0x9edd('0x19')](function(_0x237e91){_0x4a4656=_0x237e91;logger['info'](_0x9edd('0x57'),_0x4a4656['id']);return getEndUser(_0x4e9ad1,_0x1e5805[_0x9edd('0x58')],_0x1e5805['calleridnum']);})[_0x9edd('0x19')](function(_0x8134cd){_0x4bc7a1=_0x8134cd;logger[_0x9edd('0x1a')]('The\x20Enduser\x20ID\x20is:',_0x4bc7a1['id']);return getTicket(_0x4e9ad1,_0x4a4656,_0x4bc7a1,_0x241929,_0x1e5805);})[_0x9edd('0x19')](function(_0x151157){if(_0x151157){logger[_0x9edd('0x1a')](_0x9edd('0x59'),_0x151157['id']);switch(_0x4e9ad1['type']){case _0x9edd('0x5a'):logger[_0x9edd('0x1a')](_0x9edd('0x51'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x9edd('0xf')](_0x9edd('0x5b'),_0x4e9ad1['remoteUri'],_0x4a4656['id'],_0x151157['id']),'method':_0x9edd('0x11')});case'newTab':logger[_0x9edd('0x1a')](_0x9edd('0x51'),_0x9edd('0x5c'));emit(util[_0x9edd('0xf')](_0x9edd('0x5d'),_0x3ecdfd[_0x9edd('0x14')]),_0x9edd('0x5e'),{'uri':util[_0x9edd('0xf')](_0x9edd('0x5f'),_0x4e9ad1[_0x9edd('0x10')],_0x151157['id'])});break;default:logger[_0x9edd('0x60')]('[QUEUE]',_0x9edd('0x61'));}}})[_0x9edd('0x62')](function(_0x3acc09){logger['error'](_0x9edd('0x63'),util['inspect'](_0x3acc09,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x54ecfa,_0x1348a7,_0x45f47c,_0x366316,_0x35ddb3,_0x48a900,_0x56b38b){var _0x4e3c3e,_0x71820f;_0x48a900[_0x9edd('0x10')]=intUtil[_0x9edd('0x4f')](_0x48a900[_0x9edd('0x10')]);_0x48a900[_0x9edd('0x4e')]=intUtil[_0x9edd('0x4f')](_0x48a900[_0x9edd('0x4e')]);if(_0x56b38b&&_0x56b38b[_0x9edd('0x64')]&&_0x56b38b['recordingFormat']!==_0x9edd('0x65')){logger['info'](_0x9edd('0x66'),_0x9edd('0x52'));_0x1348a7['recordingURL']=util[_0x9edd('0xf')](_0x9edd('0x54'),_0x48a900[_0x9edd('0x4e')],_0x1348a7['uniqueid'],md5(_0x1348a7[_0x9edd('0x55')]));}headers[_0x9edd('0x56')]=getAuth(_0x48a900);return getUser(_0x48a900,_0x366316[_0x9edd('0x67')])[_0x9edd('0x19')](function(_0x1720b1){_0x4e3c3e=_0x1720b1;logger[_0x9edd('0x1a')]('The\x20User\x20ID\x20is:',_0x4e3c3e['id']);return getEndUser(_0x48a900,_0x1348a7['destcalleridname'],_0x1348a7[_0x9edd('0x68')]);})['then'](function(_0x173ec9){_0x71820f=_0x173ec9;logger[_0x9edd('0x1a')](_0x9edd('0x69'),_0x71820f['id']);return getTicket(_0x48a900,_0x4e3c3e,_0x71820f,_0x45f47c,_0x1348a7);})[_0x9edd('0x19')](function(_0x5df1d7){if(_0x5df1d7){logger[_0x9edd('0x1a')]('The\x20Ticket\x20ID\x20is:',_0x5df1d7['id']);switch(_0x48a900[_0x9edd('0x40')]){case _0x9edd('0x5a'):logger[_0x9edd('0x1a')]('[OUTBOUND]',_0x9edd('0x6a'));return request({'uri':util['format'](_0x9edd('0x5b'),_0x48a900[_0x9edd('0x10')],_0x4e3c3e['id'],_0x5df1d7['id']),'method':'POST'});case _0x9edd('0x6b'):logger['info'](_0x9edd('0x66'),_0x9edd('0x5c'));emit(util[_0x9edd('0xf')]('user:%s',_0x366316[_0x9edd('0x14')]),_0x9edd('0x5e'),{'uri':util[_0x9edd('0xf')](_0x9edd('0x5f'),_0x48a900[_0x9edd('0x10')],_0x5df1d7['id'])});break;default:logger['error']('[OUTBOUND]',_0x9edd('0x61'));}}})[_0x9edd('0x62')](function(_0x5516c4){logger['error']('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x9edd('0x6c')](_0x5516c4,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x5cde37,_0x3ef9c9,_0x32ff46,_0x589348,_0xb9ebeb,_0x11e082){var _0x34dff5,_0x5b3758;_0x11e082[_0x9edd('0x10')]=intUtil['stripTrailingSlash'](_0x11e082[_0x9edd('0x10')]);_0x11e082[_0x9edd('0x4e')]=intUtil['stripTrailingSlash'](_0x11e082[_0x9edd('0x4e')]);if(_0xb9ebeb&&_0xb9ebeb[_0x9edd('0x50')]){logger['info']('['+_0x3ef9c9[_0x9edd('0x6d')][_0x9edd('0x6e')]()+']',_0x9edd('0x52'));_0x3ef9c9[_0x9edd('0x53')]=util['format'](_0x9edd('0x54'),_0x11e082['serverUrl'],_0x3ef9c9[_0x9edd('0x55')],md5(_0x3ef9c9[_0x9edd('0x55')]));}else{_0x3ef9c9[_0x9edd('0x53')]='';}headers['Authorization']=getAuth(_0x11e082);return getUser(_0x11e082)[_0x9edd('0x19')](function(_0x286593){_0x34dff5=_0x286593;logger[_0x9edd('0x1a')](_0x9edd('0x57'),_0x34dff5['id']);return getEndUser(_0x11e082,_0x3ef9c9[_0x9edd('0x58')],_0x3ef9c9[_0x9edd('0x6f')]);})[_0x9edd('0x19')](function(_0x512d3a){_0x5b3758=_0x512d3a;logger['info'](_0x9edd('0x69'),_0x5b3758['id']);return getTicket(_0x11e082,_0x34dff5,_0x5b3758,_0x32ff46,_0x3ef9c9);})[_0x9edd('0x19')](function(_0x13254e){if(_0x13254e){logger[_0x9edd('0x1a')](_0x9edd('0x59'),_0x13254e['id']);}})['catch'](function(_0x2e40c8){logger[_0x9edd('0x60')]('['+_0x3ef9c9[_0x9edd('0x6d')]['toUpperCase']()+']'+_0x9edd('0x70'),util[_0x9edd('0x6c')](_0x2e40c8,{'showHidden':!![],'depth':null}));});};