Built motion from commit (unavailable).|2.5.4
[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 _0xb903=['stringify','GET','map','forEach','type','string','nameField','customField','toLowerCase','toString','idField','custom_fields','push','content','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','POST','newTab','user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','The\x20Ticket\x20ID\x20is:','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','merge','Tags','name','getString','Descriptions','Fields','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','format','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','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','results','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','password','%s:%s','authType','token','%s/token:%s','Basic\x20%s','debug','[HTTP]'];(function(_0x24618a,_0x2cd0f4){var _0x2e3d64=function(_0x28c59c){while(--_0x28c59c){_0x24618a['push'](_0x24618a['shift']());}};_0x2e3d64(++_0x2cd0f4);}(_0xb903,0x185));var _0x3b90=function(_0x57ca96,_0x553f7b){_0x57ca96=_0x57ca96-0x0;var _0x45ef70=_0xb903[_0x57ca96];return _0x45ef70;};'use strict';var _=require(_0x3b90('0x0'));var rp=require(_0x3b90('0x1'));var md5=require(_0x3b90('0x2'));var util=require(_0x3b90('0x3'));var Redis=require('ioredis');var intUtil=require(_0x3b90('0x4'));var config=require(_0x3b90('0x5'));var logger=require(_0x3b90('0x6'))(_0x3b90('0x7'));config[_0x3b90('0x8')]=_[_0x3b90('0x9')](config[_0x3b90('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x3b90('0xa'))(new Redis(config['redis']));function emit(_0x55792c,_0x153283,_0x2e4c06){io['to'](_0x55792c)[_0x3b90('0xb')](_0x153283,_0x2e4c06);}var headers={'Content-Type':_0x3b90('0xc'),'Accept':'application/json'};function getTicket(_0x5cda1d,_0x52401e,_0x51f916,_0x56261b,_0x55db3f){logger[_0x3b90('0xd')](_0x3b90('0xe'));return request({'uri':util['format'](_0x3b90('0xf'),_0x5cda1d[_0x3b90('0x10')]),'method':'POST','body':{'ticket':_[_0x3b90('0x11')]({'requester_id':_0x51f916['id'],'submitter_id':_0x52401e?_0x52401e['id']:undefined,'assignee_id':_0x52401e?_0x52401e['id']:undefined,'tags':getTags(_0x56261b[_0x3b90('0x12')],_0x3b90('0x13')),'subject':intUtil['getString'](_0x56261b['Subjects'],_0x55db3f,'\x20'),'description':intUtil[_0x3b90('0x14')](_0x56261b['Descriptions'],_0x55db3f,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x56261b[_0x3b90('0x15')],_0x55db3f,'\x0a')}},getCustomFields(_0x56261b[_0x3b90('0x16')],_0x55db3f))}})['then'](function(_0x51fb66){logger[_0x3b90('0xd')](_0x3b90('0x17'));return _0x51fb66[_0x3b90('0x18')];});}function getUser(_0x1af265,_0x1efe01){if(intUtil['validateEmail'](_0x1efe01)){logger['info'](_0x3b90('0x19'),_0x1efe01);return request({'uri':util[_0x3b90('0x1a')]('%s/search.json',_0x1af265[_0x3b90('0x10')]),'qs':{'query':util[_0x3b90('0x1a')](_0x3b90('0x1b'),_0x1efe01)}})[_0x3b90('0x1c')](function(_0x4f388b){if(_0x4f388b[_0x3b90('0x1d')]){logger['info'](_0x3b90('0x1e'));return _[_0x3b90('0x1f')](_0x4f388b['results'],{'email':_0x1efe01,'role':_0x3b90('0x20')});}else{logger[_0x3b90('0xd')](_0x3b90('0x21'));return request({'uri':util[_0x3b90('0x1a')](_0x3b90('0x22'),_0x1af265[_0x3b90('0x10')])})[_0x3b90('0x1c')](function(_0x2f4270){logger[_0x3b90('0xd')](_0x3b90('0x23'));return _0x2f4270['user'];});}});}else{logger[_0x3b90('0xd')](_0x3b90('0x21'));return request({'uri':util[_0x3b90('0x1a')](_0x3b90('0x22'),_0x1af265[_0x3b90('0x10')])})[_0x3b90('0x1c')](function(_0x58fa12){logger['info'](_0x3b90('0x23'));return _0x58fa12[_0x3b90('0x24')];});}}function getEndUser(_0x103324,_0x2ffa1a,_0x583523){logger[_0x3b90('0xd')](_0x3b90('0x25'),_0x583523);return request({'uri':util[_0x3b90('0x1a')]('%s/search.json',_0x103324[_0x3b90('0x10')]),'qs':{'query':util[_0x3b90('0x1a')](_0x3b90('0x26'),_0x583523)}})[_0x3b90('0x1c')](function(_0x153d7c){var _0x7adf75;if(_0x153d7c['results'][_0x3b90('0x27')]){_0x153d7c['results']=_[_0x3b90('0x28')](_0x153d7c[_0x3b90('0x29')],{'suspended':![],'role':_0x3b90('0x2a')});if(_0x153d7c[_0x3b90('0x29')][_0x3b90('0x27')]){_0x7adf75=_[_0x3b90('0x2b')](_0x153d7c[_0x3b90('0x29')]);}}if(_0x7adf75){logger[_0x3b90('0xd')]('Enduser\x20found!');return _0x7adf75;}else{logger['info'](_0x3b90('0x2c'));return request({'uri':util[_0x3b90('0x1a')](_0x3b90('0x2d'),_0x103324[_0x3b90('0x10')]),'method':'POST','body':{'user':{'role':'end-user','name':util[_0x3b90('0x1a')](_0x3b90('0x2e'),_0x2ffa1a||_0x583523),'phone':_0x583523}}})[_0x3b90('0x1c')](function(_0x4f3ab5){logger[_0x3b90('0xd')]('Enduser\x20created.');return _0x4f3ab5['user'];});}});}function getAuth(_0x208f3e){var _0x3fbc03;if(_0x208f3e['authType']===_0x3b90('0x2f')){_0x3fbc03=util[_0x3b90('0x1a')](_0x3b90('0x30'),_0x208f3e['username'],_0x208f3e['password']);}else if(_0x208f3e[_0x3b90('0x31')]===_0x3b90('0x32')){_0x3fbc03=util[_0x3b90('0x1a')](_0x3b90('0x33'),_0x208f3e['username'],_0x208f3e['token']);}return util[_0x3b90('0x1a')](_0x3b90('0x34'),new Buffer(_0x3fbc03)['toString']('base64'));}function request(_0x201712){logger[_0x3b90('0x35')](_0x3b90('0x36'),JSON[_0x3b90('0x37')](_0x201712));return rp(_['defaults'](_0x201712,{'method':_0x3b90('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x583842,_0x19533a){var _0x43bae5=[];if(_0x583842&&_0x583842[_0x3b90('0x27')]>0x0){_0x43bae5=_[_0x3b90('0x39')](_0x583842,_0x19533a);}return _0x43bae5;}function getCustomFields(_0x2cbae8,_0x3bf148){var _0x96f7f3=[];var _0x534bea={'custom_fields':[]};if(_0x2cbae8[_0x3b90('0x27')]>0x0){_[_0x3b90('0x3a')](_0x2cbae8,function(_0x2fd30c){if(_0x2fd30c[_0x3b90('0x3b')]===_0x3b90('0x3c')&&_0x2fd30c[_0x3b90('0x3d')]&&!_0x2fd30c[_0x3b90('0x3e')]){_0x534bea[_0x2fd30c[_0x3b90('0x3d')][_0x3b90('0x3f')]()]=_0x2fd30c['content'][_0x3b90('0x40')]();}else if(_0x2fd30c[_0x3b90('0x3b')]===_0x3b90('0x3c')&&_0x2fd30c[_0x3b90('0x41')]&&_0x2fd30c[_0x3b90('0x3e')]){_0x534bea[_0x3b90('0x42')][_0x3b90('0x43')]({'id':_0x2fd30c[_0x3b90('0x41')],'value':_0x2fd30c[_0x3b90('0x44')][_0x3b90('0x40')]()});}else if(_0x2fd30c[_0x3b90('0x3b')]===_0x3b90('0x45')&&_0x2fd30c[_0x3b90('0x46')]&&_0x2fd30c[_0x3b90('0x41')]&&_0x2fd30c[_0x3b90('0x3e')]){_0x3bf148[_0x2fd30c[_0x3b90('0x46')]]&&_0x534bea[_0x3b90('0x42')][_0x3b90('0x43')]({'id':_0x2fd30c[_0x3b90('0x41')],'value':_0x3bf148[_0x2fd30c[_0x3b90('0x46')]][_0x3b90('0x40')]()});}else if(_0x2fd30c['type']===_0x3b90('0x47')&&_0x2fd30c[_0x3b90('0x48')]&&_0x2fd30c[_0x3b90('0x48')][_0x3b90('0x13')]&&_0x2fd30c['idField']&&_0x2fd30c[_0x3b90('0x3e')]){_0x3bf148[_0x2fd30c['Variable']['name'][_0x3b90('0x3f')]()]&&_0x534bea[_0x3b90('0x42')]['push']({'id':_0x2fd30c[_0x3b90('0x41')],'value':_0x3bf148[_0x2fd30c[_0x3b90('0x48')][_0x3b90('0x13')][_0x3b90('0x3f')]()][_0x3b90('0x40')]()});}});}return _0x534bea;}exports[_0x3b90('0x49')]=function(_0x28a344,_0x443eec,_0x28882e,_0x59b693,_0x3f71b0,_0x2e8a90){var _0x4df41c,_0x1e9a21;_0x2e8a90[_0x3b90('0x10')]=intUtil[_0x3b90('0x4a')](_0x2e8a90[_0x3b90('0x10')]);_0x2e8a90[_0x3b90('0x4b')]=intUtil['stripTrailingSlash'](_0x2e8a90['serverUrl']);if(_0x3f71b0&&_0x3f71b0[_0x3b90('0x4c')]){logger['info'](_0x3b90('0x4d'),_0x3b90('0x4e'));_0x443eec[_0x3b90('0x4f')]=util[_0x3b90('0x1a')](_0x3b90('0x50'),_0x2e8a90['serverUrl'],_0x443eec['uniqueid'],md5(_0x443eec[_0x3b90('0x51')]));}else{_0x443eec[_0x3b90('0x4f')]='';}headers[_0x3b90('0x52')]=getAuth(_0x2e8a90);return getUser(_0x2e8a90,_0x59b693['email'])[_0x3b90('0x1c')](function(_0x291279){_0x4df41c=_0x291279;logger[_0x3b90('0xd')](_0x3b90('0x53'),_0x4df41c['id']);return getEndUser(_0x2e8a90,_0x443eec[_0x3b90('0x54')],_0x443eec[_0x3b90('0x55')]);})[_0x3b90('0x1c')](function(_0x13b364){_0x1e9a21=_0x13b364;logger[_0x3b90('0xd')]('The\x20Enduser\x20ID\x20is:',_0x1e9a21['id']);return getTicket(_0x2e8a90,_0x4df41c,_0x1e9a21,_0x28882e,_0x443eec);})[_0x3b90('0x1c')](function(_0x407784){if(_0x407784){logger[_0x3b90('0xd')]('The\x20Ticket\x20ID\x20is:',_0x407784['id']);switch(_0x2e8a90[_0x3b90('0x3b')]){case'integrationTab':logger[_0x3b90('0xd')](_0x3b90('0x4d'),_0x3b90('0x56'));return request({'uri':util['format'](_0x3b90('0x57'),_0x2e8a90[_0x3b90('0x10')],_0x4df41c['id'],_0x407784['id']),'method':'POST'});case'newTab':logger[_0x3b90('0xd')](_0x3b90('0x4d'),_0x3b90('0x58'));emit(util[_0x3b90('0x1a')]('user:%s',_0x59b693['name']),_0x3b90('0x59'),{'uri':util[_0x3b90('0x1a')](_0x3b90('0x5a'),_0x2e8a90[_0x3b90('0x10')],_0x407784['id'])});break;default:logger[_0x3b90('0x5b')](_0x3b90('0x4d'),_0x3b90('0x5c'));}}})[_0x3b90('0x5d')](function(_0x30f446){logger['error'](_0x3b90('0x5e'),util[_0x3b90('0x5f')](_0x30f446,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x1d211a,_0x26b15f,_0x4d512e,_0x3677d1,_0x16c30f,_0x115232,_0x1bada9){var _0x451fae,_0x2b3cd5;_0x115232[_0x3b90('0x10')]=intUtil['stripTrailingSlash'](_0x115232[_0x3b90('0x10')]);_0x115232[_0x3b90('0x4b')]=intUtil[_0x3b90('0x4a')](_0x115232[_0x3b90('0x4b')]);if(_0x1bada9&&_0x1bada9[_0x3b90('0x60')]&&_0x1bada9[_0x3b90('0x60')]!==_0x3b90('0x61')){logger[_0x3b90('0xd')](_0x3b90('0x62'),_0x3b90('0x4e'));_0x26b15f[_0x3b90('0x4f')]=util[_0x3b90('0x1a')](_0x3b90('0x50'),_0x115232[_0x3b90('0x4b')],_0x26b15f[_0x3b90('0x51')],md5(_0x26b15f['uniqueid']));}headers[_0x3b90('0x52')]=getAuth(_0x115232);return getUser(_0x115232,_0x3677d1['email'])[_0x3b90('0x1c')](function(_0x290550){_0x451fae=_0x290550;logger[_0x3b90('0xd')](_0x3b90('0x53'),_0x451fae['id']);return getEndUser(_0x115232,_0x26b15f[_0x3b90('0x63')],_0x26b15f[_0x3b90('0x64')]);})['then'](function(_0x35af6e){_0x2b3cd5=_0x35af6e;logger[_0x3b90('0xd')](_0x3b90('0x65'),_0x2b3cd5['id']);return getTicket(_0x115232,_0x451fae,_0x2b3cd5,_0x4d512e,_0x26b15f);})[_0x3b90('0x1c')](function(_0x3d41c8){if(_0x3d41c8){logger[_0x3b90('0xd')]('The\x20Ticket\x20ID\x20is:',_0x3d41c8['id']);switch(_0x115232[_0x3b90('0x3b')]){case _0x3b90('0x66'):logger[_0x3b90('0xd')]('[OUTBOUND]',_0x3b90('0x56'));return request({'uri':util[_0x3b90('0x1a')](_0x3b90('0x57'),_0x115232[_0x3b90('0x10')],_0x451fae['id'],_0x3d41c8['id']),'method':_0x3b90('0x67')});case _0x3b90('0x68'):logger[_0x3b90('0xd')](_0x3b90('0x62'),_0x3b90('0x58'));emit(util['format'](_0x3b90('0x69'),_0x3677d1['name']),'trigger:browser:url',{'uri':util[_0x3b90('0x1a')](_0x3b90('0x5a'),_0x115232['remoteUri'],_0x3d41c8['id'])});break;default:logger[_0x3b90('0x5b')](_0x3b90('0x62'),_0x3b90('0x5c'));}}})[_0x3b90('0x5d')](function(_0x39133d){logger[_0x3b90('0x5b')](_0x3b90('0x6a'),util['inspect'](_0x39133d,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x3e5532,_0x5e5efa,_0x2bdd3d,_0x5ad9d6,_0x1a6d33,_0x5e44ae){var _0x532e98,_0x5d00b6;_0x5e44ae[_0x3b90('0x10')]=intUtil[_0x3b90('0x4a')](_0x5e44ae[_0x3b90('0x10')]);_0x5e44ae[_0x3b90('0x4b')]=intUtil[_0x3b90('0x4a')](_0x5e44ae[_0x3b90('0x4b')]);if(_0x1a6d33&&_0x1a6d33[_0x3b90('0x4c')]){logger['info']('['+_0x5e5efa['lastevent']['toUpperCase']()+']',_0x3b90('0x4e'));_0x5e5efa[_0x3b90('0x4f')]=util['format'](_0x3b90('0x50'),_0x5e44ae[_0x3b90('0x4b')],_0x5e5efa[_0x3b90('0x51')],md5(_0x5e5efa[_0x3b90('0x51')]));}else{_0x5e5efa[_0x3b90('0x4f')]='';}headers[_0x3b90('0x52')]=getAuth(_0x5e44ae);return getUser(_0x5e44ae)[_0x3b90('0x1c')](function(_0x89933c){_0x532e98=_0x89933c;logger[_0x3b90('0xd')]('The\x20User\x20ID\x20is:',_0x532e98['id']);return getEndUser(_0x5e44ae,_0x5e5efa[_0x3b90('0x54')],_0x5e5efa['calleridnum']);})[_0x3b90('0x1c')](function(_0x2ddd93){_0x5d00b6=_0x2ddd93;logger['info']('The\x20Enduser\x20ID\x20is:',_0x5d00b6['id']);return getTicket(_0x5e44ae,_0x532e98,_0x5d00b6,_0x2bdd3d,_0x5e5efa);})[_0x3b90('0x1c')](function(_0x4337f0){if(_0x4337f0){logger[_0x3b90('0xd')](_0x3b90('0x6b'),_0x4337f0['id']);}})[_0x3b90('0x5d')](function(_0x42e14f){logger['error']('['+_0x5e5efa[_0x3b90('0x6c')][_0x3b90('0x6d')]()+']'+_0x3b90('0x6e'),util['inspect'](_0x42e14f,{'showHidden':!![],'depth':null}));});};