Built motion from commit 85328c08.|2.5.50
[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 _0x78d5=['The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','toUpperCase','Recording\x20is\x20enabled!','calleridname','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','type:user\x20role:agent\x20email:%s','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','user','authType','%s:%s','username','password','token','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','includes','string','picklist','type','nameField','customField','toLowerCase','content','custom_fields','idField','variable','variableName','push','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x78d5,0x8b));var _0x578d=function(_0x3b283f,_0x42f000){_0x3b283f=_0x3b283f-0x0;var _0x3cb345=_0x78d5[_0x3b283f];return _0x3cb345;};'use strict';var _=require(_0x578d('0x0'));var rp=require(_0x578d('0x1'));var md5=require(_0x578d('0x2'));var util=require(_0x578d('0x3'));var Redis=require('ioredis');var intUtil=require(_0x578d('0x4'));var config=require(_0x578d('0x5'));var logger=require(_0x578d('0x6'))('zendesk');config[_0x578d('0x7')]=_[_0x578d('0x8')](config[_0x578d('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x578d('0x7')]));function emit(_0x3b5a65,_0x47799e,_0x3762c8){io['to'](_0x3b5a65)[_0x578d('0x9')](_0x47799e,_0x3762c8);}var headers={'Content-Type':_0x578d('0xa'),'Accept':_0x578d('0xa')};function getTicket(_0x287576,_0x350ae3,_0x11d7b8,_0x74e160,_0x591cf0){logger[_0x578d('0xb')](_0x578d('0xc'));return request({'uri':util[_0x578d('0xd')](_0x578d('0xe'),_0x287576[_0x578d('0xf')]),'method':_0x578d('0x10'),'body':{'ticket':_['merge']({'requester_id':_0x11d7b8['id'],'submitter_id':_0x350ae3?_0x350ae3['id']:undefined,'assignee_id':_0x350ae3?_0x350ae3['id']:undefined,'tags':getTags(_0x74e160[_0x578d('0x11')],_0x578d('0x12')),'subject':intUtil[_0x578d('0x13')](_0x74e160[_0x578d('0x14')],_0x591cf0,'\x20'),'description':intUtil[_0x578d('0x13')](_0x74e160[_0x578d('0x15')],_0x591cf0,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x74e160[_0x578d('0x15')],_0x591cf0,'\x0a')}},getCustomFields(_0x74e160[_0x578d('0x16')],_0x591cf0))}})[_0x578d('0x17')](function(_0xb34f17){logger['info']('Ticket\x20created!');return _0xb34f17[_0x578d('0x18')];});}function getUser(_0x513351,_0x31cbfc){if(intUtil[_0x578d('0x19')](_0x31cbfc)){logger['info']('Getting\x20agent\x20with\x20email',_0x31cbfc);return request({'uri':util['format']('%s/search.json',_0x513351[_0x578d('0xf')]),'qs':{'query':util['format'](_0x578d('0x1a'),_0x31cbfc)}})['then'](function(_0x51f3dc){if(_0x51f3dc['count']){logger['info']('Agent\x20found!');return _[_0x578d('0x1b')](_0x51f3dc[_0x578d('0x1c')],{'email':_0x31cbfc,'role':_0x578d('0x1d')});}else{logger[_0x578d('0xb')](_0x578d('0x1e'));return request({'uri':util[_0x578d('0xd')](_0x578d('0x1f'),_0x513351['remoteUri'])})[_0x578d('0x17')](function(_0x7eaf6){logger[_0x578d('0xb')](_0x578d('0x20'));return _0x7eaf6['user'];});}});}else{logger['info'](_0x578d('0x1e'));return request({'uri':util[_0x578d('0xd')]('%s/users/me.json',_0x513351[_0x578d('0xf')])})[_0x578d('0x17')](function(_0x506cb4){logger['info'](_0x578d('0x20'));return _0x506cb4['user'];});}}function getEndUser(_0x4fbbdf,_0x100577,_0x4455bb){logger[_0x578d('0xb')](_0x578d('0x21'),_0x4455bb);return request({'uri':util['format'](_0x578d('0x22'),_0x4fbbdf[_0x578d('0xf')]),'qs':{'query':util[_0x578d('0xd')](_0x578d('0x23'),_0x4455bb)}})[_0x578d('0x17')](function(_0x19e4de){var _0x23de8f;if(_0x19e4de[_0x578d('0x1c')][_0x578d('0x24')]){_0x19e4de['results']=_[_0x578d('0x25')](_0x19e4de[_0x578d('0x1c')],{'suspended':![],'role':_0x578d('0x26')});if(_0x19e4de[_0x578d('0x1c')][_0x578d('0x24')]){_0x23de8f=_[_0x578d('0x27')](_0x19e4de[_0x578d('0x1c')]);}}if(_0x23de8f){logger['info'](_0x578d('0x28'));return _0x23de8f;}else{logger[_0x578d('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x578d('0x29'),_0x4fbbdf['remoteUri']),'method':_0x578d('0x10'),'body':{'user':{'role':_0x578d('0x26'),'name':util[_0x578d('0xd')](_0x578d('0x2a'),_0x100577||_0x4455bb),'phone':_0x4455bb}}})[_0x578d('0x17')](function(_0x3e8435){logger[_0x578d('0xb')](_0x578d('0x2b'));return _0x3e8435[_0x578d('0x2c')];});}});}function getAuth(_0xef9dd2){var _0x4e8133;if(_0xef9dd2[_0x578d('0x2d')]==='password'){_0x4e8133=util[_0x578d('0xd')](_0x578d('0x2e'),_0xef9dd2[_0x578d('0x2f')],_0xef9dd2[_0x578d('0x30')]);}else if(_0xef9dd2[_0x578d('0x2d')]===_0x578d('0x31')){_0x4e8133=util[_0x578d('0xd')]('%s/token:%s',_0xef9dd2[_0x578d('0x2f')],_0xef9dd2[_0x578d('0x31')]);}return util[_0x578d('0xd')](_0x578d('0x32'),new Buffer(_0x4e8133)[_0x578d('0x33')](_0x578d('0x34')));}function request(_0x110295){logger[_0x578d('0x35')](_0x578d('0x36'),JSON['stringify'](_0x110295));return rp(_[_0x578d('0x8')](_0x110295,{'method':_0x578d('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x2f1fc0,_0x4c3839){var _0x4f89ca=[];if(_0x2f1fc0&&_0x2f1fc0['length']>0x0){_0x4f89ca=_[_0x578d('0x38')](_0x2f1fc0,_0x4c3839);}return _0x4f89ca;}function getCustomFields(_0x2b06ea,_0x70787a){var _0x5e9720=[];var _0x19d4f5={'custom_fields':[]};if(_0x2b06ea[_0x578d('0x24')]>0x0){_['forEach'](_0x2b06ea,function(_0x317741){if(_[_0x578d('0x39')]([_0x578d('0x3a'),_0x578d('0x3b')],_0x317741[_0x578d('0x3c')])&&_0x317741[_0x578d('0x3d')]&&!_0x317741[_0x578d('0x3e')]){_0x19d4f5[_0x317741[_0x578d('0x3d')][_0x578d('0x3f')]()]=_0x317741[_0x578d('0x40')][_0x578d('0x33')]();}else if(_[_0x578d('0x39')](['string',_0x578d('0x3b')],_0x317741[_0x578d('0x3c')])&&_0x317741['idField']&&_0x317741['customField']){_0x19d4f5[_0x578d('0x41')]['push']({'id':_0x317741[_0x578d('0x42')],'value':_0x317741[_0x578d('0x40')]['toString']()});}else if(_0x317741[_0x578d('0x3c')]===_0x578d('0x43')&&_0x317741[_0x578d('0x44')]&&_0x317741['idField']&&_0x317741[_0x578d('0x3e')]){_0x70787a[_0x317741[_0x578d('0x44')]]&&_0x19d4f5['custom_fields'][_0x578d('0x45')]({'id':_0x317741['idField'],'value':_0x70787a[_0x317741[_0x578d('0x44')]][_0x578d('0x33')]()});}else if(_0x317741[_0x578d('0x3c')]===_0x578d('0x46')&&_0x317741['Variable']&&_0x317741[_0x578d('0x47')][_0x578d('0x12')]&&_0x317741[_0x578d('0x42')]&&_0x317741['customField']){_0x70787a[_0x317741['Variable'][_0x578d('0x12')][_0x578d('0x3f')]()]&&_0x19d4f5['custom_fields'][_0x578d('0x45')]({'id':_0x317741[_0x578d('0x42')],'value':_0x70787a[_0x317741['Variable']['name']['toLowerCase']()][_0x578d('0x33')]()});}});}return _0x19d4f5;}exports['queue']=function(_0x4b3bb5,_0x3f3248,_0x377f34,_0x57e6cf,_0x297b68,_0x4f2305){var _0x53762a,_0xdc9ab8;_0x4f2305['remoteUri']=intUtil[_0x578d('0x48')](_0x4f2305[_0x578d('0xf')]);_0x4f2305[_0x578d('0x49')]=intUtil['stripTrailingSlash'](_0x4f2305[_0x578d('0x49')]);if(_0x297b68&&_0x297b68[_0x578d('0x4a')]){logger[_0x578d('0xb')](_0x578d('0x4b'),'Recording\x20is\x20enabled!');_0x3f3248[_0x578d('0x4c')]=util[_0x578d('0xd')](_0x578d('0x4d'),_0x4f2305['serverUrl'],_0x3f3248[_0x578d('0x4e')],md5(_0x3f3248['uniqueid']));}else{_0x3f3248[_0x578d('0x4c')]='';}headers[_0x578d('0x4f')]=getAuth(_0x4f2305);return getUser(_0x4f2305,_0x57e6cf[_0x578d('0x50')])['then'](function(_0x46dab7){_0x53762a=_0x46dab7;logger['info'](_0x578d('0x51'),_0x53762a['id']);return getEndUser(_0x4f2305,_0x3f3248['calleridname'],_0x3f3248[_0x578d('0x52')]);})[_0x578d('0x17')](function(_0x249e2d){_0xdc9ab8=_0x249e2d;logger[_0x578d('0xb')](_0x578d('0x53'),_0xdc9ab8['id']);return getTicket(_0x4f2305,_0x53762a,_0xdc9ab8,_0x377f34,_0x3f3248);})['then'](function(_0x40e150){if(_0x40e150){logger['info'](_0x578d('0x54'),_0x40e150['id']);switch(_0x4f2305[_0x578d('0x3c')]){case _0x578d('0x55'):logger['info'](_0x578d('0x4b'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x4f2305[_0x578d('0xf')],_0x53762a['id'],_0x40e150['id']),'method':_0x578d('0x10')});case _0x578d('0x56'):logger['info'](_0x578d('0x4b'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x578d('0xd')](_0x578d('0x57'),_0x57e6cf[_0x578d('0x12')]),_0x578d('0x58'),{'uri':util['format'](_0x578d('0x59'),_0x4f2305['remoteUri'][_0x578d('0x5a')](_0x578d('0x5b'),''),_0x40e150['id'])});break;default:logger[_0x578d('0x5c')](_0x578d('0x4b'),_0x578d('0x5d'));}}})[_0x578d('0x5e')](function(_0x452c0d){logger[_0x578d('0x5c')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x578d('0x5f')](_0x452c0d,{'showHidden':!![],'depth':null}));});};exports[_0x578d('0x60')]=function(_0x124b92,_0x278a37,_0x6f394,_0x46cd4f,_0x2f86d4,_0x3ab88b,_0x3e976e){var _0x4fad99,_0x5c267c;_0x3ab88b['remoteUri']=intUtil[_0x578d('0x48')](_0x3ab88b['remoteUri']);_0x3ab88b[_0x578d('0x49')]=intUtil[_0x578d('0x48')](_0x3ab88b['serverUrl']);if(_0x3e976e&&_0x3e976e[_0x578d('0x61')]&&_0x3e976e[_0x578d('0x61')]!==_0x578d('0x62')){logger[_0x578d('0xb')](_0x578d('0x63'),'Recording\x20is\x20enabled!');_0x278a37['recordingURL']=util[_0x578d('0xd')](_0x578d('0x4d'),_0x3ab88b[_0x578d('0x49')],_0x278a37['uniqueid'],md5(_0x278a37['uniqueid']));}headers[_0x578d('0x4f')]=getAuth(_0x3ab88b);return getUser(_0x3ab88b,_0x46cd4f[_0x578d('0x50')])[_0x578d('0x17')](function(_0x2fd136){_0x4fad99=_0x2fd136;logger[_0x578d('0xb')](_0x578d('0x51'),_0x4fad99['id']);return getEndUser(_0x3ab88b,_0x278a37[_0x578d('0x64')],_0x278a37[_0x578d('0x65')]);})['then'](function(_0x3e71e3){_0x5c267c=_0x3e71e3;logger[_0x578d('0xb')](_0x578d('0x53'),_0x5c267c['id']);return getTicket(_0x3ab88b,_0x4fad99,_0x5c267c,_0x6f394,_0x278a37);})[_0x578d('0x17')](function(_0x337a37){if(_0x337a37){logger[_0x578d('0xb')]('The\x20Ticket\x20ID\x20is:',_0x337a37['id']);switch(_0x3ab88b[_0x578d('0x3c')]){case _0x578d('0x55'):logger[_0x578d('0xb')](_0x578d('0x63'),_0x578d('0x66'));return request({'uri':util[_0x578d('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x3ab88b[_0x578d('0xf')],_0x4fad99['id'],_0x337a37['id']),'method':_0x578d('0x10')});case'newTab':logger[_0x578d('0xb')](_0x578d('0x63'),_0x578d('0x67'));emit(util[_0x578d('0xd')]('user:%s',_0x46cd4f[_0x578d('0x12')]),'trigger:browser:url',{'uri':util['format'](_0x578d('0x59'),_0x3ab88b[_0x578d('0xf')][_0x578d('0x5a')](_0x578d('0x5b'),''),_0x337a37['id'])});break;default:logger[_0x578d('0x5c')](_0x578d('0x63'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x578d('0x5e')](function(_0x54fc88){logger[_0x578d('0x5c')](_0x578d('0x68'),util[_0x578d('0x5f')](_0x54fc88,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x567e57,_0x376c27,_0x68513a,_0x2c68b5,_0x419cb6,_0x2378df){var _0xcb7718,_0x41b6b1;_0x2378df[_0x578d('0xf')]=intUtil[_0x578d('0x48')](_0x2378df[_0x578d('0xf')]);_0x2378df['serverUrl']=intUtil[_0x578d('0x48')](_0x2378df['serverUrl']);if(_0x419cb6&&_0x419cb6[_0x578d('0x4a')]){logger[_0x578d('0xb')]('['+_0x376c27['lastevent'][_0x578d('0x69')]()+']',_0x578d('0x6a'));_0x376c27[_0x578d('0x4c')]=util[_0x578d('0xd')](_0x578d('0x4d'),_0x2378df[_0x578d('0x49')],_0x376c27['uniqueid'],md5(_0x376c27[_0x578d('0x4e')]));}else{_0x376c27[_0x578d('0x4c')]='';}headers[_0x578d('0x4f')]=getAuth(_0x2378df);return getUser(_0x2378df)[_0x578d('0x17')](function(_0x1f88e0){_0xcb7718=_0x1f88e0;logger[_0x578d('0xb')](_0x578d('0x51'),_0xcb7718['id']);return getEndUser(_0x2378df,_0x376c27[_0x578d('0x6b')],_0x376c27[_0x578d('0x52')]);})[_0x578d('0x17')](function(_0x3d443f){_0x41b6b1=_0x3d443f;logger['info'](_0x578d('0x53'),_0x41b6b1['id']);return getTicket(_0x2378df,_0xcb7718,_0x41b6b1,_0x68513a,_0x376c27);})[_0x578d('0x17')](function(_0x4ee8a5){if(_0x4ee8a5){logger[_0x578d('0xb')](_0x578d('0x54'),_0x4ee8a5['id']);}})[_0x578d('0x5e')](function(_0xad1821){logger['error']('['+_0x376c27[_0x578d('0x6c')][_0x578d('0x69')]()+']'+_0x578d('0x6d'),util[_0x578d('0x5f')](_0xad1821,{'showHidden':!![],'depth':null}));});};