Built motion from commit a61a4a20.|2.5.46
[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 _0x2de8=['first','Enduser\x20found!','%s/users.json','Caller\x20-\x20%s','authType','password','%s:%s','token','username','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','includes','picklist','nameField','customField','toLowerCase','content','string','type','idField','custom_fields','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','Authorization','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:browser:url','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','info','%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','type:user\x20role:end-user\x20phone:%s','length','filter','end-user'];(function(_0x587f3b,_0xc9a079){var _0x11c23f=function(_0x2de0a9){while(--_0x2de0a9){_0x587f3b['push'](_0x587f3b['shift']());}};_0x11c23f(++_0xc9a079);}(_0x2de8,0x181));var _0x82de=function(_0x15fd2c,_0x2efe29){_0x15fd2c=_0x15fd2c-0x0;var _0x314c47=_0x2de8[_0x15fd2c];return _0x314c47;};'use strict';var _=require('lodash');var rp=require(_0x82de('0x0'));var md5=require(_0x82de('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x82de('0x2'));var config=require(_0x82de('0x3'));var logger=require(_0x82de('0x4'))('zendesk');config[_0x82de('0x5')]=_['defaults'](config[_0x82de('0x5')],{'host':_0x82de('0x6'),'port':0x18eb});var io=require(_0x82de('0x7'))(new Redis(config[_0x82de('0x5')]));function emit(_0x5d8c92,_0x304367,_0x46bccc){io['to'](_0x5d8c92)[_0x82de('0x8')](_0x304367,_0x46bccc);}var headers={'Content-Type':_0x82de('0x9'),'Accept':'application/json'};function getTicket(_0x56a30e,_0x243547,_0x384bf4,_0x544d25,_0x4e4990){logger['info'](_0x82de('0xa'));return request({'uri':util[_0x82de('0xb')](_0x82de('0xc'),_0x56a30e[_0x82de('0xd')]),'method':_0x82de('0xe'),'body':{'ticket':_[_0x82de('0xf')]({'requester_id':_0x384bf4['id'],'submitter_id':_0x243547?_0x243547['id']:undefined,'assignee_id':_0x243547?_0x243547['id']:undefined,'tags':getTags(_0x544d25[_0x82de('0x10')],_0x82de('0x11')),'subject':intUtil[_0x82de('0x12')](_0x544d25[_0x82de('0x13')],_0x4e4990,'\x20'),'description':intUtil[_0x82de('0x12')](_0x544d25[_0x82de('0x14')],_0x4e4990,'\x0a'),'comment':{'public':![],'body':intUtil[_0x82de('0x12')](_0x544d25[_0x82de('0x14')],_0x4e4990,'\x0a')}},getCustomFields(_0x544d25[_0x82de('0x15')],_0x4e4990))}})[_0x82de('0x16')](function(_0xfa2cbd){logger[_0x82de('0x17')]('Ticket\x20created!');return _0xfa2cbd['ticket'];});}function getUser(_0x5585e9,_0x565930){if(intUtil['validateEmail'](_0x565930)){logger['info']('Getting\x20agent\x20with\x20email',_0x565930);return request({'uri':util[_0x82de('0xb')](_0x82de('0x18'),_0x5585e9[_0x82de('0xd')]),'qs':{'query':util[_0x82de('0xb')](_0x82de('0x19'),_0x565930)}})['then'](function(_0x436006){if(_0x436006[_0x82de('0x1a')]){logger['info'](_0x82de('0x1b'));return _[_0x82de('0x1c')](_0x436006[_0x82de('0x1d')],{'email':_0x565930,'role':_0x82de('0x1e')});}else{logger[_0x82de('0x17')](_0x82de('0x1f'));return request({'uri':util[_0x82de('0xb')](_0x82de('0x20'),_0x5585e9[_0x82de('0xd')])})[_0x82de('0x16')](function(_0x1657d8){logger['info'](_0x82de('0x21'));return _0x1657d8[_0x82de('0x22')];});}});}else{logger['info'](_0x82de('0x1f'));return request({'uri':util[_0x82de('0xb')]('%s/users/me.json',_0x5585e9[_0x82de('0xd')])})['then'](function(_0x51ed69){logger[_0x82de('0x17')](_0x82de('0x21'));return _0x51ed69[_0x82de('0x22')];});}}function getEndUser(_0xb6481d,_0x4b715c,_0x5c41bd){logger[_0x82de('0x17')]('Searching\x20enduser\x20with\x20phone',_0x5c41bd);return request({'uri':util[_0x82de('0xb')](_0x82de('0x18'),_0xb6481d[_0x82de('0xd')]),'qs':{'query':util[_0x82de('0xb')](_0x82de('0x23'),_0x5c41bd)}})[_0x82de('0x16')](function(_0x3cb74c){var _0x2479d6;if(_0x3cb74c['results'][_0x82de('0x24')]){_0x3cb74c[_0x82de('0x1d')]=_[_0x82de('0x25')](_0x3cb74c[_0x82de('0x1d')],{'suspended':![],'role':_0x82de('0x26')});if(_0x3cb74c['results'][_0x82de('0x24')]){_0x2479d6=_[_0x82de('0x27')](_0x3cb74c[_0x82de('0x1d')]);}}if(_0x2479d6){logger[_0x82de('0x17')](_0x82de('0x28'));return _0x2479d6;}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x82de('0xb')](_0x82de('0x29'),_0xb6481d['remoteUri']),'method':_0x82de('0xe'),'body':{'user':{'role':_0x82de('0x26'),'name':util[_0x82de('0xb')](_0x82de('0x2a'),_0x4b715c||_0x5c41bd),'phone':_0x5c41bd}}})['then'](function(_0x5177e4){logger[_0x82de('0x17')]('Enduser\x20created.');return _0x5177e4[_0x82de('0x22')];});}});}function getAuth(_0x5a3845){var _0x51dbc3;if(_0x5a3845[_0x82de('0x2b')]===_0x82de('0x2c')){_0x51dbc3=util['format'](_0x82de('0x2d'),_0x5a3845['username'],_0x5a3845[_0x82de('0x2c')]);}else if(_0x5a3845[_0x82de('0x2b')]===_0x82de('0x2e')){_0x51dbc3=util[_0x82de('0xb')]('%s/token:%s',_0x5a3845[_0x82de('0x2f')],_0x5a3845[_0x82de('0x2e')]);}return util[_0x82de('0xb')](_0x82de('0x30'),new Buffer(_0x51dbc3)[_0x82de('0x31')](_0x82de('0x32')));}function request(_0x485361){logger[_0x82de('0x33')](_0x82de('0x34'),JSON['stringify'](_0x485361));return rp(_['defaults'](_0x485361,{'method':_0x82de('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x42d838,_0x331237){var _0x12625c=[];if(_0x42d838&&_0x42d838['length']>0x0){_0x12625c=_[_0x82de('0x36')](_0x42d838,_0x331237);}return _0x12625c;}function getCustomFields(_0x45d739,_0x5dcf28){var _0xa5bc5d=[];var _0x5ec274={'custom_fields':[]};if(_0x45d739['length']>0x0){_['forEach'](_0x45d739,function(_0x645673){if(_[_0x82de('0x37')](['string',_0x82de('0x38')],_0x645673['type'])&&_0x645673[_0x82de('0x39')]&&!_0x645673[_0x82de('0x3a')]){_0x5ec274[_0x645673[_0x82de('0x39')][_0x82de('0x3b')]()]=_0x645673[_0x82de('0x3c')][_0x82de('0x31')]();}else if(_['includes']([_0x82de('0x3d'),_0x82de('0x38')],_0x645673[_0x82de('0x3e')])&&_0x645673[_0x82de('0x3f')]&&_0x645673[_0x82de('0x3a')]){_0x5ec274[_0x82de('0x40')][_0x82de('0x41')]({'id':_0x645673[_0x82de('0x3f')],'value':_0x645673[_0x82de('0x3c')][_0x82de('0x31')]()});}else if(_0x645673['type']===_0x82de('0x42')&&_0x645673[_0x82de('0x43')]&&_0x645673[_0x82de('0x3f')]&&_0x645673[_0x82de('0x3a')]){_0x5dcf28[_0x645673[_0x82de('0x43')]]&&_0x5ec274[_0x82de('0x40')]['push']({'id':_0x645673[_0x82de('0x3f')],'value':_0x5dcf28[_0x645673['variableName']]['toString']()});}else if(_0x645673['type']===_0x82de('0x44')&&_0x645673['Variable']&&_0x645673[_0x82de('0x45')]['name']&&_0x645673[_0x82de('0x3f')]&&_0x645673[_0x82de('0x3a')]){_0x5dcf28[_0x645673[_0x82de('0x45')]['name'][_0x82de('0x3b')]()]&&_0x5ec274[_0x82de('0x40')][_0x82de('0x41')]({'id':_0x645673['idField'],'value':_0x5dcf28[_0x645673['Variable'][_0x82de('0x11')]['toLowerCase']()][_0x82de('0x31')]()});}});}return _0x5ec274;}exports[_0x82de('0x46')]=function(_0x122563,_0x285c5f,_0x53b2a2,_0xdf39b6,_0x47efc1,_0x3ab23a){var _0x33b636,_0x4cddab;_0x3ab23a[_0x82de('0xd')]=intUtil[_0x82de('0x47')](_0x3ab23a[_0x82de('0xd')]);_0x3ab23a['serverUrl']=intUtil[_0x82de('0x47')](_0x3ab23a[_0x82de('0x48')]);if(_0x47efc1&&_0x47efc1[_0x82de('0x49')]){logger[_0x82de('0x17')](_0x82de('0x4a'),'Recording\x20is\x20enabled!');_0x285c5f['recordingURL']=util[_0x82de('0xb')](_0x82de('0x4b'),_0x3ab23a['serverUrl'],_0x285c5f[_0x82de('0x4c')],md5(_0x285c5f[_0x82de('0x4c')]));}else{_0x285c5f[_0x82de('0x4d')]='';}headers['Authorization']=getAuth(_0x3ab23a);return getUser(_0x3ab23a,_0xdf39b6[_0x82de('0x4e')])['then'](function(_0x218383){_0x33b636=_0x218383;logger[_0x82de('0x17')](_0x82de('0x4f'),_0x33b636['id']);return getEndUser(_0x3ab23a,_0x285c5f[_0x82de('0x50')],_0x285c5f[_0x82de('0x51')]);})[_0x82de('0x16')](function(_0xdfb8e4){_0x4cddab=_0xdfb8e4;logger[_0x82de('0x17')](_0x82de('0x52'),_0x4cddab['id']);return getTicket(_0x3ab23a,_0x33b636,_0x4cddab,_0x53b2a2,_0x285c5f);})['then'](function(_0x37ea36){if(_0x37ea36){logger[_0x82de('0x17')]('The\x20Ticket\x20ID\x20is:',_0x37ea36['id']);switch(_0x3ab23a[_0x82de('0x3e')]){case _0x82de('0x53'):logger[_0x82de('0x17')](_0x82de('0x4a'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x82de('0xb')](_0x82de('0x54'),_0x3ab23a[_0x82de('0xd')],_0x33b636['id'],_0x37ea36['id']),'method':_0x82de('0xe')});case'newTab':logger[_0x82de('0x17')](_0x82de('0x4a'),_0x82de('0x55'));emit(util[_0x82de('0xb')]('user:%s',_0xdf39b6[_0x82de('0x11')]),'trigger:browser:url',{'uri':util[_0x82de('0xb')]('%s/agent/tickets/%s',_0x3ab23a['remoteUri'][_0x82de('0x56')]('/api/v2',''),_0x37ea36['id'])});break;default:logger[_0x82de('0x57')]('[QUEUE]',_0x82de('0x58'));}}})[_0x82de('0x59')](function(_0x103c14){logger[_0x82de('0x57')](_0x82de('0x5a'),util[_0x82de('0x5b')](_0x103c14,{'showHidden':!![],'depth':null}));});};exports[_0x82de('0x5c')]=function(_0x3459ca,_0x68f172,_0x9e98bd,_0x2ddaeb,_0x5b0a56,_0x393eeb,_0x5917b0){var _0x387099,_0x3606a3;_0x393eeb[_0x82de('0xd')]=intUtil[_0x82de('0x47')](_0x393eeb['remoteUri']);_0x393eeb[_0x82de('0x48')]=intUtil['stripTrailingSlash'](_0x393eeb[_0x82de('0x48')]);if(_0x5917b0&&_0x5917b0[_0x82de('0x5d')]&&_0x5917b0[_0x82de('0x5d')]!==_0x82de('0x5e')){logger[_0x82de('0x17')](_0x82de('0x5f'),_0x82de('0x60'));_0x68f172['recordingURL']=util[_0x82de('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x393eeb[_0x82de('0x48')],_0x68f172[_0x82de('0x4c')],md5(_0x68f172[_0x82de('0x4c')]));}headers[_0x82de('0x61')]=getAuth(_0x393eeb);return getUser(_0x393eeb,_0x2ddaeb[_0x82de('0x4e')])[_0x82de('0x16')](function(_0x53ac6d){_0x387099=_0x53ac6d;logger[_0x82de('0x17')]('The\x20User\x20ID\x20is:',_0x387099['id']);return getEndUser(_0x393eeb,_0x68f172['destcalleridname'],_0x68f172['destcalleridnum']);})[_0x82de('0x16')](function(_0x172af1){_0x3606a3=_0x172af1;logger[_0x82de('0x17')]('The\x20Enduser\x20ID\x20is:',_0x3606a3['id']);return getTicket(_0x393eeb,_0x387099,_0x3606a3,_0x9e98bd,_0x68f172);})[_0x82de('0x16')](function(_0x331f68){if(_0x331f68){logger['info'](_0x82de('0x62'),_0x331f68['id']);switch(_0x393eeb[_0x82de('0x3e')]){case _0x82de('0x53'):logger[_0x82de('0x17')](_0x82de('0x5f'),_0x82de('0x63'));return request({'uri':util['format'](_0x82de('0x54'),_0x393eeb[_0x82de('0xd')],_0x387099['id'],_0x331f68['id']),'method':_0x82de('0xe')});case'newTab':logger[_0x82de('0x17')](_0x82de('0x5f'),_0x82de('0x55'));emit(util[_0x82de('0xb')](_0x82de('0x64'),_0x2ddaeb[_0x82de('0x11')]),_0x82de('0x65'),{'uri':util[_0x82de('0xb')](_0x82de('0x66'),_0x393eeb[_0x82de('0xd')][_0x82de('0x56')]('/api/v2',''),_0x331f68['id'])});break;default:logger[_0x82de('0x57')](_0x82de('0x5f'),_0x82de('0x58'));}}})['catch'](function(_0x17336e){logger[_0x82de('0x57')](_0x82de('0x67'),util[_0x82de('0x5b')](_0x17336e,{'showHidden':!![],'depth':null}));});};exports[_0x82de('0x68')]=function(_0x1fee28,_0x16f183,_0x91eba9,_0xb72fba,_0x356f7a,_0x2aad4a){var _0x562b66,_0x1f4abd;_0x2aad4a[_0x82de('0xd')]=intUtil[_0x82de('0x47')](_0x2aad4a['remoteUri']);_0x2aad4a[_0x82de('0x48')]=intUtil[_0x82de('0x47')](_0x2aad4a[_0x82de('0x48')]);if(_0x356f7a&&_0x356f7a[_0x82de('0x49')]){logger['info']('['+_0x16f183[_0x82de('0x69')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x16f183[_0x82de('0x4d')]=util[_0x82de('0xb')](_0x82de('0x4b'),_0x2aad4a[_0x82de('0x48')],_0x16f183[_0x82de('0x4c')],md5(_0x16f183[_0x82de('0x4c')]));}else{_0x16f183[_0x82de('0x4d')]='';}headers[_0x82de('0x61')]=getAuth(_0x2aad4a);return getUser(_0x2aad4a)[_0x82de('0x16')](function(_0x498ace){_0x562b66=_0x498ace;logger[_0x82de('0x17')](_0x82de('0x4f'),_0x562b66['id']);return getEndUser(_0x2aad4a,_0x16f183[_0x82de('0x50')],_0x16f183[_0x82de('0x51')]);})[_0x82de('0x16')](function(_0x5dee7d){_0x1f4abd=_0x5dee7d;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1f4abd['id']);return getTicket(_0x2aad4a,_0x562b66,_0x1f4abd,_0x91eba9,_0x16f183);})[_0x82de('0x16')](function(_0x435b04){if(_0x435b04){logger[_0x82de('0x17')]('The\x20Ticket\x20ID\x20is:',_0x435b04['id']);}})[_0x82de('0x59')](function(_0x2987b8){logger[_0x82de('0x57')]('['+_0x16f183['lastevent']['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x82de('0x5b')](_0x2987b8,{'showHidden':!![],'depth':null}));});};