Built motion from commit efa66e19.|2.6.22
[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 _0x6c44=['email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','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','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','inspect','outbound','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','unmanaged','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20Ticket\x20ID\x20is:','catch','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','./util','../../../../config/logger','zendesk','redis','emit','application/json','info','Creating\x20new\x20ticket...','format','remoteUri','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','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','POST','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','%s/token:%s','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','defaults','GET','map','string','picklist','type','customField','nameField','toLowerCase','content','includes','idField','custom_fields','push','variable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','Authorization'];(function(_0x3f837a,_0x35f365){var _0x5f4820=function(_0x12036c){while(--_0x12036c){_0x3f837a['push'](_0x3f837a['shift']());}};_0x5f4820(++_0x35f365);}(_0x6c44,0x1da));var _0x46c4=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x6c44[_0x1da527];return _0x40fc7c;};'use strict';var _=require(_0x46c4('0x0'));var rp=require(_0x46c4('0x1'));var md5=require('md5');var util=require(_0x46c4('0x2'));var Redis=require('ioredis');var intUtil=require(_0x46c4('0x3'));var config=require('../../../../config/environment');var logger=require(_0x46c4('0x4'))(_0x46c4('0x5'));config[_0x46c4('0x6')]=_['defaults'](config[_0x46c4('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x46c4('0x6')]));function emit(_0x4ee844,_0xa35a24,_0xb08305){io['to'](_0x4ee844)[_0x46c4('0x7')](_0xa35a24,_0xb08305);}var headers={'Content-Type':_0x46c4('0x8'),'Accept':'application/json'};function getTicket(_0x2d40dc,_0x41d734,_0x25e95d,_0x4e528e,_0x3c4781){logger[_0x46c4('0x9')](_0x46c4('0xa'));return request({'uri':util[_0x46c4('0xb')]('%s/tickets.json',_0x2d40dc[_0x46c4('0xc')]),'method':'POST','body':{'ticket':_[_0x46c4('0xd')]({'requester_id':_0x25e95d['id'],'submitter_id':_0x41d734?_0x41d734['id']:undefined,'assignee_id':_0x41d734?_0x41d734['id']:undefined,'tags':getTags(_0x4e528e[_0x46c4('0xe')],_0x46c4('0xf')),'subject':intUtil[_0x46c4('0x10')](_0x4e528e[_0x46c4('0x11')],_0x3c4781,'\x20'),'description':intUtil['getString'](_0x4e528e[_0x46c4('0x12')],_0x3c4781,'\x0a'),'comment':{'public':![],'body':intUtil[_0x46c4('0x10')](_0x4e528e[_0x46c4('0x12')],_0x3c4781,'\x0a')}},getCustomFields(_0x4e528e[_0x46c4('0x13')],_0x3c4781))}})[_0x46c4('0x14')](function(_0x812e25){logger['info']('Ticket\x20created!');return _0x812e25['ticket'];});}function getUser(_0x43db5f,_0x3d5d5c){if(intUtil[_0x46c4('0x15')](_0x3d5d5c)){logger[_0x46c4('0x9')](_0x46c4('0x16'),_0x3d5d5c);return request({'uri':util[_0x46c4('0xb')](_0x46c4('0x17'),_0x43db5f[_0x46c4('0xc')]),'qs':{'query':util[_0x46c4('0xb')](_0x46c4('0x18'),_0x3d5d5c)}})['then'](function(_0x50c496){if(_0x50c496[_0x46c4('0x19')]){logger[_0x46c4('0x9')](_0x46c4('0x1a'));return _[_0x46c4('0x1b')](_0x50c496[_0x46c4('0x1c')],{'email':_0x3d5d5c,'role':_0x46c4('0x1d')});}else{logger['info'](_0x46c4('0x1e'));return request({'uri':util[_0x46c4('0xb')](_0x46c4('0x1f'),_0x43db5f['remoteUri'])})[_0x46c4('0x14')](function(_0x290642){logger[_0x46c4('0x9')](_0x46c4('0x20'));return _0x290642[_0x46c4('0x21')];});}});}else{logger['info'](_0x46c4('0x1e'));return request({'uri':util[_0x46c4('0xb')](_0x46c4('0x1f'),_0x43db5f['remoteUri'])})['then'](function(_0x32d6ca){logger[_0x46c4('0x9')](_0x46c4('0x20'));return _0x32d6ca[_0x46c4('0x21')];});}}function getEndUser(_0x59d8ee,_0x3605ce,_0x886fbf){logger[_0x46c4('0x9')](_0x46c4('0x22'),_0x886fbf);return request({'uri':util['format'](_0x46c4('0x17'),_0x59d8ee[_0x46c4('0xc')]),'qs':{'query':util[_0x46c4('0xb')](_0x46c4('0x23'),_0x886fbf)}})['then'](function(_0x48d0b8){var _0x2d13a3;if(_0x48d0b8['results'][_0x46c4('0x24')]){_0x48d0b8['results']=_[_0x46c4('0x25')](_0x48d0b8[_0x46c4('0x1c')],{'suspended':![],'role':'end-user'});if(_0x48d0b8[_0x46c4('0x1c')][_0x46c4('0x24')]){_0x2d13a3=_['first'](_0x48d0b8[_0x46c4('0x1c')]);}}if(_0x2d13a3){logger[_0x46c4('0x9')](_0x46c4('0x26'));return _0x2d13a3;}else{logger[_0x46c4('0x9')](_0x46c4('0x27'));return request({'uri':util[_0x46c4('0xb')](_0x46c4('0x28'),_0x59d8ee[_0x46c4('0xc')]),'method':_0x46c4('0x29'),'body':{'user':{'role':_0x46c4('0x2a'),'name':util[_0x46c4('0xb')](_0x46c4('0x2b'),_0x3605ce||_0x886fbf),'phone':_0x886fbf}}})[_0x46c4('0x14')](function(_0xdcb085){logger[_0x46c4('0x9')](_0x46c4('0x2c'));return _0xdcb085[_0x46c4('0x21')];});}});}function getAuth(_0xc65c6b){var _0x5314e1;if(_0xc65c6b[_0x46c4('0x2d')]===_0x46c4('0x2e')){_0x5314e1=util[_0x46c4('0xb')](_0x46c4('0x2f'),_0xc65c6b[_0x46c4('0x30')],_0xc65c6b['password']);}else if(_0xc65c6b['authType']==='token'){_0x5314e1=util[_0x46c4('0xb')](_0x46c4('0x31'),_0xc65c6b[_0x46c4('0x30')],_0xc65c6b[_0x46c4('0x32')]);}return util[_0x46c4('0xb')](_0x46c4('0x33'),new Buffer(_0x5314e1)[_0x46c4('0x34')](_0x46c4('0x35')));}function request(_0x446931){logger[_0x46c4('0x36')](_0x46c4('0x37'),JSON[_0x46c4('0x38')](_0x446931));return rp(_[_0x46c4('0x39')](_0x446931,{'method':_0x46c4('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x507999,_0x32afaa){var _0x27d231=[];if(_0x507999&&_0x507999[_0x46c4('0x24')]>0x0){_0x27d231=_[_0x46c4('0x3b')](_0x507999,_0x32afaa);}return _0x27d231;}function getCustomFields(_0x294023,_0x50f896){var _0x490af3=[];var _0x1b2640={'custom_fields':[]};if(_0x294023[_0x46c4('0x24')]>0x0){_['forEach'](_0x294023,function(_0x53fa20){if(_['includes']([_0x46c4('0x3c'),_0x46c4('0x3d')],_0x53fa20[_0x46c4('0x3e')])&&_0x53fa20['nameField']&&!_0x53fa20[_0x46c4('0x3f')]){_0x1b2640[_0x53fa20[_0x46c4('0x40')][_0x46c4('0x41')]()]=_0x53fa20[_0x46c4('0x42')][_0x46c4('0x34')]();}else if(_[_0x46c4('0x43')]([_0x46c4('0x3c'),_0x46c4('0x3d')],_0x53fa20[_0x46c4('0x3e')])&&_0x53fa20[_0x46c4('0x44')]&&_0x53fa20[_0x46c4('0x3f')]){_0x1b2640[_0x46c4('0x45')][_0x46c4('0x46')]({'id':_0x53fa20[_0x46c4('0x44')],'value':_0x53fa20['content'][_0x46c4('0x34')]()});}else if(_0x53fa20['type']===_0x46c4('0x47')&&_0x53fa20['variableName']&&_0x53fa20['idField']&&_0x53fa20['customField']){_0x50f896[_0x53fa20['variableName']]&&_0x1b2640[_0x46c4('0x45')][_0x46c4('0x46')]({'id':_0x53fa20['idField'],'value':_0x50f896[_0x53fa20['variableName']][_0x46c4('0x34')]()});}else if(_0x53fa20[_0x46c4('0x3e')]==='customVariable'&&_0x53fa20[_0x46c4('0x48')]&&_0x53fa20[_0x46c4('0x48')]['name']&&_0x53fa20[_0x46c4('0x44')]&&_0x53fa20[_0x46c4('0x3f')]){_0x50f896[_0x53fa20[_0x46c4('0x48')][_0x46c4('0xf')]['toLowerCase']()]&&_0x1b2640[_0x46c4('0x45')][_0x46c4('0x46')]({'id':_0x53fa20[_0x46c4('0x44')],'value':_0x50f896[_0x53fa20['Variable'][_0x46c4('0xf')][_0x46c4('0x41')]()]['toString']()});}});}return _0x1b2640;}exports[_0x46c4('0x49')]=function(_0x5b4f52,_0x5dcbc0,_0x16a769,_0x8fa191,_0xe3982e,_0x243e0c){var _0x5d7e24,_0x4fbcdf;_0x243e0c[_0x46c4('0xc')]=intUtil[_0x46c4('0x4a')](_0x243e0c[_0x46c4('0xc')]);_0x243e0c[_0x46c4('0x4b')]=intUtil['stripTrailingSlash'](_0x243e0c['serverUrl']);if(_0xe3982e&&_0xe3982e[_0x46c4('0x4c')]){logger[_0x46c4('0x9')](_0x46c4('0x4d'),_0x46c4('0x4e'));_0x5dcbc0['recordingURL']=util[_0x46c4('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x243e0c[_0x46c4('0x4b')],_0x5dcbc0['uniqueid'],md5(_0x5dcbc0['uniqueid']));}else{_0x5dcbc0[_0x46c4('0x4f')]='';}headers[_0x46c4('0x50')]=getAuth(_0x243e0c);return getUser(_0x243e0c,_0x8fa191[_0x46c4('0x51')])['then'](function(_0x25cdde){_0x5d7e24=_0x25cdde;logger[_0x46c4('0x9')](_0x46c4('0x52'),_0x5d7e24['id']);return getEndUser(_0x243e0c,_0x5dcbc0[_0x46c4('0x53')],_0x5dcbc0[_0x46c4('0x54')]);})[_0x46c4('0x14')](function(_0x243c7c){_0x4fbcdf=_0x243c7c;logger[_0x46c4('0x9')](_0x46c4('0x55'),_0x4fbcdf['id']);return getTicket(_0x243e0c,_0x5d7e24,_0x4fbcdf,_0x16a769,_0x5dcbc0);})['then'](function(_0x48cc2d){if(_0x48cc2d){logger[_0x46c4('0x9')]('The\x20Ticket\x20ID\x20is:',_0x48cc2d['id']);switch(_0x243e0c['type']){case _0x46c4('0x56'):logger['info'](_0x46c4('0x4d'),_0x46c4('0x57'));return request({'uri':util[_0x46c4('0xb')](_0x46c4('0x58'),_0x243e0c['remoteUri'],_0x5d7e24['id'],_0x48cc2d['id']),'method':'POST'});case _0x46c4('0x59'):logger[_0x46c4('0x9')](_0x46c4('0x4d'),_0x46c4('0x5a'));emit(util[_0x46c4('0xb')](_0x46c4('0x5b'),_0x8fa191[_0x46c4('0xf')]),_0x46c4('0x5c'),{'uri':util[_0x46c4('0xb')](_0x46c4('0x5d'),_0x243e0c[_0x46c4('0xc')][_0x46c4('0x5e')](_0x46c4('0x5f'),''),_0x48cc2d['id'])});break;default:logger[_0x46c4('0x60')](_0x46c4('0x4d'),_0x46c4('0x61'));}}})['catch'](function(_0x548d47){logger[_0x46c4('0x60')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x46c4('0x62')](_0x548d47,{'showHidden':!![],'depth':null}));});};exports[_0x46c4('0x63')]=function(_0x468bbb,_0x2d22b9,_0x32c6e2,_0x4f6b5b,_0x18bb93,_0x2f9e87,_0xbeb6ab){var _0x1e2ba8,_0x36315d;_0x2f9e87['remoteUri']=intUtil['stripTrailingSlash'](_0x2f9e87[_0x46c4('0xc')]);_0x2f9e87['serverUrl']=intUtil[_0x46c4('0x4a')](_0x2f9e87[_0x46c4('0x4b')]);if(_0xbeb6ab&&_0xbeb6ab['recordingFormat']&&_0xbeb6ab['recordingFormat']!=='none'){logger['info'](_0x46c4('0x64'),_0x46c4('0x4e'));_0x2d22b9[_0x46c4('0x4f')]=util[_0x46c4('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2f9e87['serverUrl'],_0x2d22b9[_0x46c4('0x65')],md5(_0x2d22b9[_0x46c4('0x65')]));}headers[_0x46c4('0x50')]=getAuth(_0x2f9e87);return getUser(_0x2f9e87,_0x4f6b5b[_0x46c4('0x51')])[_0x46c4('0x14')](function(_0x2b24d5){_0x1e2ba8=_0x2b24d5;logger['info'](_0x46c4('0x52'),_0x1e2ba8['id']);return getEndUser(_0x2f9e87,_0x2d22b9[_0x46c4('0x66')],_0x2d22b9[_0x46c4('0x67')]);})[_0x46c4('0x14')](function(_0x4f38f7){_0x36315d=_0x4f38f7;logger[_0x46c4('0x9')](_0x46c4('0x55'),_0x36315d['id']);return getTicket(_0x2f9e87,_0x1e2ba8,_0x36315d,_0x32c6e2,_0x2d22b9);})['then'](function(_0x54d481){if(_0x54d481){logger[_0x46c4('0x9')]('The\x20Ticket\x20ID\x20is:',_0x54d481['id']);switch(_0x2f9e87['type']){case _0x46c4('0x56'):logger[_0x46c4('0x9')](_0x46c4('0x64'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x46c4('0xb')](_0x46c4('0x58'),_0x2f9e87[_0x46c4('0xc')],_0x1e2ba8['id'],_0x54d481['id']),'method':_0x46c4('0x29')});case'newTab':logger[_0x46c4('0x9')]('[OUTBOUND]',_0x46c4('0x5a'));emit(util[_0x46c4('0xb')](_0x46c4('0x5b'),_0x4f6b5b[_0x46c4('0xf')]),'trigger:browser:url',{'uri':util[_0x46c4('0xb')](_0x46c4('0x5d'),_0x2f9e87[_0x46c4('0xc')][_0x46c4('0x5e')](_0x46c4('0x5f'),''),_0x54d481['id'])});break;default:logger[_0x46c4('0x60')](_0x46c4('0x64'),_0x46c4('0x61'));}}})['catch'](function(_0x317ce5){logger[_0x46c4('0x60')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x46c4('0x62')](_0x317ce5,{'showHidden':!![],'depth':null}));});};exports[_0x46c4('0x68')]=function(_0x4b6964,_0x5c6edc,_0x2d8dc9,_0x26e7aa,_0x54db3f,_0x468fc8){var _0x4448f7,_0x252795;_0x468fc8[_0x46c4('0xc')]=intUtil[_0x46c4('0x4a')](_0x468fc8[_0x46c4('0xc')]);_0x468fc8[_0x46c4('0x4b')]=intUtil['stripTrailingSlash'](_0x468fc8[_0x46c4('0x4b')]);if(_0x54db3f&&_0x54db3f[_0x46c4('0x4c')]){logger[_0x46c4('0x9')]('['+_0x5c6edc['lastevent'][_0x46c4('0x69')]()+']',_0x46c4('0x4e'));_0x5c6edc[_0x46c4('0x4f')]=util[_0x46c4('0xb')](_0x46c4('0x6a'),_0x468fc8[_0x46c4('0x4b')],_0x5c6edc[_0x46c4('0x65')],md5(_0x5c6edc[_0x46c4('0x65')]));}else{_0x5c6edc[_0x46c4('0x4f')]='';}headers['Authorization']=getAuth(_0x468fc8);return getUser(_0x468fc8)['then'](function(_0x4553d2){_0x4448f7=_0x4553d2;logger[_0x46c4('0x9')](_0x46c4('0x52'),_0x4448f7['id']);return getEndUser(_0x468fc8,_0x5c6edc[_0x46c4('0x53')],_0x5c6edc['calleridnum']);})[_0x46c4('0x14')](function(_0x3a7f61){_0x252795=_0x3a7f61;logger['info'](_0x46c4('0x55'),_0x252795['id']);return getTicket(_0x468fc8,_0x4448f7,_0x252795,_0x2d8dc9,_0x5c6edc);})['then'](function(_0x302f9a){if(_0x302f9a){logger[_0x46c4('0x9')](_0x46c4('0x6b'),_0x302f9a['id']);}})[_0x46c4('0x6c')](function(_0x28fbae){logger[_0x46c4('0x60')]('['+_0x5c6edc[_0x46c4('0x6d')]['toUpperCase']()+']'+_0x46c4('0x6e'),util[_0x46c4('0x62')](_0x28fbae,{'showHidden':!![],'depth':null}));});};