ad68196144c77ddd0efd0069fa4db3e1686b1876
[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 _0x1ee2=['%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','GET','length','map','forEach','type','string','nameField','customField','toLowerCase','content','push','idField','variableName','custom_fields','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','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...','trigger:browser:url','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','The\x20Enduser\x20ID\x20is:','user:%s','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','abandoned','monitor_format','[ABANDONED]\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','emit','application/json','%s/tickets.json','remoteUri','POST','merge','name','getString','Subjects','Descriptions','then','info','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','results','%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','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0x1ee2,0x11c));var _0x21ee=function(_0x31aa43,_0x295c18){_0x31aa43=_0x31aa43-0x0;var _0x2f297c=_0x1ee2[_0x31aa43];return _0x2f297c;};'use strict';var _=require(_0x21ee('0x0'));var rp=require(_0x21ee('0x1'));var md5=require(_0x21ee('0x2'));var util=require(_0x21ee('0x3'));var Redis=require(_0x21ee('0x4'));var intUtil=require('./util');var config=require(_0x21ee('0x5'));var logger=require(_0x21ee('0x6'))('zendesk');config['redis']=_[_0x21ee('0x7')](config[_0x21ee('0x8')],{'host':_0x21ee('0x9'),'port':0x18eb});var io=require(_0x21ee('0xa'))(new Redis(config['redis']));function emit(_0x361e58,_0x207f5b,_0x38588c){io['to'](_0x361e58)[_0x21ee('0xb')](_0x207f5b,_0x38588c);}var headers={'Content-Type':_0x21ee('0xc'),'Accept':_0x21ee('0xc')};function getTicket(_0x2ad5af,_0x2e33ad,_0x26df7a,_0x2dbb98,_0x3cb4a8){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util['format'](_0x21ee('0xd'),_0x2ad5af[_0x21ee('0xe')]),'method':_0x21ee('0xf'),'body':{'ticket':_[_0x21ee('0x10')]({'requester_id':_0x26df7a['id'],'submitter_id':_0x2e33ad?_0x2e33ad['id']:undefined,'assignee_id':_0x2e33ad?_0x2e33ad['id']:undefined,'tags':getTags(_0x2dbb98['Tags'],_0x21ee('0x11')),'subject':intUtil[_0x21ee('0x12')](_0x2dbb98[_0x21ee('0x13')],_0x3cb4a8,'\x20'),'description':intUtil[_0x21ee('0x12')](_0x2dbb98[_0x21ee('0x14')],_0x3cb4a8,'\x0a'),'comment':{'public':![],'body':intUtil[_0x21ee('0x12')](_0x2dbb98[_0x21ee('0x14')],_0x3cb4a8,'\x0a')}},getCustomFields(_0x2dbb98['Fields'],_0x3cb4a8))}})[_0x21ee('0x15')](function(_0x15d49e){logger[_0x21ee('0x16')](_0x21ee('0x17'));return _0x15d49e[_0x21ee('0x18')];});}function getUser(_0x2b2889,_0x5830ab){if(intUtil[_0x21ee('0x19')](_0x5830ab)){logger[_0x21ee('0x16')](_0x21ee('0x1a'),_0x5830ab);return request({'uri':util[_0x21ee('0x1b')](_0x21ee('0x1c'),_0x2b2889[_0x21ee('0xe')]),'qs':{'query':util[_0x21ee('0x1b')](_0x21ee('0x1d'),_0x5830ab)}})[_0x21ee('0x15')](function(_0x425eea){if(_0x425eea[_0x21ee('0x1e')]){logger[_0x21ee('0x16')]('Agent\x20found!');return _[_0x21ee('0x1f')](_0x425eea[_0x21ee('0x20')],{'email':_0x5830ab,'role':'agent'});}else{logger[_0x21ee('0x16')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x21ee('0x1b')](_0x21ee('0x21'),_0x2b2889[_0x21ee('0xe')])})[_0x21ee('0x15')](function(_0x29e042){logger[_0x21ee('0x16')](_0x21ee('0x22'));return _0x29e042[_0x21ee('0x23')];});}});}else{logger['info'](_0x21ee('0x24'));return request({'uri':util[_0x21ee('0x1b')]('%s/users/me.json',_0x2b2889[_0x21ee('0xe')])})['then'](function(_0x26de0e){logger[_0x21ee('0x16')](_0x21ee('0x22'));return _0x26de0e['user'];});}}function getEndUser(_0x3de275,_0x5d8826,_0x24671b){logger[_0x21ee('0x16')](_0x21ee('0x25'),_0x24671b);return request({'uri':util['format'](_0x21ee('0x1c'),_0x3de275['remoteUri']),'qs':{'query':util[_0x21ee('0x1b')](_0x21ee('0x26'),_0x24671b)}})['then'](function(_0x40b1a2){var _0x32d969;if(_0x40b1a2[_0x21ee('0x20')]['length']){_0x40b1a2[_0x21ee('0x20')]=_[_0x21ee('0x27')](_0x40b1a2[_0x21ee('0x20')],{'suspended':![],'role':'end-user'});if(_0x40b1a2[_0x21ee('0x20')]['length']){_0x32d969=_[_0x21ee('0x28')](_0x40b1a2[_0x21ee('0x20')]);}}if(_0x32d969){logger[_0x21ee('0x16')](_0x21ee('0x29'));return _0x32d969;}else{logger[_0x21ee('0x16')](_0x21ee('0x2a'));return request({'uri':util[_0x21ee('0x1b')](_0x21ee('0x2b'),_0x3de275['remoteUri']),'method':_0x21ee('0xf'),'body':{'user':{'role':_0x21ee('0x2c'),'name':util[_0x21ee('0x1b')](_0x21ee('0x2d'),_0x5d8826||_0x24671b),'phone':_0x24671b}}})[_0x21ee('0x15')](function(_0x128e1e){logger[_0x21ee('0x16')](_0x21ee('0x2e'));return _0x128e1e['user'];});}});}function getAuth(_0x4d13bf){var _0xbc6325;if(_0x4d13bf[_0x21ee('0x2f')]===_0x21ee('0x30')){_0xbc6325=util['format'](_0x21ee('0x31'),_0x4d13bf[_0x21ee('0x32')],_0x4d13bf[_0x21ee('0x30')]);}else if(_0x4d13bf[_0x21ee('0x2f')]===_0x21ee('0x33')){_0xbc6325=util[_0x21ee('0x1b')](_0x21ee('0x34'),_0x4d13bf[_0x21ee('0x32')],_0x4d13bf[_0x21ee('0x33')]);}return util[_0x21ee('0x1b')](_0x21ee('0x35'),new Buffer(_0xbc6325)[_0x21ee('0x36')](_0x21ee('0x37')));}function request(_0x12c787){logger[_0x21ee('0x38')]('[HTTP]',JSON['stringify'](_0x12c787));return rp(_[_0x21ee('0x7')](_0x12c787,{'method':_0x21ee('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x5cdd43,_0x1319fb){var _0x37e31d=[];if(_0x5cdd43&&_0x5cdd43[_0x21ee('0x3a')]>0x0){_0x37e31d=_[_0x21ee('0x3b')](_0x5cdd43,_0x1319fb);}return _0x37e31d;}function getCustomFields(_0x5ab2ee,_0x272696){var _0x3349b3=[];var _0xb23e9a={'custom_fields':[]};if(_0x5ab2ee['length']>0x0){_[_0x21ee('0x3c')](_0x5ab2ee,function(_0x1e484c){if(_0x1e484c[_0x21ee('0x3d')]===_0x21ee('0x3e')&&_0x1e484c[_0x21ee('0x3f')]&&!_0x1e484c[_0x21ee('0x40')]){_0xb23e9a[_0x1e484c[_0x21ee('0x3f')][_0x21ee('0x41')]()]=_0x1e484c[_0x21ee('0x42')][_0x21ee('0x36')]();}else if(_0x1e484c[_0x21ee('0x3d')]===_0x21ee('0x3e')&&_0x1e484c['idField']&&_0x1e484c[_0x21ee('0x40')]){_0xb23e9a['custom_fields'][_0x21ee('0x43')]({'id':_0x1e484c['idField'],'value':_0x1e484c[_0x21ee('0x42')][_0x21ee('0x36')]()});}else if(_0x1e484c['type']==='variable'&&_0x1e484c['variableName']&&_0x1e484c[_0x21ee('0x44')]&&_0x1e484c[_0x21ee('0x40')]){_0x272696[_0x1e484c[_0x21ee('0x45')]]&&_0xb23e9a[_0x21ee('0x46')][_0x21ee('0x43')]({'id':_0x1e484c[_0x21ee('0x44')],'value':_0x272696[_0x1e484c[_0x21ee('0x45')]][_0x21ee('0x36')]()});}else if(_0x1e484c[_0x21ee('0x3d')]===_0x21ee('0x47')&&_0x1e484c[_0x21ee('0x48')]&&_0x1e484c[_0x21ee('0x48')][_0x21ee('0x11')]&&_0x1e484c['idField']&&_0x1e484c['customField']){_0x272696[_0x1e484c['Variable'][_0x21ee('0x11')][_0x21ee('0x41')]()]&&_0xb23e9a[_0x21ee('0x46')][_0x21ee('0x43')]({'id':_0x1e484c[_0x21ee('0x44')],'value':_0x272696[_0x1e484c[_0x21ee('0x48')][_0x21ee('0x11')][_0x21ee('0x41')]()][_0x21ee('0x36')]()});}});}return _0xb23e9a;}exports[_0x21ee('0x49')]=function(_0x18abf3,_0x273f5b,_0x222254,_0x790a8e,_0x2ce061,_0x2151e4){var _0x19a115,_0x2658ca;_0x2151e4[_0x21ee('0xe')]=intUtil[_0x21ee('0x4a')](_0x2151e4[_0x21ee('0xe')]);_0x2151e4[_0x21ee('0x4b')]=intUtil[_0x21ee('0x4a')](_0x2151e4[_0x21ee('0x4b')]);if(_0x2ce061&&_0x2ce061['monitor_format']){logger['info'](_0x21ee('0x4c'),_0x21ee('0x4d'));_0x273f5b[_0x21ee('0x4e')]=util[_0x21ee('0x1b')](_0x21ee('0x4f'),_0x2151e4['serverUrl'],_0x273f5b[_0x21ee('0x50')],md5(_0x273f5b[_0x21ee('0x50')]));}else{_0x273f5b['recordingURL']='';}headers[_0x21ee('0x51')]=getAuth(_0x2151e4);return getUser(_0x2151e4,_0x790a8e[_0x21ee('0x52')])[_0x21ee('0x15')](function(_0x15c02b){_0x19a115=_0x15c02b;logger[_0x21ee('0x16')]('The\x20User\x20ID\x20is:',_0x19a115['id']);return getEndUser(_0x2151e4,_0x273f5b[_0x21ee('0x53')],_0x273f5b[_0x21ee('0x54')]);})['then'](function(_0x89335a){_0x2658ca=_0x89335a;logger[_0x21ee('0x16')]('The\x20Enduser\x20ID\x20is:',_0x2658ca['id']);return getTicket(_0x2151e4,_0x19a115,_0x2658ca,_0x222254,_0x273f5b);})['then'](function(_0xf8643d){if(_0xf8643d){logger[_0x21ee('0x16')](_0x21ee('0x55'),_0xf8643d['id']);switch(_0x2151e4[_0x21ee('0x3d')]){case _0x21ee('0x56'):logger[_0x21ee('0x16')](_0x21ee('0x4c'),_0x21ee('0x57'));return request({'uri':util[_0x21ee('0x1b')](_0x21ee('0x58'),_0x2151e4[_0x21ee('0xe')],_0x19a115['id'],_0xf8643d['id']),'method':'POST'});case _0x21ee('0x59'):logger[_0x21ee('0x16')](_0x21ee('0x4c'),_0x21ee('0x5a'));emit(util[_0x21ee('0x1b')]('user:%s',_0x790a8e[_0x21ee('0x11')]),_0x21ee('0x5b'),{'uri':util[_0x21ee('0x1b')]('%s/agent/tickets/%s',_0x2151e4[_0x21ee('0xe')],_0xf8643d['id'])});break;default:logger[_0x21ee('0x5c')]('[QUEUE]',_0x21ee('0x5d'));}}})[_0x21ee('0x5e')](function(_0x3d6525){logger[_0x21ee('0x5c')](_0x21ee('0x5f'),util[_0x21ee('0x60')](_0x3d6525,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x21e9f6,_0x11668c,_0x136070,_0x444e21,_0x5ea31a,_0x433cf5,_0x2025e0){var _0xc2c8fc,_0x4cf55c;_0x433cf5['remoteUri']=intUtil['stripTrailingSlash'](_0x433cf5[_0x21ee('0xe')]);_0x433cf5[_0x21ee('0x4b')]=intUtil[_0x21ee('0x4a')](_0x433cf5[_0x21ee('0x4b')]);if(_0x2025e0&&_0x2025e0[_0x21ee('0x61')]&&_0x2025e0[_0x21ee('0x61')]!==_0x21ee('0x62')){logger[_0x21ee('0x16')](_0x21ee('0x63'),_0x21ee('0x4d'));_0x11668c[_0x21ee('0x4e')]=util[_0x21ee('0x1b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x433cf5['serverUrl'],_0x11668c[_0x21ee('0x50')],md5(_0x11668c['uniqueid']));}headers[_0x21ee('0x51')]=getAuth(_0x433cf5);return getUser(_0x433cf5,_0x444e21[_0x21ee('0x52')])[_0x21ee('0x15')](function(_0x52444e){_0xc2c8fc=_0x52444e;logger[_0x21ee('0x16')](_0x21ee('0x64'),_0xc2c8fc['id']);return getEndUser(_0x433cf5,_0x11668c[_0x21ee('0x65')],_0x11668c['destcalleridnum']);})['then'](function(_0x1a0efd){_0x4cf55c=_0x1a0efd;logger[_0x21ee('0x16')](_0x21ee('0x66'),_0x4cf55c['id']);return getTicket(_0x433cf5,_0xc2c8fc,_0x4cf55c,_0x136070,_0x11668c);})[_0x21ee('0x15')](function(_0x48e81c){if(_0x48e81c){logger[_0x21ee('0x16')](_0x21ee('0x55'),_0x48e81c['id']);switch(_0x433cf5[_0x21ee('0x3d')]){case _0x21ee('0x56'):logger[_0x21ee('0x16')](_0x21ee('0x63'),_0x21ee('0x57'));return request({'uri':util['format'](_0x21ee('0x58'),_0x433cf5[_0x21ee('0xe')],_0xc2c8fc['id'],_0x48e81c['id']),'method':'POST'});case _0x21ee('0x59'):logger[_0x21ee('0x16')]('[OUTBOUND]',_0x21ee('0x5a'));emit(util[_0x21ee('0x1b')](_0x21ee('0x67'),_0x444e21[_0x21ee('0x11')]),_0x21ee('0x5b'),{'uri':util['format'](_0x21ee('0x68'),_0x433cf5[_0x21ee('0xe')],_0x48e81c['id'])});break;default:logger[_0x21ee('0x5c')](_0x21ee('0x63'),_0x21ee('0x5d'));}}})['catch'](function(_0x78a141){logger['error'](_0x21ee('0x69'),util[_0x21ee('0x60')](_0x78a141,{'showHidden':!![],'depth':null}));});};exports[_0x21ee('0x6a')]=function(_0x341e26,_0x4d89d8,_0x31eb1d,_0x480c21,_0x241af1,_0x18212c){var _0xa2309,_0x1ac1f8;_0x18212c['remoteUri']=intUtil[_0x21ee('0x4a')](_0x18212c[_0x21ee('0xe')]);_0x18212c[_0x21ee('0x4b')]=intUtil[_0x21ee('0x4a')](_0x18212c[_0x21ee('0x4b')]);if(_0x241af1&&_0x241af1[_0x21ee('0x6b')]){logger['info']('[ABANDONED]',_0x21ee('0x4d'));_0x4d89d8[_0x21ee('0x4e')]=util[_0x21ee('0x1b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x18212c[_0x21ee('0x4b')],_0x4d89d8['uniqueid'],md5(_0x4d89d8[_0x21ee('0x50')]));}else{_0x4d89d8[_0x21ee('0x4e')]='';}headers[_0x21ee('0x51')]=getAuth(_0x18212c);return getUser(_0x18212c)[_0x21ee('0x15')](function(_0x177f56){_0xa2309=_0x177f56;logger[_0x21ee('0x16')](_0x21ee('0x64'),_0xa2309['id']);return getEndUser(_0x18212c,_0x4d89d8['calleridname'],_0x4d89d8[_0x21ee('0x54')]);})[_0x21ee('0x15')](function(_0x3dfa13){_0x1ac1f8=_0x3dfa13;logger[_0x21ee('0x16')]('The\x20Enduser\x20ID\x20is:',_0x1ac1f8['id']);return getTicket(_0x18212c,_0xa2309,_0x1ac1f8,_0x31eb1d,_0x4d89d8);})[_0x21ee('0x15')](function(_0x439d25){if(_0x439d25){logger[_0x21ee('0x16')](_0x21ee('0x55'),_0x439d25['id']);}})[_0x21ee('0x5e')](function(_0x5cadaa){logger[_0x21ee('0x5c')](_0x21ee('0x6c'),util[_0x21ee('0x60')](_0x5cadaa,{'showHidden':!![],'depth':null}));});};