0d885dc747a36ff11baa3bb7ad601bd3eb27dafe
[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 _0xcb6a=['merge','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','token','%s/token:%s','username','Basic\x20%s','toString','base64','[HTTP]','stringify','GET','map','forEach','nameField','toLowerCase','content','type','string','idField','customField','custom_fields','variable','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\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','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','calleridnum','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST'];(function(_0x30eefa,_0x31c8e3){var _0x33d130=function(_0x4edf14){while(--_0x4edf14){_0x30eefa['push'](_0x30eefa['shift']());}};_0x33d130(++_0x31c8e3);}(_0xcb6a,0x1b1));var _0xacb6=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0xcb6a[_0x47a349];return _0x18ab75;};'use strict';var _=require(_0xacb6('0x0'));var rp=require(_0xacb6('0x1'));var md5=require(_0xacb6('0x2'));var util=require('util');var Redis=require(_0xacb6('0x3'));var intUtil=require(_0xacb6('0x4'));var config=require(_0xacb6('0x5'));var logger=require(_0xacb6('0x6'))(_0xacb6('0x7'));config[_0xacb6('0x8')]=_[_0xacb6('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xacb6('0xa'))(new Redis(config[_0xacb6('0x8')]));function emit(_0x1efe14,_0x2fd79b,_0x45e398){io['to'](_0x1efe14)[_0xacb6('0xb')](_0x2fd79b,_0x45e398);}var headers={'Content-Type':'application/json','Accept':_0xacb6('0xc')};function getTicket(_0x491707,_0x346e6e,_0x189407,_0x218d73,_0x509cbb){logger[_0xacb6('0xd')](_0xacb6('0xe'));return request({'uri':util[_0xacb6('0xf')](_0xacb6('0x10'),_0x491707[_0xacb6('0x11')]),'method':_0xacb6('0x12'),'body':{'ticket':_[_0xacb6('0x13')]({'requester_id':_0x189407['id'],'submitter_id':_0x346e6e?_0x346e6e['id']:undefined,'assignee_id':_0x346e6e?_0x346e6e['id']:undefined,'tags':getTags(_0x218d73['Tags'],_0xacb6('0x14')),'subject':intUtil[_0xacb6('0x15')](_0x218d73[_0xacb6('0x16')],_0x509cbb,'\x20'),'description':intUtil[_0xacb6('0x15')](_0x218d73[_0xacb6('0x17')],_0x509cbb,'\x0a'),'comment':{'public':![],'body':intUtil[_0xacb6('0x15')](_0x218d73[_0xacb6('0x17')],_0x509cbb,'\x0a')}},getCustomFields(_0x218d73['Fields'],_0x509cbb))}})[_0xacb6('0x18')](function(_0x1164f5){logger[_0xacb6('0xd')](_0xacb6('0x19'));return _0x1164f5[_0xacb6('0x1a')];});}function getUser(_0x213ec4,_0x4702da){if(intUtil[_0xacb6('0x1b')](_0x4702da)){logger['info'](_0xacb6('0x1c'),_0x4702da);return request({'uri':util[_0xacb6('0xf')](_0xacb6('0x1d'),_0x213ec4[_0xacb6('0x11')]),'qs':{'query':util['format'](_0xacb6('0x1e'),_0x4702da)}})[_0xacb6('0x18')](function(_0x6c5332){if(_0x6c5332[_0xacb6('0x1f')]){logger['info'](_0xacb6('0x20'));return _['find'](_0x6c5332[_0xacb6('0x21')],{'email':_0x4702da,'role':_0xacb6('0x22')});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xacb6('0x23'),_0x213ec4[_0xacb6('0x11')])})['then'](function(_0x42433d){logger[_0xacb6('0xd')](_0xacb6('0x24'));return _0x42433d[_0xacb6('0x25')];});}});}else{logger[_0xacb6('0xd')](_0xacb6('0x26'));return request({'uri':util['format'](_0xacb6('0x23'),_0x213ec4['remoteUri'])})[_0xacb6('0x18')](function(_0x5585ef){logger['info'](_0xacb6('0x24'));return _0x5585ef[_0xacb6('0x25')];});}}function getEndUser(_0x15fc9,_0x470dba,_0x408be3){logger[_0xacb6('0xd')](_0xacb6('0x27'),_0x408be3);return request({'uri':util['format']('%s/search.json',_0x15fc9['remoteUri']),'qs':{'query':util['format'](_0xacb6('0x28'),_0x408be3)}})[_0xacb6('0x18')](function(_0x4aba66){var _0x352402;if(_0x4aba66[_0xacb6('0x21')][_0xacb6('0x29')]){_0x4aba66[_0xacb6('0x21')]=_[_0xacb6('0x2a')](_0x4aba66[_0xacb6('0x21')],{'suspended':![],'role':'end-user'});if(_0x4aba66[_0xacb6('0x21')][_0xacb6('0x29')]){_0x352402=_[_0xacb6('0x2b')](_0x4aba66[_0xacb6('0x21')]);}}if(_0x352402){logger[_0xacb6('0xd')](_0xacb6('0x2c'));return _0x352402;}else{logger[_0xacb6('0xd')](_0xacb6('0x2d'));return request({'uri':util[_0xacb6('0xf')]('%s/users.json',_0x15fc9[_0xacb6('0x11')]),'method':_0xacb6('0x12'),'body':{'user':{'role':_0xacb6('0x2e'),'name':util['format'](_0xacb6('0x2f'),_0x470dba||_0x408be3),'phone':_0x408be3}}})[_0xacb6('0x18')](function(_0x505c8){logger[_0xacb6('0xd')](_0xacb6('0x30'));return _0x505c8['user'];});}});}function getAuth(_0x513eaa){var _0x38d89b;if(_0x513eaa['authType']==='password'){_0x38d89b=util[_0xacb6('0xf')]('%s:%s',_0x513eaa['username'],_0x513eaa['password']);}else if(_0x513eaa[_0xacb6('0x31')]===_0xacb6('0x32')){_0x38d89b=util[_0xacb6('0xf')](_0xacb6('0x33'),_0x513eaa[_0xacb6('0x34')],_0x513eaa[_0xacb6('0x32')]);}return util[_0xacb6('0xf')](_0xacb6('0x35'),new Buffer(_0x38d89b)[_0xacb6('0x36')](_0xacb6('0x37')));}function request(_0x5153ea){logger['debug'](_0xacb6('0x38'),JSON[_0xacb6('0x39')](_0x5153ea));return rp(_[_0xacb6('0x9')](_0x5153ea,{'method':_0xacb6('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x5e77d9,_0x42de52){var _0x491a8f=[];if(_0x5e77d9&&_0x5e77d9[_0xacb6('0x29')]>0x0){_0x491a8f=_[_0xacb6('0x3b')](_0x5e77d9,_0x42de52);}return _0x491a8f;}function getCustomFields(_0x24be59,_0x3afaa6){var _0x2492eb=[];var _0x4fc2f7={'custom_fields':[]};if(_0x24be59[_0xacb6('0x29')]>0x0){_[_0xacb6('0x3c')](_0x24be59,function(_0x5caafa){if(_0x5caafa['type']==='string'&&_0x5caafa[_0xacb6('0x3d')]&&!_0x5caafa['customField']){_0x4fc2f7[_0x5caafa[_0xacb6('0x3d')][_0xacb6('0x3e')]()]=_0x5caafa[_0xacb6('0x3f')][_0xacb6('0x36')]();}else if(_0x5caafa[_0xacb6('0x40')]===_0xacb6('0x41')&&_0x5caafa[_0xacb6('0x42')]&&_0x5caafa[_0xacb6('0x43')]){_0x4fc2f7[_0xacb6('0x44')]['push']({'id':_0x5caafa['idField'],'value':_0x5caafa['content']['toString']()});}else if(_0x5caafa['type']===_0xacb6('0x45')&&_0x5caafa['variableName']&&_0x5caafa[_0xacb6('0x42')]&&_0x5caafa[_0xacb6('0x43')]){_0x3afaa6[_0x5caafa[_0xacb6('0x46')]]&&_0x4fc2f7[_0xacb6('0x44')][_0xacb6('0x47')]({'id':_0x5caafa['idField'],'value':_0x3afaa6[_0x5caafa[_0xacb6('0x46')]]['toString']()});}else if(_0x5caafa[_0xacb6('0x40')]===_0xacb6('0x48')&&_0x5caafa['Variable']&&_0x5caafa[_0xacb6('0x49')][_0xacb6('0x14')]&&_0x5caafa[_0xacb6('0x42')]&&_0x5caafa['customField']){_0x3afaa6[_0x5caafa[_0xacb6('0x49')][_0xacb6('0x14')]['toLowerCase']()]&&_0x4fc2f7[_0xacb6('0x44')][_0xacb6('0x47')]({'id':_0x5caafa['idField'],'value':_0x3afaa6[_0x5caafa[_0xacb6('0x49')][_0xacb6('0x14')][_0xacb6('0x3e')]()][_0xacb6('0x36')]()});}});}return _0x4fc2f7;}exports[_0xacb6('0x4a')]=function(_0x463431,_0x96058c,_0xc364d4,_0xbc2dca,_0x59a57e,_0x229556){var _0x149b26,_0x30a010;_0x229556['remoteUri']=intUtil[_0xacb6('0x4b')](_0x229556[_0xacb6('0x11')]);_0x229556['serverUrl']=intUtil[_0xacb6('0x4b')](_0x229556[_0xacb6('0x4c')]);if(_0x59a57e&&_0x59a57e[_0xacb6('0x4d')]){logger['info'](_0xacb6('0x4e'),_0xacb6('0x4f'));_0x96058c['recordingURL']=util[_0xacb6('0xf')](_0xacb6('0x50'),_0x229556['serverUrl'],_0x96058c[_0xacb6('0x51')],md5(_0x96058c[_0xacb6('0x51')]));}else{_0x96058c[_0xacb6('0x52')]='';}headers[_0xacb6('0x53')]=getAuth(_0x229556);return getUser(_0x229556,_0xbc2dca[_0xacb6('0x54')])[_0xacb6('0x18')](function(_0x5d0d0f){_0x149b26=_0x5d0d0f;logger[_0xacb6('0xd')]('The\x20User\x20ID\x20is:',_0x149b26['id']);return getEndUser(_0x229556,_0x96058c[_0xacb6('0x55')],_0x96058c['calleridnum']);})[_0xacb6('0x18')](function(_0x3fed27){_0x30a010=_0x3fed27;logger['info'](_0xacb6('0x56'),_0x30a010['id']);return getTicket(_0x229556,_0x149b26,_0x30a010,_0xc364d4,_0x96058c);})['then'](function(_0x1fbcfb){if(_0x1fbcfb){logger[_0xacb6('0xd')](_0xacb6('0x57'),_0x1fbcfb['id']);switch(_0x229556['type']){case _0xacb6('0x58'):logger['info'](_0xacb6('0x4e'),_0xacb6('0x59'));return request({'uri':util[_0xacb6('0xf')](_0xacb6('0x5a'),_0x229556['remoteUri'],_0x149b26['id'],_0x1fbcfb['id']),'method':'POST'});case _0xacb6('0x5b'):logger[_0xacb6('0xd')](_0xacb6('0x4e'),_0xacb6('0x5c'));emit(util[_0xacb6('0xf')](_0xacb6('0x5d'),_0xbc2dca[_0xacb6('0x14')]),_0xacb6('0x5e'),{'uri':util[_0xacb6('0xf')](_0xacb6('0x5f'),_0x229556[_0xacb6('0x11')][_0xacb6('0x60')](_0xacb6('0x61'),''),_0x1fbcfb['id'])});break;default:logger[_0xacb6('0x62')]('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xacb6('0x63')](function(_0x22ddf5){logger[_0xacb6('0x62')](_0xacb6('0x64'),util['inspect'](_0x22ddf5,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x261a72,_0x43677a,_0x395766,_0x9e74f1,_0x5e53bf,_0xe33968,_0x5879c2){var _0xb6fa3e,_0x132462;_0xe33968[_0xacb6('0x11')]=intUtil['stripTrailingSlash'](_0xe33968[_0xacb6('0x11')]);_0xe33968[_0xacb6('0x4c')]=intUtil[_0xacb6('0x4b')](_0xe33968[_0xacb6('0x4c')]);if(_0x5879c2&&_0x5879c2[_0xacb6('0x65')]&&_0x5879c2['recordingFormat']!==_0xacb6('0x66')){logger['info'](_0xacb6('0x67'),_0xacb6('0x4f'));_0x43677a[_0xacb6('0x52')]=util[_0xacb6('0xf')](_0xacb6('0x50'),_0xe33968['serverUrl'],_0x43677a['uniqueid'],md5(_0x43677a[_0xacb6('0x51')]));}headers[_0xacb6('0x53')]=getAuth(_0xe33968);return getUser(_0xe33968,_0x9e74f1['email'])[_0xacb6('0x18')](function(_0x5c8fdf){_0xb6fa3e=_0x5c8fdf;logger[_0xacb6('0xd')](_0xacb6('0x68'),_0xb6fa3e['id']);return getEndUser(_0xe33968,_0x43677a[_0xacb6('0x69')],_0x43677a[_0xacb6('0x6a')]);})[_0xacb6('0x18')](function(_0xcecac4){_0x132462=_0xcecac4;logger[_0xacb6('0xd')](_0xacb6('0x56'),_0x132462['id']);return getTicket(_0xe33968,_0xb6fa3e,_0x132462,_0x395766,_0x43677a);})[_0xacb6('0x18')](function(_0x40d527){if(_0x40d527){logger[_0xacb6('0xd')](_0xacb6('0x57'),_0x40d527['id']);switch(_0xe33968[_0xacb6('0x40')]){case _0xacb6('0x58'):logger[_0xacb6('0xd')](_0xacb6('0x67'),_0xacb6('0x59'));return request({'uri':util['format'](_0xacb6('0x5a'),_0xe33968[_0xacb6('0x11')],_0xb6fa3e['id'],_0x40d527['id']),'method':_0xacb6('0x12')});case'newTab':logger['info'](_0xacb6('0x67'),_0xacb6('0x5c'));emit(util[_0xacb6('0xf')](_0xacb6('0x5d'),_0x9e74f1[_0xacb6('0x14')]),_0xacb6('0x5e'),{'uri':util[_0xacb6('0xf')](_0xacb6('0x5f'),_0xe33968[_0xacb6('0x11')][_0xacb6('0x60')](_0xacb6('0x61'),''),_0x40d527['id'])});break;default:logger[_0xacb6('0x62')]('[OUTBOUND]',_0xacb6('0x6b'));}}})[_0xacb6('0x63')](function(_0x2d2a3f){logger[_0xacb6('0x62')](_0xacb6('0x6c'),util[_0xacb6('0x6d')](_0x2d2a3f,{'showHidden':!![],'depth':null}));});};exports[_0xacb6('0x6e')]=function(_0x5096d3,_0x38956d,_0x16aa5c,_0x1bada0,_0x20c9ec,_0x2fc51e){var _0x452d1a,_0x595172;_0x2fc51e[_0xacb6('0x11')]=intUtil[_0xacb6('0x4b')](_0x2fc51e[_0xacb6('0x11')]);_0x2fc51e[_0xacb6('0x4c')]=intUtil['stripTrailingSlash'](_0x2fc51e['serverUrl']);if(_0x20c9ec&&_0x20c9ec[_0xacb6('0x4d')]){logger[_0xacb6('0xd')]('['+_0x38956d[_0xacb6('0x6f')]['toUpperCase']()+']',_0xacb6('0x4f'));_0x38956d[_0xacb6('0x52')]=util['format'](_0xacb6('0x50'),_0x2fc51e[_0xacb6('0x4c')],_0x38956d['uniqueid'],md5(_0x38956d['uniqueid']));}else{_0x38956d[_0xacb6('0x52')]='';}headers[_0xacb6('0x53')]=getAuth(_0x2fc51e);return getUser(_0x2fc51e)[_0xacb6('0x18')](function(_0x1a70ac){_0x452d1a=_0x1a70ac;logger[_0xacb6('0xd')]('The\x20User\x20ID\x20is:',_0x452d1a['id']);return getEndUser(_0x2fc51e,_0x38956d[_0xacb6('0x55')],_0x38956d[_0xacb6('0x70')]);})['then'](function(_0x2025f1){_0x595172=_0x2025f1;logger[_0xacb6('0xd')](_0xacb6('0x56'),_0x595172['id']);return getTicket(_0x2fc51e,_0x452d1a,_0x595172,_0x16aa5c,_0x38956d);})[_0xacb6('0x18')](function(_0x1e504d){if(_0x1e504d){logger[_0xacb6('0xd')](_0xacb6('0x57'),_0x1e504d['id']);}})['catch'](function(_0x2d3d45){logger['error']('['+_0x38956d['lastevent']['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0xacb6('0x6d')](_0x2d3d45,{'showHidden':!![],'depth':null}));});};