Built motion from commit dbf3a7e2.|2.6.30
[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 _0xbfd6=['string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','push','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','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','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','email','destcalleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','socket.io-emitter','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','Tags','name','getString','Subjects','Descriptions','then','info','Ticket\x20created!','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','%s/users/me.json','remoteUri','Admin\x20account\x20selected.','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Caller\x20-\x20%s','Enduser\x20created.','authType','password','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','map','forEach','includes'];(function(_0x476e4c,_0x166c72){var _0x5ea720=function(_0x5b3b82){while(--_0x5b3b82){_0x476e4c['push'](_0x476e4c['shift']());}};_0x5ea720(++_0x166c72);}(_0xbfd6,0x186));var _0x6bfd=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xbfd6[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x6bfd('0x0'));var rp=require('request-promise');var md5=require(_0x6bfd('0x1'));var util=require('util');var Redis=require(_0x6bfd('0x2'));var intUtil=require(_0x6bfd('0x3'));var config=require(_0x6bfd('0x4'));var logger=require(_0x6bfd('0x5'))(_0x6bfd('0x6'));config[_0x6bfd('0x7')]=_[_0x6bfd('0x8')](config[_0x6bfd('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x6bfd('0x9'))(new Redis(config['redis']));function emit(_0x14241b,_0x21dc32,_0x53b5ad){io['to'](_0x14241b)['emit'](_0x21dc32,_0x53b5ad);}var headers={'Content-Type':_0x6bfd('0xa'),'Accept':_0x6bfd('0xa')};function getTicket(_0x72f0d6,_0x13cd22,_0x2791cb,_0x5505a8,_0x479bdc){logger['info'](_0x6bfd('0xb'));return request({'uri':util[_0x6bfd('0xc')](_0x6bfd('0xd'),_0x72f0d6['remoteUri']),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x2791cb['id'],'submitter_id':_0x13cd22?_0x13cd22['id']:undefined,'assignee_id':_0x13cd22?_0x13cd22['id']:undefined,'tags':getTags(_0x5505a8[_0x6bfd('0xe')],_0x6bfd('0xf')),'subject':intUtil[_0x6bfd('0x10')](_0x5505a8[_0x6bfd('0x11')],_0x479bdc,'\x20'),'description':intUtil[_0x6bfd('0x10')](_0x5505a8[_0x6bfd('0x12')],_0x479bdc,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x5505a8[_0x6bfd('0x12')],_0x479bdc,'\x0a')}},getCustomFields(_0x5505a8['Fields'],_0x479bdc))}})[_0x6bfd('0x13')](function(_0x1a3b21){logger[_0x6bfd('0x14')](_0x6bfd('0x15'));return _0x1a3b21['ticket'];});}function getUser(_0x5b41a0,_0x20146c){if(intUtil['validateEmail'](_0x20146c)){logger[_0x6bfd('0x14')](_0x6bfd('0x16'),_0x20146c);return request({'uri':util[_0x6bfd('0xc')](_0x6bfd('0x17'),_0x5b41a0['remoteUri']),'qs':{'query':util['format'](_0x6bfd('0x18'),_0x20146c)}})[_0x6bfd('0x13')](function(_0x163256){if(_0x163256[_0x6bfd('0x19')]){logger['info'](_0x6bfd('0x1a'));return _[_0x6bfd('0x1b')](_0x163256[_0x6bfd('0x1c')],{'email':_0x20146c,'role':'agent'});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x6bfd('0xc')](_0x6bfd('0x1d'),_0x5b41a0[_0x6bfd('0x1e')])})[_0x6bfd('0x13')](function(_0x53e72b){logger[_0x6bfd('0x14')](_0x6bfd('0x1f'));return _0x53e72b['user'];});}});}else{logger[_0x6bfd('0x14')](_0x6bfd('0x20'));return request({'uri':util['format'](_0x6bfd('0x1d'),_0x5b41a0[_0x6bfd('0x1e')])})[_0x6bfd('0x13')](function(_0x2695e1){logger['info'](_0x6bfd('0x1f'));return _0x2695e1[_0x6bfd('0x21')];});}}function getEndUser(_0x3ed2bd,_0x33d51a,_0x1ca309){logger[_0x6bfd('0x14')](_0x6bfd('0x22'),_0x1ca309);return request({'uri':util[_0x6bfd('0xc')](_0x6bfd('0x17'),_0x3ed2bd['remoteUri']),'qs':{'query':util[_0x6bfd('0xc')](_0x6bfd('0x23'),_0x1ca309)}})[_0x6bfd('0x13')](function(_0x5b1093){var _0x5481a5;if(_0x5b1093['results']['length']){_0x5b1093[_0x6bfd('0x1c')]=_[_0x6bfd('0x24')](_0x5b1093[_0x6bfd('0x1c')],{'suspended':![],'role':_0x6bfd('0x25')});if(_0x5b1093[_0x6bfd('0x1c')][_0x6bfd('0x26')]){_0x5481a5=_[_0x6bfd('0x27')](_0x5b1093[_0x6bfd('0x1c')]);}}if(_0x5481a5){logger[_0x6bfd('0x14')](_0x6bfd('0x28'));return _0x5481a5;}else{logger['info'](_0x6bfd('0x29'));return request({'uri':util[_0x6bfd('0xc')](_0x6bfd('0x2a'),_0x3ed2bd['remoteUri']),'method':_0x6bfd('0x2b'),'body':{'user':{'role':_0x6bfd('0x25'),'name':util[_0x6bfd('0xc')](_0x6bfd('0x2c'),_0x33d51a||_0x1ca309),'phone':_0x1ca309}}})[_0x6bfd('0x13')](function(_0x3a2d12){logger[_0x6bfd('0x14')](_0x6bfd('0x2d'));return _0x3a2d12[_0x6bfd('0x21')];});}});}function getAuth(_0x20fe17){var _0x337897;if(_0x20fe17[_0x6bfd('0x2e')]===_0x6bfd('0x2f')){_0x337897=util['format']('%s:%s',_0x20fe17['username'],_0x20fe17[_0x6bfd('0x2f')]);}else if(_0x20fe17[_0x6bfd('0x2e')]===_0x6bfd('0x30')){_0x337897=util[_0x6bfd('0xc')]('%s/token:%s',_0x20fe17['username'],_0x20fe17[_0x6bfd('0x30')]);}return util['format'](_0x6bfd('0x31'),new Buffer(_0x337897)[_0x6bfd('0x32')](_0x6bfd('0x33')));}function request(_0x29a2d8){logger[_0x6bfd('0x34')](_0x6bfd('0x35'),JSON[_0x6bfd('0x36')](_0x29a2d8));return rp(_['defaults'](_0x29a2d8,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x218352,_0x1ca360){var _0x3c38fd=[];if(_0x218352&&_0x218352[_0x6bfd('0x26')]>0x0){_0x3c38fd=_[_0x6bfd('0x37')](_0x218352,_0x1ca360);}return _0x3c38fd;}function getCustomFields(_0x4fb88a,_0x3998ce){var _0x2ad5d2=[];var _0x405b8e={'custom_fields':[]};if(_0x4fb88a['length']>0x0){_[_0x6bfd('0x38')](_0x4fb88a,function(_0x20e565){if(_[_0x6bfd('0x39')]([_0x6bfd('0x3a'),_0x6bfd('0x3b')],_0x20e565[_0x6bfd('0x3c')])&&_0x20e565[_0x6bfd('0x3d')]&&!_0x20e565[_0x6bfd('0x3e')]){_0x405b8e[_0x20e565['nameField'][_0x6bfd('0x3f')]()]=_0x20e565[_0x6bfd('0x40')][_0x6bfd('0x32')]();}else if(_[_0x6bfd('0x39')]([_0x6bfd('0x3a'),_0x6bfd('0x3b')],_0x20e565[_0x6bfd('0x3c')])&&_0x20e565[_0x6bfd('0x41')]&&_0x20e565[_0x6bfd('0x3e')]){_0x405b8e[_0x6bfd('0x42')][_0x6bfd('0x43')]({'id':_0x20e565[_0x6bfd('0x41')],'value':_0x20e565[_0x6bfd('0x40')][_0x6bfd('0x32')]()});}else if(_0x20e565[_0x6bfd('0x3c')]==='variable'&&_0x20e565[_0x6bfd('0x44')]&&_0x20e565['idField']&&_0x20e565['customField']){_0x3998ce[_0x20e565[_0x6bfd('0x44')]]&&_0x405b8e[_0x6bfd('0x42')][_0x6bfd('0x43')]({'id':_0x20e565[_0x6bfd('0x41')],'value':_0x3998ce[_0x20e565[_0x6bfd('0x44')]][_0x6bfd('0x32')]()});}else if(_0x20e565['type']===_0x6bfd('0x45')&&_0x20e565[_0x6bfd('0x46')]&&_0x20e565['Variable'][_0x6bfd('0xf')]&&_0x20e565[_0x6bfd('0x41')]&&_0x20e565[_0x6bfd('0x3e')]){_0x3998ce[_0x20e565[_0x6bfd('0x46')][_0x6bfd('0xf')][_0x6bfd('0x3f')]()]&&_0x405b8e[_0x6bfd('0x42')][_0x6bfd('0x43')]({'id':_0x20e565[_0x6bfd('0x41')],'value':_0x3998ce[_0x20e565[_0x6bfd('0x46')]['name'][_0x6bfd('0x3f')]()][_0x6bfd('0x32')]()});}});}return _0x405b8e;}exports[_0x6bfd('0x47')]=function(_0x2e6632,_0x280bf8,_0x261ef3,_0x46e1ee,_0x3ed7cd,_0x26b42d){var _0x4617d4,_0x3c6fed;_0x26b42d[_0x6bfd('0x1e')]=intUtil[_0x6bfd('0x48')](_0x26b42d[_0x6bfd('0x1e')]);_0x26b42d[_0x6bfd('0x49')]=intUtil[_0x6bfd('0x48')](_0x26b42d[_0x6bfd('0x49')]);if(_0x3ed7cd&&_0x3ed7cd[_0x6bfd('0x4a')]){logger['info'](_0x6bfd('0x4b'),_0x6bfd('0x4c'));_0x280bf8[_0x6bfd('0x4d')]=util[_0x6bfd('0xc')](_0x6bfd('0x4e'),_0x26b42d[_0x6bfd('0x49')],_0x280bf8[_0x6bfd('0x4f')],md5(_0x280bf8['uniqueid']));}else{_0x280bf8[_0x6bfd('0x4d')]='';}headers[_0x6bfd('0x50')]=getAuth(_0x26b42d);return getUser(_0x26b42d,_0x46e1ee['email'])['then'](function(_0x5299f3){_0x4617d4=_0x5299f3;logger[_0x6bfd('0x14')](_0x6bfd('0x51'),_0x4617d4['id']);return getEndUser(_0x26b42d,_0x280bf8[_0x6bfd('0x52')],_0x280bf8[_0x6bfd('0x53')]);})[_0x6bfd('0x13')](function(_0x3f2ea4){_0x3c6fed=_0x3f2ea4;logger[_0x6bfd('0x14')]('The\x20Enduser\x20ID\x20is:',_0x3c6fed['id']);return getTicket(_0x26b42d,_0x4617d4,_0x3c6fed,_0x261ef3,_0x280bf8);})['then'](function(_0x20b3bd){if(_0x20b3bd){logger[_0x6bfd('0x14')]('The\x20Ticket\x20ID\x20is:',_0x20b3bd['id']);switch(_0x26b42d[_0x6bfd('0x3c')]){case _0x6bfd('0x54'):logger[_0x6bfd('0x14')](_0x6bfd('0x4b'),_0x6bfd('0x55'));return request({'uri':util['format'](_0x6bfd('0x56'),_0x26b42d[_0x6bfd('0x1e')],_0x4617d4['id'],_0x20b3bd['id']),'method':_0x6bfd('0x2b')});case _0x6bfd('0x57'):logger[_0x6bfd('0x14')](_0x6bfd('0x4b'),_0x6bfd('0x58'));emit(util[_0x6bfd('0xc')]('user:%s',_0x46e1ee[_0x6bfd('0xf')]),_0x6bfd('0x59'),{'uri':util['format'](_0x6bfd('0x5a'),_0x26b42d['remoteUri'][_0x6bfd('0x5b')](_0x6bfd('0x5c'),''),_0x20b3bd['id'])});break;default:logger[_0x6bfd('0x5d')](_0x6bfd('0x4b'),_0x6bfd('0x5e'));}}})[_0x6bfd('0x5f')](function(_0x2eec67){logger[_0x6bfd('0x5d')](_0x6bfd('0x60'),util[_0x6bfd('0x61')](_0x2eec67,{'showHidden':!![],'depth':null}));});};exports[_0x6bfd('0x62')]=function(_0x280893,_0x8e4e37,_0x62722d,_0x388b8f,_0x523d06,_0x59162a,_0x55ada4){var _0x278210,_0x3188c3;_0x59162a[_0x6bfd('0x1e')]=intUtil[_0x6bfd('0x48')](_0x59162a[_0x6bfd('0x1e')]);_0x59162a[_0x6bfd('0x49')]=intUtil['stripTrailingSlash'](_0x59162a[_0x6bfd('0x49')]);if(_0x55ada4&&_0x55ada4[_0x6bfd('0x63')]&&_0x55ada4[_0x6bfd('0x63')]!==_0x6bfd('0x64')){logger[_0x6bfd('0x14')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x8e4e37[_0x6bfd('0x4d')]=util[_0x6bfd('0xc')](_0x6bfd('0x4e'),_0x59162a[_0x6bfd('0x49')],_0x8e4e37[_0x6bfd('0x4f')],md5(_0x8e4e37['uniqueid']));}headers['Authorization']=getAuth(_0x59162a);return getUser(_0x59162a,_0x388b8f[_0x6bfd('0x65')])[_0x6bfd('0x13')](function(_0x82998f){_0x278210=_0x82998f;logger[_0x6bfd('0x14')]('The\x20User\x20ID\x20is:',_0x278210['id']);return getEndUser(_0x59162a,_0x8e4e37[_0x6bfd('0x66')],_0x8e4e37['destcalleridnum']);})[_0x6bfd('0x13')](function(_0x27ea7d){_0x3188c3=_0x27ea7d;logger[_0x6bfd('0x14')](_0x6bfd('0x67'),_0x3188c3['id']);return getTicket(_0x59162a,_0x278210,_0x3188c3,_0x62722d,_0x8e4e37);})[_0x6bfd('0x13')](function(_0xa3148a){if(_0xa3148a){logger[_0x6bfd('0x14')](_0x6bfd('0x68'),_0xa3148a['id']);switch(_0x59162a[_0x6bfd('0x3c')]){case _0x6bfd('0x54'):logger[_0x6bfd('0x14')]('[OUTBOUND]',_0x6bfd('0x55'));return request({'uri':util[_0x6bfd('0xc')](_0x6bfd('0x56'),_0x59162a[_0x6bfd('0x1e')],_0x278210['id'],_0xa3148a['id']),'method':_0x6bfd('0x2b')});case'newTab':logger[_0x6bfd('0x14')](_0x6bfd('0x69'),_0x6bfd('0x58'));emit(util['format'](_0x6bfd('0x6a'),_0x388b8f[_0x6bfd('0xf')]),_0x6bfd('0x59'),{'uri':util[_0x6bfd('0xc')](_0x6bfd('0x5a'),_0x59162a['remoteUri'][_0x6bfd('0x5b')](_0x6bfd('0x5c'),''),_0xa3148a['id'])});break;default:logger[_0x6bfd('0x5d')](_0x6bfd('0x69'),_0x6bfd('0x5e'));}}})[_0x6bfd('0x5f')](function(_0x17892d){logger[_0x6bfd('0x5d')](_0x6bfd('0x6b'),util[_0x6bfd('0x61')](_0x17892d,{'showHidden':!![],'depth':null}));});};exports[_0x6bfd('0x6c')]=function(_0x818f12,_0x35edfd,_0x13d6f1,_0x4b5d83,_0x33ea9c,_0x2a9d8c){var _0x4bdcc8,_0x41d1f9;_0x2a9d8c[_0x6bfd('0x1e')]=intUtil[_0x6bfd('0x48')](_0x2a9d8c[_0x6bfd('0x1e')]);_0x2a9d8c[_0x6bfd('0x49')]=intUtil['stripTrailingSlash'](_0x2a9d8c[_0x6bfd('0x49')]);if(_0x33ea9c&&_0x33ea9c[_0x6bfd('0x4a')]){logger[_0x6bfd('0x14')]('['+_0x35edfd[_0x6bfd('0x6d')][_0x6bfd('0x6e')]()+']',_0x6bfd('0x4c'));_0x35edfd[_0x6bfd('0x4d')]=util['format'](_0x6bfd('0x4e'),_0x2a9d8c[_0x6bfd('0x49')],_0x35edfd[_0x6bfd('0x4f')],md5(_0x35edfd[_0x6bfd('0x4f')]));}else{_0x35edfd[_0x6bfd('0x4d')]='';}headers[_0x6bfd('0x50')]=getAuth(_0x2a9d8c);return getUser(_0x2a9d8c)[_0x6bfd('0x13')](function(_0x1e79d5){_0x4bdcc8=_0x1e79d5;logger[_0x6bfd('0x14')]('The\x20User\x20ID\x20is:',_0x4bdcc8['id']);return getEndUser(_0x2a9d8c,_0x35edfd['calleridname'],_0x35edfd[_0x6bfd('0x53')]);})[_0x6bfd('0x13')](function(_0x1598f8){_0x41d1f9=_0x1598f8;logger[_0x6bfd('0x14')](_0x6bfd('0x67'),_0x41d1f9['id']);return getTicket(_0x2a9d8c,_0x4bdcc8,_0x41d1f9,_0x13d6f1,_0x35edfd);})[_0x6bfd('0x13')](function(_0x25e393){if(_0x25e393){logger[_0x6bfd('0x14')]('The\x20Ticket\x20ID\x20is:',_0x25e393['id']);}})[_0x6bfd('0x5f')](function(_0x569847){logger[_0x6bfd('0x5d')]('['+_0x35edfd[_0x6bfd('0x6d')][_0x6bfd('0x6e')]()+']'+_0x6bfd('0x6f'),util[_0x6bfd('0x61')](_0x569847,{'showHidden':!![],'depth':null}));});};