240dd1b176b8b5872065461a0db4716efa7c2bda
[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 _0x4305=['Admin\x20account\x20selected.','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','debug','[HTTP]','stringify','defaults','GET','map','forEach','string','type','nameField','customField','toLowerCase','content','toString','includes','picklist','idField','custom_fields','push','variable','variableName','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','integrationTab','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','calleridnum','The\x20Ticket\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','remoteUri','Tags','getString','Descriptions','then','ticket','validateEmail','format','%s/search.json','type:user\x20role:agent\x20email:%s','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0x5e38be,_0x36cc86){var _0xa4f17b=function(_0x5dc7b7){while(--_0x5dc7b7){_0x5e38be['push'](_0x5e38be['shift']());}};_0xa4f17b(++_0x36cc86);}(_0x4305,0xbc));var _0x5430=function(_0x526074,_0x5e5d09){_0x526074=_0x526074-0x0;var _0x83c6c8=_0x4305[_0x526074];return _0x83c6c8;};'use strict';var _=require(_0x5430('0x0'));var rp=require(_0x5430('0x1'));var md5=require(_0x5430('0x2'));var util=require(_0x5430('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x5430('0x4'));var logger=require(_0x5430('0x5'))('zendesk');config[_0x5430('0x6')]=_['defaults'](config[_0x5430('0x6')],{'host':_0x5430('0x7'),'port':0x18eb});var io=require(_0x5430('0x8'))(new Redis(config[_0x5430('0x6')]));function emit(_0x3d2de0,_0x5f1111,_0x333a97){io['to'](_0x3d2de0)[_0x5430('0x9')](_0x5f1111,_0x333a97);}var headers={'Content-Type':_0x5430('0xa'),'Accept':_0x5430('0xa')};function getTicket(_0x5a9685,_0x205ae1,_0x4f8235,_0x1465af,_0x37431f){logger[_0x5430('0xb')](_0x5430('0xc'));return request({'uri':util['format']('%s/tickets.json',_0x5a9685[_0x5430('0xd')]),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x4f8235['id'],'submitter_id':_0x205ae1?_0x205ae1['id']:undefined,'assignee_id':_0x205ae1?_0x205ae1['id']:undefined,'tags':getTags(_0x1465af[_0x5430('0xe')],'name'),'subject':intUtil[_0x5430('0xf')](_0x1465af['Subjects'],_0x37431f,'\x20'),'description':intUtil['getString'](_0x1465af['Descriptions'],_0x37431f,'\x0a'),'comment':{'public':![],'body':intUtil[_0x5430('0xf')](_0x1465af[_0x5430('0x10')],_0x37431f,'\x0a')}},getCustomFields(_0x1465af['Fields'],_0x37431f))}})[_0x5430('0x11')](function(_0x9f5145){logger[_0x5430('0xb')]('Ticket\x20created!');return _0x9f5145[_0x5430('0x12')];});}function getUser(_0x503f72,_0x2eb986){if(intUtil[_0x5430('0x13')](_0x2eb986)){logger[_0x5430('0xb')]('Getting\x20agent\x20with\x20email',_0x2eb986);return request({'uri':util[_0x5430('0x14')](_0x5430('0x15'),_0x503f72[_0x5430('0xd')]),'qs':{'query':util[_0x5430('0x14')](_0x5430('0x16'),_0x2eb986)}})[_0x5430('0x11')](function(_0x3659f){if(_0x3659f['count']){logger[_0x5430('0xb')]('Agent\x20found!');return _[_0x5430('0x17')](_0x3659f['results'],{'email':_0x2eb986,'role':_0x5430('0x18')});}else{logger[_0x5430('0xb')](_0x5430('0x19'));return request({'uri':util[_0x5430('0x14')]('%s/users/me.json',_0x503f72[_0x5430('0xd')])})[_0x5430('0x11')](function(_0x2ff678){logger[_0x5430('0xb')](_0x5430('0x1a'));return _0x2ff678['user'];});}});}else{logger[_0x5430('0xb')](_0x5430('0x19'));return request({'uri':util[_0x5430('0x14')](_0x5430('0x1b'),_0x503f72['remoteUri'])})[_0x5430('0x11')](function(_0x1399d0){logger[_0x5430('0xb')](_0x5430('0x1a'));return _0x1399d0['user'];});}}function getEndUser(_0x2912e3,_0x473ab6,_0x36c9c6){logger[_0x5430('0xb')](_0x5430('0x1c'),_0x36c9c6);return request({'uri':util[_0x5430('0x14')]('%s/search.json',_0x2912e3['remoteUri']),'qs':{'query':util['format'](_0x5430('0x1d'),_0x36c9c6)}})[_0x5430('0x11')](function(_0x181b36){var _0x12c728;if(_0x181b36[_0x5430('0x1e')][_0x5430('0x1f')]){_0x181b36[_0x5430('0x1e')]=_[_0x5430('0x20')](_0x181b36[_0x5430('0x1e')],{'suspended':![],'role':_0x5430('0x21')});if(_0x181b36[_0x5430('0x1e')][_0x5430('0x1f')]){_0x12c728=_[_0x5430('0x22')](_0x181b36[_0x5430('0x1e')]);}}if(_0x12c728){logger[_0x5430('0xb')](_0x5430('0x23'));return _0x12c728;}else{logger[_0x5430('0xb')](_0x5430('0x24'));return request({'uri':util[_0x5430('0x14')](_0x5430('0x25'),_0x2912e3[_0x5430('0xd')]),'method':_0x5430('0x26'),'body':{'user':{'role':'end-user','name':util[_0x5430('0x14')](_0x5430('0x27'),_0x473ab6||_0x36c9c6),'phone':_0x36c9c6}}})['then'](function(_0x31b908){logger['info'](_0x5430('0x28'));return _0x31b908['user'];});}});}function getAuth(_0x82aa90){var _0x2ba467;if(_0x82aa90[_0x5430('0x29')]===_0x5430('0x2a')){_0x2ba467=util['format'](_0x5430('0x2b'),_0x82aa90[_0x5430('0x2c')],_0x82aa90['password']);}else if(_0x82aa90[_0x5430('0x29')]===_0x5430('0x2d')){_0x2ba467=util['format'](_0x5430('0x2e'),_0x82aa90[_0x5430('0x2c')],_0x82aa90[_0x5430('0x2d')]);}return util[_0x5430('0x14')](_0x5430('0x2f'),new Buffer(_0x2ba467)['toString']('base64'));}function request(_0x1d582a){logger[_0x5430('0x30')](_0x5430('0x31'),JSON[_0x5430('0x32')](_0x1d582a));return rp(_[_0x5430('0x33')](_0x1d582a,{'method':_0x5430('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x4cd76b,_0x5d9d62){var _0x1021cf=[];if(_0x4cd76b&&_0x4cd76b[_0x5430('0x1f')]>0x0){_0x1021cf=_[_0x5430('0x35')](_0x4cd76b,_0x5d9d62);}return _0x1021cf;}function getCustomFields(_0x2a4ff0,_0x2ef61f){var _0xc9c005=[];var _0x39874a={'custom_fields':[]};if(_0x2a4ff0[_0x5430('0x1f')]>0x0){_[_0x5430('0x36')](_0x2a4ff0,function(_0x564451){if(_['includes']([_0x5430('0x37'),'picklist'],_0x564451[_0x5430('0x38')])&&_0x564451[_0x5430('0x39')]&&!_0x564451[_0x5430('0x3a')]){_0x39874a[_0x564451[_0x5430('0x39')][_0x5430('0x3b')]()]=_0x564451[_0x5430('0x3c')][_0x5430('0x3d')]();}else if(_[_0x5430('0x3e')]([_0x5430('0x37'),_0x5430('0x3f')],_0x564451[_0x5430('0x38')])&&_0x564451[_0x5430('0x40')]&&_0x564451[_0x5430('0x3a')]){_0x39874a[_0x5430('0x41')][_0x5430('0x42')]({'id':_0x564451['idField'],'value':_0x564451[_0x5430('0x3c')]['toString']()});}else if(_0x564451[_0x5430('0x38')]===_0x5430('0x43')&&_0x564451[_0x5430('0x44')]&&_0x564451[_0x5430('0x40')]&&_0x564451[_0x5430('0x3a')]){_0x2ef61f[_0x564451[_0x5430('0x44')]]&&_0x39874a['custom_fields'][_0x5430('0x42')]({'id':_0x564451[_0x5430('0x40')],'value':_0x2ef61f[_0x564451[_0x5430('0x44')]]['toString']()});}else if(_0x564451[_0x5430('0x38')]==='customVariable'&&_0x564451[_0x5430('0x45')]&&_0x564451['Variable'][_0x5430('0x46')]&&_0x564451[_0x5430('0x40')]&&_0x564451['customField']){_0x2ef61f[_0x564451[_0x5430('0x45')][_0x5430('0x46')][_0x5430('0x3b')]()]&&_0x39874a[_0x5430('0x41')]['push']({'id':_0x564451['idField'],'value':_0x2ef61f[_0x564451['Variable'][_0x5430('0x46')][_0x5430('0x3b')]()][_0x5430('0x3d')]()});}});}return _0x39874a;}exports[_0x5430('0x47')]=function(_0x2d2cac,_0x162bcd,_0x1b71fc,_0x38fe16,_0xe48c4f,_0x3f4bc7){var _0x401a6a,_0x5c018d;_0x3f4bc7[_0x5430('0xd')]=intUtil[_0x5430('0x48')](_0x3f4bc7[_0x5430('0xd')]);_0x3f4bc7['serverUrl']=intUtil[_0x5430('0x48')](_0x3f4bc7[_0x5430('0x49')]);if(_0xe48c4f&&_0xe48c4f[_0x5430('0x4a')]){logger[_0x5430('0xb')](_0x5430('0x4b'),_0x5430('0x4c'));_0x162bcd['recordingURL']=util[_0x5430('0x14')](_0x5430('0x4d'),_0x3f4bc7[_0x5430('0x49')],_0x162bcd[_0x5430('0x4e')],md5(_0x162bcd['uniqueid']));}else{_0x162bcd['recordingURL']='';}headers[_0x5430('0x4f')]=getAuth(_0x3f4bc7);return getUser(_0x3f4bc7,_0x38fe16[_0x5430('0x50')])[_0x5430('0x11')](function(_0x5c18bf){_0x401a6a=_0x5c18bf;logger[_0x5430('0xb')](_0x5430('0x51'),_0x401a6a['id']);return getEndUser(_0x3f4bc7,_0x162bcd[_0x5430('0x52')],_0x162bcd['calleridnum']);})[_0x5430('0x11')](function(_0x273f52){_0x5c018d=_0x273f52;logger[_0x5430('0xb')](_0x5430('0x53'),_0x5c018d['id']);return getTicket(_0x3f4bc7,_0x401a6a,_0x5c018d,_0x1b71fc,_0x162bcd);})[_0x5430('0x11')](function(_0x5b2354){if(_0x5b2354){logger['info']('The\x20Ticket\x20ID\x20is:',_0x5b2354['id']);switch(_0x3f4bc7[_0x5430('0x38')]){case _0x5430('0x54'):logger[_0x5430('0xb')](_0x5430('0x4b'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x3f4bc7[_0x5430('0xd')],_0x401a6a['id'],_0x5b2354['id']),'method':_0x5430('0x26')});case _0x5430('0x55'):logger[_0x5430('0xb')](_0x5430('0x4b'),_0x5430('0x56'));emit(util[_0x5430('0x14')](_0x5430('0x57'),_0x38fe16[_0x5430('0x46')]),'trigger:browser:url',{'uri':util[_0x5430('0x14')]('%s/agent/tickets/%s',_0x3f4bc7[_0x5430('0xd')][_0x5430('0x58')]('/api/v2',''),_0x5b2354['id'])});break;default:logger[_0x5430('0x59')](_0x5430('0x4b'),_0x5430('0x5a'));}}})[_0x5430('0x5b')](function(_0x27e7b7){logger[_0x5430('0x59')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x5430('0x5c')](_0x27e7b7,{'showHidden':!![],'depth':null}));});};exports[_0x5430('0x5d')]=function(_0x3885a2,_0x150d0c,_0x4e33b4,_0x48e83c,_0x3eec7c,_0x1fd01e,_0x59cc64){var _0x5dfb00,_0x3b1358;_0x1fd01e[_0x5430('0xd')]=intUtil[_0x5430('0x48')](_0x1fd01e['remoteUri']);_0x1fd01e['serverUrl']=intUtil[_0x5430('0x48')](_0x1fd01e['serverUrl']);if(_0x59cc64&&_0x59cc64[_0x5430('0x5e')]&&_0x59cc64[_0x5430('0x5e')]!==_0x5430('0x5f')){logger[_0x5430('0xb')](_0x5430('0x60'),'Recording\x20is\x20enabled!');_0x150d0c[_0x5430('0x61')]=util[_0x5430('0x14')](_0x5430('0x4d'),_0x1fd01e['serverUrl'],_0x150d0c[_0x5430('0x4e')],md5(_0x150d0c[_0x5430('0x4e')]));}headers[_0x5430('0x4f')]=getAuth(_0x1fd01e);return getUser(_0x1fd01e,_0x48e83c[_0x5430('0x50')])[_0x5430('0x11')](function(_0x4df006){_0x5dfb00=_0x4df006;logger[_0x5430('0xb')]('The\x20User\x20ID\x20is:',_0x5dfb00['id']);return getEndUser(_0x1fd01e,_0x150d0c['destcalleridname'],_0x150d0c[_0x5430('0x62')]);})[_0x5430('0x11')](function(_0x4b2aad){_0x3b1358=_0x4b2aad;logger[_0x5430('0xb')](_0x5430('0x53'),_0x3b1358['id']);return getTicket(_0x1fd01e,_0x5dfb00,_0x3b1358,_0x4e33b4,_0x150d0c);})[_0x5430('0x11')](function(_0x2ce816){if(_0x2ce816){logger[_0x5430('0xb')]('The\x20Ticket\x20ID\x20is:',_0x2ce816['id']);switch(_0x1fd01e[_0x5430('0x38')]){case'integrationTab':logger[_0x5430('0xb')](_0x5430('0x60'),_0x5430('0x63'));return request({'uri':util[_0x5430('0x14')](_0x5430('0x64'),_0x1fd01e['remoteUri'],_0x5dfb00['id'],_0x2ce816['id']),'method':_0x5430('0x26')});case _0x5430('0x55'):logger[_0x5430('0xb')]('[OUTBOUND]',_0x5430('0x56'));emit(util[_0x5430('0x14')]('user:%s',_0x48e83c[_0x5430('0x46')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x1fd01e[_0x5430('0xd')][_0x5430('0x58')]('/api/v2',''),_0x2ce816['id'])});break;default:logger[_0x5430('0x59')]('[OUTBOUND]',_0x5430('0x5a'));}}})['catch'](function(_0x58177b){logger[_0x5430('0x59')](_0x5430('0x65'),util[_0x5430('0x5c')](_0x58177b,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x174411,_0x50b410,_0x1f6829,_0x589ed0,_0x5a8af9,_0x4f9963){var _0x29347a,_0x1f2a51;_0x4f9963['remoteUri']=intUtil[_0x5430('0x48')](_0x4f9963[_0x5430('0xd')]);_0x4f9963[_0x5430('0x49')]=intUtil['stripTrailingSlash'](_0x4f9963[_0x5430('0x49')]);if(_0x5a8af9&&_0x5a8af9['monitor_format']){logger['info']('['+_0x50b410[_0x5430('0x66')][_0x5430('0x67')]()+']','Recording\x20is\x20enabled!');_0x50b410[_0x5430('0x61')]=util[_0x5430('0x14')](_0x5430('0x4d'),_0x4f9963[_0x5430('0x49')],_0x50b410[_0x5430('0x4e')],md5(_0x50b410['uniqueid']));}else{_0x50b410[_0x5430('0x61')]='';}headers[_0x5430('0x4f')]=getAuth(_0x4f9963);return getUser(_0x4f9963)[_0x5430('0x11')](function(_0x2dbe6c){_0x29347a=_0x2dbe6c;logger['info'](_0x5430('0x51'),_0x29347a['id']);return getEndUser(_0x4f9963,_0x50b410[_0x5430('0x52')],_0x50b410[_0x5430('0x68')]);})[_0x5430('0x11')](function(_0x527bef){_0x1f2a51=_0x527bef;logger[_0x5430('0xb')](_0x5430('0x53'),_0x1f2a51['id']);return getTicket(_0x4f9963,_0x29347a,_0x1f2a51,_0x1f6829,_0x50b410);})['then'](function(_0x1dc058){if(_0x1dc058){logger[_0x5430('0xb')](_0x5430('0x69'),_0x1dc058['id']);}})[_0x5430('0x5b')](function(_0x5d02ca){logger[_0x5430('0x59')]('['+_0x50b410[_0x5430('0x66')][_0x5430('0x67')]()+']'+_0x5430('0x6a'),util['inspect'](_0x5d02ca,{'showHidden':!![],'depth':null}));});};