a2de761899fe4399abdf4c74d8503a8222a42cf1
[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 _0x0ca6=['The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','replace','Zendesk\x20account\x20type\x20not\x20recognized','catch','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','integrationTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','/api/v2','unmanaged','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','emit','application/json','format','POST','name','getString','Subjects','Descriptions','Fields','then','info','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','debug','stringify','forEach','includes','string','type','customField','nameField','picklist','custom_fields','idField','variable','variableName','push','customVariable','Variable','toLowerCase','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email'];(function(_0x54f5d8,_0x1a03c7){var _0x1e96a5=function(_0x913b1d){while(--_0x913b1d){_0x54f5d8['push'](_0x54f5d8['shift']());}};_0x1e96a5(++_0x1a03c7);}(_0x0ca6,0x100));var _0x60ca=function(_0x130ceb,_0x587407){_0x130ceb=_0x130ceb-0x0;var _0x6fee25=_0x0ca6[_0x130ceb];return _0x6fee25;};'use strict';var _=require(_0x60ca('0x0'));var rp=require(_0x60ca('0x1'));var md5=require(_0x60ca('0x2'));var util=require(_0x60ca('0x3'));var Redis=require(_0x60ca('0x4'));var intUtil=require(_0x60ca('0x5'));var config=require(_0x60ca('0x6'));var logger=require(_0x60ca('0x7'))(_0x60ca('0x8'));config[_0x60ca('0x9')]=_[_0x60ca('0xa')](config[_0x60ca('0x9')],{'host':_0x60ca('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x60ca('0x9')]));function emit(_0x5812ce,_0x48f8d6,_0x351198){io['to'](_0x5812ce)[_0x60ca('0xc')](_0x48f8d6,_0x351198);}var headers={'Content-Type':_0x60ca('0xd'),'Accept':_0x60ca('0xd')};function getTicket(_0x41ad4f,_0x1d925a,_0xa9c69c,_0x3011b0,_0x26e156){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util[_0x60ca('0xe')]('%s/tickets.json',_0x41ad4f['remoteUri']),'method':_0x60ca('0xf'),'body':{'ticket':_['merge']({'requester_id':_0xa9c69c['id'],'submitter_id':_0x1d925a?_0x1d925a['id']:undefined,'assignee_id':_0x1d925a?_0x1d925a['id']:undefined,'tags':getTags(_0x3011b0['Tags'],_0x60ca('0x10')),'subject':intUtil[_0x60ca('0x11')](_0x3011b0[_0x60ca('0x12')],_0x26e156,'\x20'),'description':intUtil['getString'](_0x3011b0[_0x60ca('0x13')],_0x26e156,'\x0a'),'comment':{'public':![],'body':intUtil[_0x60ca('0x11')](_0x3011b0[_0x60ca('0x13')],_0x26e156,'\x0a')}},getCustomFields(_0x3011b0[_0x60ca('0x14')],_0x26e156))}})[_0x60ca('0x15')](function(_0x3723c0){logger[_0x60ca('0x16')]('Ticket\x20created!');return _0x3723c0[_0x60ca('0x17')];});}function getUser(_0x1dea8c,_0x49a062){if(intUtil[_0x60ca('0x18')](_0x49a062)){logger[_0x60ca('0x16')](_0x60ca('0x19'),_0x49a062);return request({'uri':util['format'](_0x60ca('0x1a'),_0x1dea8c[_0x60ca('0x1b')]),'qs':{'query':util[_0x60ca('0xe')](_0x60ca('0x1c'),_0x49a062)}})[_0x60ca('0x15')](function(_0x993da2){if(_0x993da2['count']){logger['info'](_0x60ca('0x1d'));return _[_0x60ca('0x1e')](_0x993da2[_0x60ca('0x1f')],{'email':_0x49a062,'role':'agent'});}else{logger['info'](_0x60ca('0x20'));return request({'uri':util[_0x60ca('0xe')](_0x60ca('0x21'),_0x1dea8c['remoteUri'])})[_0x60ca('0x15')](function(_0x210467){logger[_0x60ca('0x16')](_0x60ca('0x22'));return _0x210467['user'];});}});}else{logger[_0x60ca('0x16')](_0x60ca('0x20'));return request({'uri':util[_0x60ca('0xe')](_0x60ca('0x21'),_0x1dea8c[_0x60ca('0x1b')])})[_0x60ca('0x15')](function(_0x3f4a66){logger[_0x60ca('0x16')](_0x60ca('0x22'));return _0x3f4a66[_0x60ca('0x23')];});}}function getEndUser(_0x366b42,_0x45cf9,_0xc735f2){logger[_0x60ca('0x16')](_0x60ca('0x24'),_0xc735f2);return request({'uri':util[_0x60ca('0xe')]('%s/search.json',_0x366b42[_0x60ca('0x1b')]),'qs':{'query':util[_0x60ca('0xe')](_0x60ca('0x25'),_0xc735f2)}})[_0x60ca('0x15')](function(_0x54bb85){var _0x5c6526;if(_0x54bb85['results'][_0x60ca('0x26')]){_0x54bb85[_0x60ca('0x1f')]=_[_0x60ca('0x27')](_0x54bb85[_0x60ca('0x1f')],{'suspended':![],'role':_0x60ca('0x28')});if(_0x54bb85[_0x60ca('0x1f')][_0x60ca('0x26')]){_0x5c6526=_[_0x60ca('0x29')](_0x54bb85[_0x60ca('0x1f')]);}}if(_0x5c6526){logger[_0x60ca('0x16')](_0x60ca('0x2a'));return _0x5c6526;}else{logger[_0x60ca('0x16')](_0x60ca('0x2b'));return request({'uri':util[_0x60ca('0xe')]('%s/users.json',_0x366b42[_0x60ca('0x1b')]),'method':_0x60ca('0xf'),'body':{'user':{'role':_0x60ca('0x28'),'name':util['format'](_0x60ca('0x2c'),_0x45cf9||_0xc735f2),'phone':_0xc735f2}}})[_0x60ca('0x15')](function(_0x59e4ff){logger['info'](_0x60ca('0x2d'));return _0x59e4ff[_0x60ca('0x23')];});}});}function getAuth(_0x1ba2f7){var _0x127fb0;if(_0x1ba2f7['authType']===_0x60ca('0x2e')){_0x127fb0=util[_0x60ca('0xe')](_0x60ca('0x2f'),_0x1ba2f7[_0x60ca('0x30')],_0x1ba2f7[_0x60ca('0x2e')]);}else if(_0x1ba2f7[_0x60ca('0x31')]===_0x60ca('0x32')){_0x127fb0=util['format'](_0x60ca('0x33'),_0x1ba2f7['username'],_0x1ba2f7['token']);}return util['format'](_0x60ca('0x34'),new Buffer(_0x127fb0)[_0x60ca('0x35')](_0x60ca('0x36')));}function request(_0x2a0460){logger[_0x60ca('0x37')]('[HTTP]',JSON[_0x60ca('0x38')](_0x2a0460));return rp(_[_0x60ca('0xa')](_0x2a0460,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x14d6c3,_0x1849a1){var _0x1410e7=[];if(_0x14d6c3&&_0x14d6c3[_0x60ca('0x26')]>0x0){_0x1410e7=_['map'](_0x14d6c3,_0x1849a1);}return _0x1410e7;}function getCustomFields(_0xc4f351,_0x2d832d){var _0x4e7ba0=[];var _0x1a53e9={'custom_fields':[]};if(_0xc4f351[_0x60ca('0x26')]>0x0){_[_0x60ca('0x39')](_0xc4f351,function(_0x57ecde){if(_[_0x60ca('0x3a')]([_0x60ca('0x3b'),'picklist'],_0x57ecde[_0x60ca('0x3c')])&&_0x57ecde['nameField']&&!_0x57ecde[_0x60ca('0x3d')]){_0x1a53e9[_0x57ecde[_0x60ca('0x3e')]['toLowerCase']()]=_0x57ecde['content'][_0x60ca('0x35')]();}else if(_[_0x60ca('0x3a')](['string',_0x60ca('0x3f')],_0x57ecde[_0x60ca('0x3c')])&&_0x57ecde['idField']&&_0x57ecde[_0x60ca('0x3d')]){_0x1a53e9[_0x60ca('0x40')]['push']({'id':_0x57ecde[_0x60ca('0x41')],'value':_0x57ecde['content'][_0x60ca('0x35')]()});}else if(_0x57ecde[_0x60ca('0x3c')]===_0x60ca('0x42')&&_0x57ecde[_0x60ca('0x43')]&&_0x57ecde[_0x60ca('0x41')]&&_0x57ecde[_0x60ca('0x3d')]){_0x2d832d[_0x57ecde['variableName']]&&_0x1a53e9[_0x60ca('0x40')][_0x60ca('0x44')]({'id':_0x57ecde['idField'],'value':_0x2d832d[_0x57ecde[_0x60ca('0x43')]]['toString']()});}else if(_0x57ecde[_0x60ca('0x3c')]===_0x60ca('0x45')&&_0x57ecde['Variable']&&_0x57ecde[_0x60ca('0x46')][_0x60ca('0x10')]&&_0x57ecde[_0x60ca('0x41')]&&_0x57ecde['customField']){_0x2d832d[_0x57ecde[_0x60ca('0x46')][_0x60ca('0x10')]['toLowerCase']()]&&_0x1a53e9['custom_fields'][_0x60ca('0x44')]({'id':_0x57ecde['idField'],'value':_0x2d832d[_0x57ecde['Variable'][_0x60ca('0x10')][_0x60ca('0x47')]()][_0x60ca('0x35')]()});}});}return _0x1a53e9;}exports['queue']=function(_0x5e03db,_0x3343a5,_0x35a0dc,_0x1b6440,_0x8333d,_0x35b5ca){var _0x29f737,_0x3da1c8;_0x35b5ca[_0x60ca('0x1b')]=intUtil[_0x60ca('0x48')](_0x35b5ca[_0x60ca('0x1b')]);_0x35b5ca[_0x60ca('0x49')]=intUtil['stripTrailingSlash'](_0x35b5ca[_0x60ca('0x49')]);if(_0x8333d&&_0x8333d[_0x60ca('0x4a')]){logger[_0x60ca('0x16')]('[QUEUE]',_0x60ca('0x4b'));_0x3343a5[_0x60ca('0x4c')]=util[_0x60ca('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35b5ca[_0x60ca('0x49')],_0x3343a5['uniqueid'],md5(_0x3343a5[_0x60ca('0x4d')]));}else{_0x3343a5['recordingURL']='';}headers[_0x60ca('0x4e')]=getAuth(_0x35b5ca);return getUser(_0x35b5ca,_0x1b6440[_0x60ca('0x4f')])[_0x60ca('0x15')](function(_0x38af57){_0x29f737=_0x38af57;logger[_0x60ca('0x16')](_0x60ca('0x50'),_0x29f737['id']);return getEndUser(_0x35b5ca,_0x3343a5['calleridname'],_0x3343a5[_0x60ca('0x51')]);})[_0x60ca('0x15')](function(_0x251b5a){_0x3da1c8=_0x251b5a;logger[_0x60ca('0x16')](_0x60ca('0x52'),_0x3da1c8['id']);return getTicket(_0x35b5ca,_0x29f737,_0x3da1c8,_0x35a0dc,_0x3343a5);})[_0x60ca('0x15')](function(_0x2d701d){if(_0x2d701d){logger[_0x60ca('0x16')](_0x60ca('0x53'),_0x2d701d['id']);switch(_0x35b5ca[_0x60ca('0x3c')]){case'integrationTab':logger[_0x60ca('0x16')](_0x60ca('0x54'),_0x60ca('0x55'));return request({'uri':util[_0x60ca('0xe')](_0x60ca('0x56'),_0x35b5ca[_0x60ca('0x1b')],_0x29f737['id'],_0x2d701d['id']),'method':_0x60ca('0xf')});case _0x60ca('0x57'):logger['info'](_0x60ca('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x60ca('0x58'),_0x1b6440[_0x60ca('0x10')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x35b5ca[_0x60ca('0x1b')][_0x60ca('0x59')]('/api/v2',''),_0x2d701d['id'])});break;default:logger['error'](_0x60ca('0x54'),_0x60ca('0x5a'));}}})[_0x60ca('0x5b')](function(_0x28e251){logger[_0x60ca('0x5c')](_0x60ca('0x5d'),util[_0x60ca('0x5e')](_0x28e251,{'showHidden':!![],'depth':null}));});};exports[_0x60ca('0x5f')]=function(_0x4c525c,_0x114c62,_0x1d3da8,_0x156626,_0xddd422,_0x165965,_0x652b95){var _0x91ddd6,_0x44e150;_0x165965[_0x60ca('0x1b')]=intUtil[_0x60ca('0x48')](_0x165965['remoteUri']);_0x165965[_0x60ca('0x49')]=intUtil[_0x60ca('0x48')](_0x165965[_0x60ca('0x49')]);if(_0x652b95&&_0x652b95[_0x60ca('0x60')]&&_0x652b95[_0x60ca('0x60')]!==_0x60ca('0x61')){logger[_0x60ca('0x16')](_0x60ca('0x62'),_0x60ca('0x4b'));_0x114c62[_0x60ca('0x4c')]=util[_0x60ca('0xe')](_0x60ca('0x63'),_0x165965[_0x60ca('0x49')],_0x114c62[_0x60ca('0x4d')],md5(_0x114c62[_0x60ca('0x4d')]));}headers[_0x60ca('0x4e')]=getAuth(_0x165965);return getUser(_0x165965,_0x156626[_0x60ca('0x4f')])[_0x60ca('0x15')](function(_0x134c40){_0x91ddd6=_0x134c40;logger[_0x60ca('0x16')](_0x60ca('0x50'),_0x91ddd6['id']);return getEndUser(_0x165965,_0x114c62[_0x60ca('0x64')],_0x114c62[_0x60ca('0x65')]);})[_0x60ca('0x15')](function(_0xb98abe){_0x44e150=_0xb98abe;logger[_0x60ca('0x16')](_0x60ca('0x52'),_0x44e150['id']);return getTicket(_0x165965,_0x91ddd6,_0x44e150,_0x1d3da8,_0x114c62);})[_0x60ca('0x15')](function(_0x56c04c){if(_0x56c04c){logger[_0x60ca('0x16')](_0x60ca('0x53'),_0x56c04c['id']);switch(_0x165965['type']){case _0x60ca('0x66'):logger[_0x60ca('0x16')]('[OUTBOUND]',_0x60ca('0x55'));return request({'uri':util[_0x60ca('0xe')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x165965[_0x60ca('0x1b')],_0x91ddd6['id'],_0x56c04c['id']),'method':_0x60ca('0xf')});case _0x60ca('0x57'):logger[_0x60ca('0x16')](_0x60ca('0x62'),_0x60ca('0x67'));emit(util[_0x60ca('0xe')](_0x60ca('0x58'),_0x156626[_0x60ca('0x10')]),_0x60ca('0x68'),{'uri':util[_0x60ca('0xe')](_0x60ca('0x69'),_0x165965[_0x60ca('0x1b')][_0x60ca('0x59')](_0x60ca('0x6a'),''),_0x56c04c['id'])});break;default:logger[_0x60ca('0x5c')]('[OUTBOUND]',_0x60ca('0x5a'));}}})[_0x60ca('0x5b')](function(_0x546c60){logger[_0x60ca('0x5c')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x60ca('0x5e')](_0x546c60,{'showHidden':!![],'depth':null}));});};exports[_0x60ca('0x6b')]=function(_0x501936,_0x4fd103,_0x5e4947,_0x5e7006,_0x2181f7,_0x83172c){var _0xe4b780,_0x114b26;_0x83172c[_0x60ca('0x1b')]=intUtil[_0x60ca('0x48')](_0x83172c['remoteUri']);_0x83172c[_0x60ca('0x49')]=intUtil['stripTrailingSlash'](_0x83172c[_0x60ca('0x49')]);if(_0x2181f7&&_0x2181f7['monitor_format']){logger['info']('['+_0x4fd103[_0x60ca('0x6c')][_0x60ca('0x6d')]()+']',_0x60ca('0x4b'));_0x4fd103[_0x60ca('0x4c')]=util[_0x60ca('0xe')](_0x60ca('0x63'),_0x83172c[_0x60ca('0x49')],_0x4fd103[_0x60ca('0x4d')],md5(_0x4fd103[_0x60ca('0x4d')]));}else{_0x4fd103[_0x60ca('0x4c')]='';}headers['Authorization']=getAuth(_0x83172c);return getUser(_0x83172c)[_0x60ca('0x15')](function(_0x1da358){_0xe4b780=_0x1da358;logger[_0x60ca('0x16')]('The\x20User\x20ID\x20is:',_0xe4b780['id']);return getEndUser(_0x83172c,_0x4fd103[_0x60ca('0x6e')],_0x4fd103[_0x60ca('0x51')]);})[_0x60ca('0x15')](function(_0x4f3a5d){_0x114b26=_0x4f3a5d;logger[_0x60ca('0x16')](_0x60ca('0x52'),_0x114b26['id']);return getTicket(_0x83172c,_0xe4b780,_0x114b26,_0x5e4947,_0x4fd103);})[_0x60ca('0x15')](function(_0x3541ad){if(_0x3541ad){logger['info'](_0x60ca('0x53'),_0x3541ad['id']);}})[_0x60ca('0x5b')](function(_0x259059){logger[_0x60ca('0x5c')]('['+_0x4fd103['lastevent'][_0x60ca('0x6d')]()+']'+_0x60ca('0x6f'),util[_0x60ca('0x5e')](_0x259059,{'showHidden':!![],'depth':null}));});};