Built motion from commit (unavailable).|2.5.21
[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 _0x0fbd=['then','Ticket\x20created!','ticket','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','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!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s/token:%s','username','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','map','type','string','nameField','customField','toLowerCase','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','email','destcalleridname','[OUTBOUND]','user:%s','/api/v2','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','calleridnum','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','format','POST','merge','Tags','name','getString','Descriptions','Fields'];(function(_0x5a5379,_0x58dee3){var _0x419fcc=function(_0x50cd03){while(--_0x50cd03){_0x5a5379['push'](_0x5a5379['shift']());}};_0x419fcc(++_0x58dee3);}(_0x0fbd,0x1ef));var _0xd0fb=function(_0x3c8068,_0x313b86){_0x3c8068=_0x3c8068-0x0;var _0x25eacb=_0x0fbd[_0x3c8068];return _0x25eacb;};'use strict';var _=require(_0xd0fb('0x0'));var rp=require(_0xd0fb('0x1'));var md5=require(_0xd0fb('0x2'));var util=require(_0xd0fb('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xd0fb('0x4'));var logger=require('../../../../config/logger')('zendesk');config[_0xd0fb('0x5')]=_[_0xd0fb('0x6')](config[_0xd0fb('0x5')],{'host':_0xd0fb('0x7'),'port':0x18eb});var io=require(_0xd0fb('0x8'))(new Redis(config[_0xd0fb('0x5')]));function emit(_0x453751,_0x293513,_0x3b14c6){io['to'](_0x453751)[_0xd0fb('0x9')](_0x293513,_0x3b14c6);}var headers={'Content-Type':_0xd0fb('0xa'),'Accept':_0xd0fb('0xa')};function getTicket(_0x35bcbb,_0xe7c4de,_0x1a87e5,_0x121a81,_0x3344b5){logger[_0xd0fb('0xb')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xd0fb('0xc')]('%s/tickets.json',_0x35bcbb['remoteUri']),'method':_0xd0fb('0xd'),'body':{'ticket':_[_0xd0fb('0xe')]({'requester_id':_0x1a87e5['id'],'submitter_id':_0xe7c4de?_0xe7c4de['id']:undefined,'assignee_id':_0xe7c4de?_0xe7c4de['id']:undefined,'tags':getTags(_0x121a81[_0xd0fb('0xf')],_0xd0fb('0x10')),'subject':intUtil[_0xd0fb('0x11')](_0x121a81['Subjects'],_0x3344b5,'\x20'),'description':intUtil[_0xd0fb('0x11')](_0x121a81[_0xd0fb('0x12')],_0x3344b5,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x121a81[_0xd0fb('0x12')],_0x3344b5,'\x0a')}},getCustomFields(_0x121a81[_0xd0fb('0x13')],_0x3344b5))}})[_0xd0fb('0x14')](function(_0x5cc814){logger[_0xd0fb('0xb')](_0xd0fb('0x15'));return _0x5cc814[_0xd0fb('0x16')];});}function getUser(_0x21c0c4,_0x1a4c55){if(intUtil['validateEmail'](_0x1a4c55)){logger['info']('Getting\x20agent\x20with\x20email',_0x1a4c55);return request({'uri':util[_0xd0fb('0xc')](_0xd0fb('0x17'),_0x21c0c4[_0xd0fb('0x18')]),'qs':{'query':util[_0xd0fb('0xc')](_0xd0fb('0x19'),_0x1a4c55)}})[_0xd0fb('0x14')](function(_0x461b0b){if(_0x461b0b[_0xd0fb('0x1a')]){logger[_0xd0fb('0xb')](_0xd0fb('0x1b'));return _[_0xd0fb('0x1c')](_0x461b0b['results'],{'email':_0x1a4c55,'role':_0xd0fb('0x1d')});}else{logger[_0xd0fb('0xb')](_0xd0fb('0x1e'));return request({'uri':util[_0xd0fb('0xc')](_0xd0fb('0x1f'),_0x21c0c4[_0xd0fb('0x18')])})[_0xd0fb('0x14')](function(_0x72ab52){logger[_0xd0fb('0xb')]('Admin\x20account\x20selected.');return _0x72ab52[_0xd0fb('0x20')];});}});}else{logger[_0xd0fb('0xb')](_0xd0fb('0x1e'));return request({'uri':util[_0xd0fb('0xc')](_0xd0fb('0x1f'),_0x21c0c4[_0xd0fb('0x18')])})[_0xd0fb('0x14')](function(_0x5db31f){logger['info']('Admin\x20account\x20selected.');return _0x5db31f[_0xd0fb('0x20')];});}}function getEndUser(_0x5dacb0,_0x177b7b,_0x11ed6){logger[_0xd0fb('0xb')](_0xd0fb('0x21'),_0x11ed6);return request({'uri':util[_0xd0fb('0xc')](_0xd0fb('0x17'),_0x5dacb0[_0xd0fb('0x18')]),'qs':{'query':util['format'](_0xd0fb('0x22'),_0x11ed6)}})[_0xd0fb('0x14')](function(_0x15da5a){var _0x127640;if(_0x15da5a[_0xd0fb('0x23')][_0xd0fb('0x24')]){_0x15da5a[_0xd0fb('0x23')]=_[_0xd0fb('0x25')](_0x15da5a['results'],{'suspended':![],'role':_0xd0fb('0x26')});if(_0x15da5a[_0xd0fb('0x23')][_0xd0fb('0x24')]){_0x127640=_[_0xd0fb('0x27')](_0x15da5a[_0xd0fb('0x23')]);}}if(_0x127640){logger[_0xd0fb('0xb')](_0xd0fb('0x28'));return _0x127640;}else{logger[_0xd0fb('0xb')](_0xd0fb('0x29'));return request({'uri':util[_0xd0fb('0xc')]('%s/users.json',_0x5dacb0[_0xd0fb('0x18')]),'method':_0xd0fb('0xd'),'body':{'user':{'role':_0xd0fb('0x26'),'name':util['format'](_0xd0fb('0x2a'),_0x177b7b||_0x11ed6),'phone':_0x11ed6}}})[_0xd0fb('0x14')](function(_0x3a435b){logger[_0xd0fb('0xb')](_0xd0fb('0x2b'));return _0x3a435b[_0xd0fb('0x20')];});}});}function getAuth(_0x877960){var _0x24c40e;if(_0x877960[_0xd0fb('0x2c')]==='password'){_0x24c40e=util['format']('%s:%s',_0x877960['username'],_0x877960[_0xd0fb('0x2d')]);}else if(_0x877960[_0xd0fb('0x2c')]==='token'){_0x24c40e=util[_0xd0fb('0xc')](_0xd0fb('0x2e'),_0x877960[_0xd0fb('0x2f')],_0x877960[_0xd0fb('0x30')]);}return util['format'](_0xd0fb('0x31'),new Buffer(_0x24c40e)[_0xd0fb('0x32')](_0xd0fb('0x33')));}function request(_0x32554e){logger[_0xd0fb('0x34')](_0xd0fb('0x35'),JSON[_0xd0fb('0x36')](_0x32554e));return rp(_[_0xd0fb('0x6')](_0x32554e,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0xb5e1eb,_0x2c71f6){var _0x1c3492=[];if(_0xb5e1eb&&_0xb5e1eb[_0xd0fb('0x24')]>0x0){_0x1c3492=_[_0xd0fb('0x37')](_0xb5e1eb,_0x2c71f6);}return _0x1c3492;}function getCustomFields(_0x397ee5,_0x343522){var _0x11ac00=[];var _0x57aa2d={'custom_fields':[]};if(_0x397ee5[_0xd0fb('0x24')]>0x0){_['forEach'](_0x397ee5,function(_0x5f2a4c){if(_0x5f2a4c[_0xd0fb('0x38')]===_0xd0fb('0x39')&&_0x5f2a4c[_0xd0fb('0x3a')]&&!_0x5f2a4c[_0xd0fb('0x3b')]){_0x57aa2d[_0x5f2a4c[_0xd0fb('0x3a')][_0xd0fb('0x3c')]()]=_0x5f2a4c[_0xd0fb('0x3d')][_0xd0fb('0x32')]();}else if(_0x5f2a4c[_0xd0fb('0x38')]===_0xd0fb('0x39')&&_0x5f2a4c[_0xd0fb('0x3e')]&&_0x5f2a4c[_0xd0fb('0x3b')]){_0x57aa2d[_0xd0fb('0x3f')][_0xd0fb('0x40')]({'id':_0x5f2a4c[_0xd0fb('0x3e')],'value':_0x5f2a4c[_0xd0fb('0x3d')][_0xd0fb('0x32')]()});}else if(_0x5f2a4c[_0xd0fb('0x38')]===_0xd0fb('0x41')&&_0x5f2a4c[_0xd0fb('0x42')]&&_0x5f2a4c[_0xd0fb('0x3e')]&&_0x5f2a4c[_0xd0fb('0x3b')]){_0x343522[_0x5f2a4c['variableName']]&&_0x57aa2d['custom_fields'][_0xd0fb('0x40')]({'id':_0x5f2a4c[_0xd0fb('0x3e')],'value':_0x343522[_0x5f2a4c[_0xd0fb('0x42')]]['toString']()});}else if(_0x5f2a4c[_0xd0fb('0x38')]===_0xd0fb('0x43')&&_0x5f2a4c[_0xd0fb('0x44')]&&_0x5f2a4c[_0xd0fb('0x44')][_0xd0fb('0x10')]&&_0x5f2a4c['idField']&&_0x5f2a4c[_0xd0fb('0x3b')]){_0x343522[_0x5f2a4c[_0xd0fb('0x44')][_0xd0fb('0x10')][_0xd0fb('0x3c')]()]&&_0x57aa2d[_0xd0fb('0x3f')][_0xd0fb('0x40')]({'id':_0x5f2a4c[_0xd0fb('0x3e')],'value':_0x343522[_0x5f2a4c[_0xd0fb('0x44')][_0xd0fb('0x10')][_0xd0fb('0x3c')]()][_0xd0fb('0x32')]()});}});}return _0x57aa2d;}exports[_0xd0fb('0x45')]=function(_0x49b28f,_0xc48942,_0x59d3b0,_0x4b46f6,_0x14d956,_0x2dde14){var _0x3a9e58,_0x1b4d7d;_0x2dde14[_0xd0fb('0x18')]=intUtil[_0xd0fb('0x46')](_0x2dde14[_0xd0fb('0x18')]);_0x2dde14[_0xd0fb('0x47')]=intUtil[_0xd0fb('0x46')](_0x2dde14[_0xd0fb('0x47')]);if(_0x14d956&&_0x14d956[_0xd0fb('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0xc48942['recordingURL']=util['format'](_0xd0fb('0x49'),_0x2dde14[_0xd0fb('0x47')],_0xc48942['uniqueid'],md5(_0xc48942[_0xd0fb('0x4a')]));}else{_0xc48942[_0xd0fb('0x4b')]='';}headers['Authorization']=getAuth(_0x2dde14);return getUser(_0x2dde14,_0x4b46f6['email'])[_0xd0fb('0x14')](function(_0x101361){_0x3a9e58=_0x101361;logger['info'](_0xd0fb('0x4c'),_0x3a9e58['id']);return getEndUser(_0x2dde14,_0xc48942[_0xd0fb('0x4d')],_0xc48942['calleridnum']);})['then'](function(_0x4a4a5e){_0x1b4d7d=_0x4a4a5e;logger[_0xd0fb('0xb')](_0xd0fb('0x4e'),_0x1b4d7d['id']);return getTicket(_0x2dde14,_0x3a9e58,_0x1b4d7d,_0x59d3b0,_0xc48942);})[_0xd0fb('0x14')](function(_0xf088ec){if(_0xf088ec){logger[_0xd0fb('0xb')](_0xd0fb('0x4f'),_0xf088ec['id']);switch(_0x2dde14['type']){case'integrationTab':logger[_0xd0fb('0xb')]('[QUEUE]',_0xd0fb('0x50'));return request({'uri':util['format'](_0xd0fb('0x51'),_0x2dde14['remoteUri'],_0x3a9e58['id'],_0xf088ec['id']),'method':_0xd0fb('0xd')});case _0xd0fb('0x52'):logger[_0xd0fb('0xb')](_0xd0fb('0x53'),_0xd0fb('0x54'));emit(util[_0xd0fb('0xc')]('user:%s',_0x4b46f6[_0xd0fb('0x10')]),'trigger:browser:url',{'uri':util[_0xd0fb('0xc')](_0xd0fb('0x55'),_0x2dde14[_0xd0fb('0x18')][_0xd0fb('0x56')]('/api/v2',''),_0xf088ec['id'])});break;default:logger[_0xd0fb('0x57')](_0xd0fb('0x53'),_0xd0fb('0x58'));}}})[_0xd0fb('0x59')](function(_0x11ba22){logger[_0xd0fb('0x57')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xd0fb('0x5a')](_0x11ba22,{'showHidden':!![],'depth':null}));});};exports[_0xd0fb('0x5b')]=function(_0x2de835,_0x56218f,_0x4b7127,_0x54fbcd,_0x305bea,_0x5596d2,_0x2ab83b){var _0x11f9c2,_0x2a67fc;_0x5596d2[_0xd0fb('0x18')]=intUtil[_0xd0fb('0x46')](_0x5596d2[_0xd0fb('0x18')]);_0x5596d2[_0xd0fb('0x47')]=intUtil[_0xd0fb('0x46')](_0x5596d2['serverUrl']);if(_0x2ab83b&&_0x2ab83b['recordingFormat']&&_0x2ab83b[_0xd0fb('0x5c')]!==_0xd0fb('0x5d')){logger[_0xd0fb('0xb')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x56218f[_0xd0fb('0x4b')]=util[_0xd0fb('0xc')](_0xd0fb('0x49'),_0x5596d2[_0xd0fb('0x47')],_0x56218f[_0xd0fb('0x4a')],md5(_0x56218f[_0xd0fb('0x4a')]));}headers['Authorization']=getAuth(_0x5596d2);return getUser(_0x5596d2,_0x54fbcd[_0xd0fb('0x5e')])['then'](function(_0x5d2505){_0x11f9c2=_0x5d2505;logger[_0xd0fb('0xb')](_0xd0fb('0x4c'),_0x11f9c2['id']);return getEndUser(_0x5596d2,_0x56218f[_0xd0fb('0x5f')],_0x56218f['destcalleridnum']);})['then'](function(_0x77983d){_0x2a67fc=_0x77983d;logger[_0xd0fb('0xb')](_0xd0fb('0x4e'),_0x2a67fc['id']);return getTicket(_0x5596d2,_0x11f9c2,_0x2a67fc,_0x4b7127,_0x56218f);})['then'](function(_0x510de8){if(_0x510de8){logger[_0xd0fb('0xb')]('The\x20Ticket\x20ID\x20is:',_0x510de8['id']);switch(_0x5596d2[_0xd0fb('0x38')]){case'integrationTab':logger[_0xd0fb('0xb')](_0xd0fb('0x60'),_0xd0fb('0x50'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x5596d2[_0xd0fb('0x18')],_0x11f9c2['id'],_0x510de8['id']),'method':'POST'});case _0xd0fb('0x52'):logger[_0xd0fb('0xb')](_0xd0fb('0x60'),_0xd0fb('0x54'));emit(util['format'](_0xd0fb('0x61'),_0x54fbcd['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x5596d2[_0xd0fb('0x18')][_0xd0fb('0x56')](_0xd0fb('0x62'),''),_0x510de8['id'])});break;default:logger[_0xd0fb('0x57')](_0xd0fb('0x60'),_0xd0fb('0x58'));}}})['catch'](function(_0x14873f){logger['error'](_0xd0fb('0x63'),util[_0xd0fb('0x5a')](_0x14873f,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x19442a,_0x155e2c,_0x2b8380,_0x534c09,_0x43c6be,_0x1c98f1){var _0x1bcf68,_0x38f4e2;_0x1c98f1[_0xd0fb('0x18')]=intUtil[_0xd0fb('0x46')](_0x1c98f1[_0xd0fb('0x18')]);_0x1c98f1[_0xd0fb('0x47')]=intUtil[_0xd0fb('0x46')](_0x1c98f1[_0xd0fb('0x47')]);if(_0x43c6be&&_0x43c6be[_0xd0fb('0x48')]){logger[_0xd0fb('0xb')]('['+_0x155e2c['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x155e2c['recordingURL']=util['format'](_0xd0fb('0x49'),_0x1c98f1[_0xd0fb('0x47')],_0x155e2c[_0xd0fb('0x4a')],md5(_0x155e2c[_0xd0fb('0x4a')]));}else{_0x155e2c[_0xd0fb('0x4b')]='';}headers['Authorization']=getAuth(_0x1c98f1);return getUser(_0x1c98f1)['then'](function(_0x4bc7ce){_0x1bcf68=_0x4bc7ce;logger[_0xd0fb('0xb')](_0xd0fb('0x4c'),_0x1bcf68['id']);return getEndUser(_0x1c98f1,_0x155e2c['calleridname'],_0x155e2c[_0xd0fb('0x64')]);})['then'](function(_0x1ed857){_0x38f4e2=_0x1ed857;logger[_0xd0fb('0xb')](_0xd0fb('0x4e'),_0x38f4e2['id']);return getTicket(_0x1c98f1,_0x1bcf68,_0x38f4e2,_0x2b8380,_0x155e2c);})[_0xd0fb('0x14')](function(_0x287369){if(_0x287369){logger[_0xd0fb('0xb')](_0xd0fb('0x4f'),_0x287369['id']);}})[_0xd0fb('0x59')](function(_0x38a49d){logger[_0xd0fb('0x57')]('['+_0x155e2c[_0xd0fb('0x65')]['toUpperCase']()+']'+_0xd0fb('0x66'),util[_0xd0fb('0x5a')](_0x38a49d,{'showHidden':!![],'depth':null}));});};