4fbfd9abe2c9bfbc19cc2bb3f55eef6fb479f807
[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 _0x6790=['find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','results','length','filter','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','token','%s/token:%s','username','toString','debug','GET','forEach','type','string','nameField','toLowerCase','content','idField','customField','custom_fields','variableName','customVariable','Variable','push','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','Authorization','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','monitor_format','lastevent','calleridnum','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','remoteUri','POST','merge','Tags','name','getString','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','format','type:user\x20role:agent\x20email:%s','count','Agent\x20found!'];(function(_0x7c6db1,_0x391719){var _0x49e9a0=function(_0x56196e){while(--_0x56196e){_0x7c6db1['push'](_0x7c6db1['shift']());}};_0x49e9a0(++_0x391719);}(_0x6790,0xba));var _0x0679=function(_0x4ede5e,_0x235377){_0x4ede5e=_0x4ede5e-0x0;var _0x599aaa=_0x6790[_0x4ede5e];return _0x599aaa;};'use strict';var _=require(_0x0679('0x0'));var rp=require(_0x0679('0x1'));var md5=require('md5');var util=require(_0x0679('0x2'));var Redis=require(_0x0679('0x3'));var intUtil=require(_0x0679('0x4'));var config=require('../../../../config/environment');var logger=require(_0x0679('0x5'))('zendesk');config['redis']=_[_0x0679('0x6')](config[_0x0679('0x7')],{'host':_0x0679('0x8'),'port':0x18eb});var io=require(_0x0679('0x9'))(new Redis(config[_0x0679('0x7')]));function emit(_0x199390,_0x34027c,_0x20e228){io['to'](_0x199390)[_0x0679('0xa')](_0x34027c,_0x20e228);}var headers={'Content-Type':_0x0679('0xb'),'Accept':_0x0679('0xb')};function getTicket(_0x102f9d,_0x45432b,_0x23a545,_0x27b598,_0x1ff51b){logger[_0x0679('0xc')](_0x0679('0xd'));return request({'uri':util['format']('%s/tickets.json',_0x102f9d[_0x0679('0xe')]),'method':_0x0679('0xf'),'body':{'ticket':_[_0x0679('0x10')]({'requester_id':_0x23a545['id'],'submitter_id':_0x45432b?_0x45432b['id']:undefined,'assignee_id':_0x45432b?_0x45432b['id']:undefined,'tags':getTags(_0x27b598[_0x0679('0x11')],_0x0679('0x12')),'subject':intUtil[_0x0679('0x13')](_0x27b598['Subjects'],_0x1ff51b,'\x20'),'description':intUtil['getString'](_0x27b598['Descriptions'],_0x1ff51b,'\x0a'),'comment':{'public':![],'body':intUtil[_0x0679('0x13')](_0x27b598[_0x0679('0x14')],_0x1ff51b,'\x0a')}},getCustomFields(_0x27b598['Fields'],_0x1ff51b))}})[_0x0679('0x15')](function(_0x48b6e3){logger[_0x0679('0xc')](_0x0679('0x16'));return _0x48b6e3[_0x0679('0x17')];});}function getUser(_0x4938b4,_0x5986ce){if(intUtil[_0x0679('0x18')](_0x5986ce)){logger[_0x0679('0xc')](_0x0679('0x19'),_0x5986ce);return request({'uri':util[_0x0679('0x1a')]('%s/search.json',_0x4938b4[_0x0679('0xe')]),'qs':{'query':util[_0x0679('0x1a')](_0x0679('0x1b'),_0x5986ce)}})['then'](function(_0x14ddda){if(_0x14ddda[_0x0679('0x1c')]){logger[_0x0679('0xc')](_0x0679('0x1d'));return _[_0x0679('0x1e')](_0x14ddda['results'],{'email':_0x5986ce,'role':_0x0679('0x1f')});}else{logger[_0x0679('0xc')](_0x0679('0x20'));return request({'uri':util['format'](_0x0679('0x21'),_0x4938b4['remoteUri'])})[_0x0679('0x15')](function(_0x826a9a){logger[_0x0679('0xc')]('Admin\x20account\x20selected.');return _0x826a9a[_0x0679('0x22')];});}});}else{logger[_0x0679('0xc')](_0x0679('0x20'));return request({'uri':util[_0x0679('0x1a')](_0x0679('0x21'),_0x4938b4['remoteUri'])})[_0x0679('0x15')](function(_0x518c91){logger[_0x0679('0xc')](_0x0679('0x23'));return _0x518c91[_0x0679('0x22')];});}}function getEndUser(_0x5d2525,_0x1af34f,_0xc80fed){logger[_0x0679('0xc')](_0x0679('0x24'),_0xc80fed);return request({'uri':util['format'](_0x0679('0x25'),_0x5d2525[_0x0679('0xe')]),'qs':{'query':util[_0x0679('0x1a')](_0x0679('0x26'),_0xc80fed)}})[_0x0679('0x15')](function(_0x4d4244){var _0x245a99;if(_0x4d4244[_0x0679('0x27')][_0x0679('0x28')]){_0x4d4244[_0x0679('0x27')]=_[_0x0679('0x29')](_0x4d4244[_0x0679('0x27')],{'suspended':![],'role':'end-user'});if(_0x4d4244[_0x0679('0x27')][_0x0679('0x28')]){_0x245a99=_['first'](_0x4d4244[_0x0679('0x27')]);}}if(_0x245a99){logger[_0x0679('0xc')](_0x0679('0x2a'));return _0x245a99;}else{logger[_0x0679('0xc')](_0x0679('0x2b'));return request({'uri':util[_0x0679('0x1a')](_0x0679('0x2c'),_0x5d2525['remoteUri']),'method':_0x0679('0xf'),'body':{'user':{'role':_0x0679('0x2d'),'name':util[_0x0679('0x1a')](_0x0679('0x2e'),_0x1af34f||_0xc80fed),'phone':_0xc80fed}}})[_0x0679('0x15')](function(_0x38db3a){logger[_0x0679('0xc')](_0x0679('0x2f'));return _0x38db3a[_0x0679('0x22')];});}});}function getAuth(_0x5e6760){var _0x24eafe;if(_0x5e6760[_0x0679('0x30')]===_0x0679('0x31')){_0x24eafe=util[_0x0679('0x1a')](_0x0679('0x32'),_0x5e6760['username'],_0x5e6760[_0x0679('0x31')]);}else if(_0x5e6760['authType']===_0x0679('0x33')){_0x24eafe=util[_0x0679('0x1a')](_0x0679('0x34'),_0x5e6760[_0x0679('0x35')],_0x5e6760[_0x0679('0x33')]);}return util[_0x0679('0x1a')]('Basic\x20%s',new Buffer(_0x24eafe)[_0x0679('0x36')]('base64'));}function request(_0x4d109f){logger[_0x0679('0x37')]('[HTTP]',JSON['stringify'](_0x4d109f));return rp(_[_0x0679('0x6')](_0x4d109f,{'method':_0x0679('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x3a4560,_0x28210e){var _0x116ad8=[];if(_0x3a4560&&_0x3a4560[_0x0679('0x28')]>0x0){_0x116ad8=_['map'](_0x3a4560,_0x28210e);}return _0x116ad8;}function getCustomFields(_0x35f1dd,_0x3d2d7c){var _0x3ee70a=[];var _0x53105e={'custom_fields':[]};if(_0x35f1dd[_0x0679('0x28')]>0x0){_[_0x0679('0x39')](_0x35f1dd,function(_0x53780b){if(_0x53780b[_0x0679('0x3a')]===_0x0679('0x3b')&&_0x53780b[_0x0679('0x3c')]&&!_0x53780b['customField']){_0x53105e[_0x53780b[_0x0679('0x3c')][_0x0679('0x3d')]()]=_0x53780b[_0x0679('0x3e')]['toString']();}else if(_0x53780b[_0x0679('0x3a')]===_0x0679('0x3b')&&_0x53780b[_0x0679('0x3f')]&&_0x53780b[_0x0679('0x40')]){_0x53105e[_0x0679('0x41')]['push']({'id':_0x53780b[_0x0679('0x3f')],'value':_0x53780b[_0x0679('0x3e')][_0x0679('0x36')]()});}else if(_0x53780b[_0x0679('0x3a')]==='variable'&&_0x53780b['variableName']&&_0x53780b[_0x0679('0x3f')]&&_0x53780b['customField']){_0x3d2d7c[_0x53780b[_0x0679('0x42')]]&&_0x53105e[_0x0679('0x41')]['push']({'id':_0x53780b['idField'],'value':_0x3d2d7c[_0x53780b['variableName']][_0x0679('0x36')]()});}else if(_0x53780b[_0x0679('0x3a')]===_0x0679('0x43')&&_0x53780b[_0x0679('0x44')]&&_0x53780b[_0x0679('0x44')][_0x0679('0x12')]&&_0x53780b[_0x0679('0x3f')]&&_0x53780b[_0x0679('0x40')]){_0x3d2d7c[_0x53780b[_0x0679('0x44')]['name']['toLowerCase']()]&&_0x53105e['custom_fields'][_0x0679('0x45')]({'id':_0x53780b[_0x0679('0x3f')],'value':_0x3d2d7c[_0x53780b['Variable'][_0x0679('0x12')][_0x0679('0x3d')]()]['toString']()});}});}return _0x53105e;}exports[_0x0679('0x46')]=function(_0x3acd46,_0x1925e0,_0x7e4a31,_0x3c7213,_0x43f9bf,_0x32c08b){var _0x8de0a1,_0x93252b;_0x32c08b[_0x0679('0xe')]=intUtil[_0x0679('0x47')](_0x32c08b[_0x0679('0xe')]);_0x32c08b['serverUrl']=intUtil[_0x0679('0x47')](_0x32c08b[_0x0679('0x48')]);if(_0x43f9bf&&_0x43f9bf['monitor_format']){logger[_0x0679('0xc')](_0x0679('0x49'),_0x0679('0x4a'));_0x1925e0[_0x0679('0x4b')]=util[_0x0679('0x1a')](_0x0679('0x4c'),_0x32c08b['serverUrl'],_0x1925e0[_0x0679('0x4d')],md5(_0x1925e0[_0x0679('0x4d')]));}else{_0x1925e0[_0x0679('0x4b')]='';}headers['Authorization']=getAuth(_0x32c08b);return getUser(_0x32c08b,_0x3c7213[_0x0679('0x4e')])[_0x0679('0x15')](function(_0x14f52d){_0x8de0a1=_0x14f52d;logger[_0x0679('0xc')](_0x0679('0x4f'),_0x8de0a1['id']);return getEndUser(_0x32c08b,_0x1925e0['calleridname'],_0x1925e0['calleridnum']);})[_0x0679('0x15')](function(_0x25550b){_0x93252b=_0x25550b;logger[_0x0679('0xc')](_0x0679('0x50'),_0x93252b['id']);return getTicket(_0x32c08b,_0x8de0a1,_0x93252b,_0x7e4a31,_0x1925e0);})[_0x0679('0x15')](function(_0x14000c){if(_0x14000c){logger[_0x0679('0xc')]('The\x20Ticket\x20ID\x20is:',_0x14000c['id']);switch(_0x32c08b[_0x0679('0x3a')]){case _0x0679('0x51'):logger[_0x0679('0xc')](_0x0679('0x49'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x0679('0x1a')](_0x0679('0x52'),_0x32c08b[_0x0679('0xe')],_0x8de0a1['id'],_0x14000c['id']),'method':_0x0679('0xf')});case _0x0679('0x53'):logger[_0x0679('0xc')](_0x0679('0x49'),_0x0679('0x54'));emit(util[_0x0679('0x1a')](_0x0679('0x55'),_0x3c7213[_0x0679('0x12')]),_0x0679('0x56'),{'uri':util[_0x0679('0x1a')](_0x0679('0x57'),_0x32c08b[_0x0679('0xe')][_0x0679('0x58')](_0x0679('0x59'),''),_0x14000c['id'])});break;default:logger[_0x0679('0x5a')]('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x0679('0x5b')](function(_0x2c824d){logger['error'](_0x0679('0x5c'),util[_0x0679('0x5d')](_0x2c824d,{'showHidden':!![],'depth':null}));});};exports[_0x0679('0x5e')]=function(_0x130a30,_0x55a352,_0x5a250a,_0xb6a10f,_0x40daf1,_0x7f47a5,_0x1b8655){var _0x1a5fd2,_0x4c0656;_0x7f47a5[_0x0679('0xe')]=intUtil['stripTrailingSlash'](_0x7f47a5[_0x0679('0xe')]);_0x7f47a5[_0x0679('0x48')]=intUtil[_0x0679('0x47')](_0x7f47a5[_0x0679('0x48')]);if(_0x1b8655&&_0x1b8655[_0x0679('0x5f')]&&_0x1b8655['recordingFormat']!==_0x0679('0x60')){logger[_0x0679('0xc')]('[OUTBOUND]',_0x0679('0x4a'));_0x55a352[_0x0679('0x4b')]=util[_0x0679('0x1a')](_0x0679('0x4c'),_0x7f47a5['serverUrl'],_0x55a352[_0x0679('0x4d')],md5(_0x55a352[_0x0679('0x4d')]));}headers[_0x0679('0x61')]=getAuth(_0x7f47a5);return getUser(_0x7f47a5,_0xb6a10f[_0x0679('0x4e')])[_0x0679('0x15')](function(_0x281b7e){_0x1a5fd2=_0x281b7e;logger[_0x0679('0xc')]('The\x20User\x20ID\x20is:',_0x1a5fd2['id']);return getEndUser(_0x7f47a5,_0x55a352['destcalleridname'],_0x55a352[_0x0679('0x62')]);})[_0x0679('0x15')](function(_0x715315){_0x4c0656=_0x715315;logger[_0x0679('0xc')](_0x0679('0x50'),_0x4c0656['id']);return getTicket(_0x7f47a5,_0x1a5fd2,_0x4c0656,_0x5a250a,_0x55a352);})[_0x0679('0x15')](function(_0x42f937){if(_0x42f937){logger[_0x0679('0xc')](_0x0679('0x63'),_0x42f937['id']);switch(_0x7f47a5[_0x0679('0x3a')]){case _0x0679('0x51'):logger['info'](_0x0679('0x64'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x0679('0x1a')](_0x0679('0x52'),_0x7f47a5[_0x0679('0xe')],_0x1a5fd2['id'],_0x42f937['id']),'method':_0x0679('0xf')});case _0x0679('0x53'):logger['info']('[OUTBOUND]',_0x0679('0x54'));emit(util[_0x0679('0x1a')](_0x0679('0x55'),_0xb6a10f[_0x0679('0x12')]),'trigger:browser:url',{'uri':util['format'](_0x0679('0x57'),_0x7f47a5[_0x0679('0xe')]['replace'](_0x0679('0x59'),''),_0x42f937['id'])});break;default:logger['error']('[OUTBOUND]',_0x0679('0x65'));}}})['catch'](function(_0x5a5161){logger[_0x0679('0x5a')](_0x0679('0x66'),util[_0x0679('0x5d')](_0x5a5161,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0xbb4e3e,_0x3bb67b,_0x504c2f,_0x22149b,_0x26b99d,_0x2e3504){var _0x8a63c0,_0x4f486f;_0x2e3504[_0x0679('0xe')]=intUtil[_0x0679('0x47')](_0x2e3504[_0x0679('0xe')]);_0x2e3504[_0x0679('0x48')]=intUtil[_0x0679('0x47')](_0x2e3504[_0x0679('0x48')]);if(_0x26b99d&&_0x26b99d[_0x0679('0x67')]){logger[_0x0679('0xc')]('['+_0x3bb67b[_0x0679('0x68')]['toUpperCase']()+']',_0x0679('0x4a'));_0x3bb67b[_0x0679('0x4b')]=util[_0x0679('0x1a')](_0x0679('0x4c'),_0x2e3504['serverUrl'],_0x3bb67b[_0x0679('0x4d')],md5(_0x3bb67b[_0x0679('0x4d')]));}else{_0x3bb67b[_0x0679('0x4b')]='';}headers[_0x0679('0x61')]=getAuth(_0x2e3504);return getUser(_0x2e3504)[_0x0679('0x15')](function(_0x237e03){_0x8a63c0=_0x237e03;logger[_0x0679('0xc')]('The\x20User\x20ID\x20is:',_0x8a63c0['id']);return getEndUser(_0x2e3504,_0x3bb67b['calleridname'],_0x3bb67b[_0x0679('0x69')]);})[_0x0679('0x15')](function(_0x2ec2e8){_0x4f486f=_0x2ec2e8;logger[_0x0679('0xc')](_0x0679('0x50'),_0x4f486f['id']);return getTicket(_0x2e3504,_0x8a63c0,_0x4f486f,_0x504c2f,_0x3bb67b);})[_0x0679('0x15')](function(_0x2bb3ee){if(_0x2bb3ee){logger[_0x0679('0xc')](_0x0679('0x63'),_0x2bb3ee['id']);}})[_0x0679('0x5b')](function(_0x581455){logger[_0x0679('0x5a')]('['+_0x3bb67b[_0x0679('0x68')][_0x0679('0x6a')]()+']'+_0x0679('0x6b'),util[_0x0679('0x5d')](_0x581455,{'showHidden':!![],'depth':null}));});};