Built motion from commit (unavailable).|2.5.26
[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 _0xc28d=['The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','user:%s','trigger:browser:url','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','getString','Subjects','Descriptions','Fields','then','info','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','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','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Enduser\x20created.','password','%s:%s','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','includes','string','picklist','type','nameField','toLowerCase','content','custom_fields','push','idField','variable','variableName','customVariable','Variable','name','customField','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email'];(function(_0x5abe6b,_0x3e1e3d){var _0x13b26c=function(_0x5af559){while(--_0x5af559){_0x5abe6b['push'](_0x5abe6b['shift']());}};_0x13b26c(++_0x3e1e3d);}(_0xc28d,0x1c9));var _0xdc28=function(_0x5be795,_0x1cb1b8){_0x5be795=_0x5be795-0x0;var _0x4e8a3b=_0xc28d[_0x5be795];return _0x4e8a3b;};'use strict';var _=require(_0xdc28('0x0'));var rp=require(_0xdc28('0x1'));var md5=require(_0xdc28('0x2'));var util=require(_0xdc28('0x3'));var Redis=require('ioredis');var intUtil=require(_0xdc28('0x4'));var config=require(_0xdc28('0x5'));var logger=require('../../../../config/logger')(_0xdc28('0x6'));config[_0xdc28('0x7')]=_[_0xdc28('0x8')](config[_0xdc28('0x7')],{'host':_0xdc28('0x9'),'port':0x18eb});var io=require(_0xdc28('0xa'))(new Redis(config[_0xdc28('0x7')]));function emit(_0x8024af,_0x558277,_0x491875){io['to'](_0x8024af)['emit'](_0x558277,_0x491875);}var headers={'Content-Type':_0xdc28('0xb'),'Accept':'application/json'};function getTicket(_0x403198,_0x304922,_0x5ba09f,_0x2d64e3,_0x3ab42d){logger['info'](_0xdc28('0xc'));return request({'uri':util[_0xdc28('0xd')](_0xdc28('0xe'),_0x403198[_0xdc28('0xf')]),'method':_0xdc28('0x10'),'body':{'ticket':_[_0xdc28('0x11')]({'requester_id':_0x5ba09f['id'],'submitter_id':_0x304922?_0x304922['id']:undefined,'assignee_id':_0x304922?_0x304922['id']:undefined,'tags':getTags(_0x2d64e3[_0xdc28('0x12')],'name'),'subject':intUtil[_0xdc28('0x13')](_0x2d64e3[_0xdc28('0x14')],_0x3ab42d,'\x20'),'description':intUtil[_0xdc28('0x13')](_0x2d64e3[_0xdc28('0x15')],_0x3ab42d,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x2d64e3[_0xdc28('0x15')],_0x3ab42d,'\x0a')}},getCustomFields(_0x2d64e3[_0xdc28('0x16')],_0x3ab42d))}})[_0xdc28('0x17')](function(_0x331fd8){logger[_0xdc28('0x18')]('Ticket\x20created!');return _0x331fd8['ticket'];});}function getUser(_0x56320a,_0x4601ed){if(intUtil[_0xdc28('0x19')](_0x4601ed)){logger[_0xdc28('0x18')](_0xdc28('0x1a'),_0x4601ed);return request({'uri':util[_0xdc28('0xd')](_0xdc28('0x1b'),_0x56320a[_0xdc28('0xf')]),'qs':{'query':util[_0xdc28('0xd')](_0xdc28('0x1c'),_0x4601ed)}})[_0xdc28('0x17')](function(_0xeb48e3){if(_0xeb48e3[_0xdc28('0x1d')]){logger['info'](_0xdc28('0x1e'));return _[_0xdc28('0x1f')](_0xeb48e3[_0xdc28('0x20')],{'email':_0x4601ed,'role':_0xdc28('0x21')});}else{logger[_0xdc28('0x18')](_0xdc28('0x22'));return request({'uri':util['format'](_0xdc28('0x23'),_0x56320a[_0xdc28('0xf')])})[_0xdc28('0x17')](function(_0x2f96ae){logger[_0xdc28('0x18')](_0xdc28('0x24'));return _0x2f96ae['user'];});}});}else{logger[_0xdc28('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xdc28('0xd')]('%s/users/me.json',_0x56320a[_0xdc28('0xf')])})[_0xdc28('0x17')](function(_0x592144){logger['info'](_0xdc28('0x24'));return _0x592144[_0xdc28('0x25')];});}}function getEndUser(_0x2acff1,_0x184c07,_0x557771){logger[_0xdc28('0x18')](_0xdc28('0x26'),_0x557771);return request({'uri':util[_0xdc28('0xd')](_0xdc28('0x1b'),_0x2acff1[_0xdc28('0xf')]),'qs':{'query':util[_0xdc28('0xd')](_0xdc28('0x27'),_0x557771)}})['then'](function(_0x435f4f){var _0x1e398d;if(_0x435f4f[_0xdc28('0x20')][_0xdc28('0x28')]){_0x435f4f['results']=_['filter'](_0x435f4f[_0xdc28('0x20')],{'suspended':![],'role':'end-user'});if(_0x435f4f['results'][_0xdc28('0x28')]){_0x1e398d=_[_0xdc28('0x29')](_0x435f4f['results']);}}if(_0x1e398d){logger['info'](_0xdc28('0x2a'));return _0x1e398d;}else{logger[_0xdc28('0x18')](_0xdc28('0x2b'));return request({'uri':util[_0xdc28('0xd')](_0xdc28('0x2c'),_0x2acff1[_0xdc28('0xf')]),'method':_0xdc28('0x10'),'body':{'user':{'role':_0xdc28('0x2d'),'name':util['format']('Caller\x20-\x20%s',_0x184c07||_0x557771),'phone':_0x557771}}})[_0xdc28('0x17')](function(_0x119845){logger[_0xdc28('0x18')](_0xdc28('0x2e'));return _0x119845[_0xdc28('0x25')];});}});}function getAuth(_0x3a577b){var _0x5bcd10;if(_0x3a577b['authType']===_0xdc28('0x2f')){_0x5bcd10=util['format'](_0xdc28('0x30'),_0x3a577b[_0xdc28('0x31')],_0x3a577b[_0xdc28('0x2f')]);}else if(_0x3a577b[_0xdc28('0x32')]===_0xdc28('0x33')){_0x5bcd10=util[_0xdc28('0xd')](_0xdc28('0x34'),_0x3a577b['username'],_0x3a577b[_0xdc28('0x33')]);}return util['format'](_0xdc28('0x35'),new Buffer(_0x5bcd10)[_0xdc28('0x36')](_0xdc28('0x37')));}function request(_0x59e30a){logger[_0xdc28('0x38')](_0xdc28('0x39'),JSON['stringify'](_0x59e30a));return rp(_[_0xdc28('0x8')](_0x59e30a,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x4565f9,_0x360dfd){var _0x39fce0=[];if(_0x4565f9&&_0x4565f9[_0xdc28('0x28')]>0x0){_0x39fce0=_['map'](_0x4565f9,_0x360dfd);}return _0x39fce0;}function getCustomFields(_0x34fa5d,_0x3dfb7f){var _0x5bef22=[];var _0x58d8cf={'custom_fields':[]};if(_0x34fa5d[_0xdc28('0x28')]>0x0){_['forEach'](_0x34fa5d,function(_0xbd9a22){if(_[_0xdc28('0x3a')]([_0xdc28('0x3b'),_0xdc28('0x3c')],_0xbd9a22[_0xdc28('0x3d')])&&_0xbd9a22[_0xdc28('0x3e')]&&!_0xbd9a22['customField']){_0x58d8cf[_0xbd9a22[_0xdc28('0x3e')][_0xdc28('0x3f')]()]=_0xbd9a22[_0xdc28('0x40')][_0xdc28('0x36')]();}else if(_['includes']([_0xdc28('0x3b'),_0xdc28('0x3c')],_0xbd9a22[_0xdc28('0x3d')])&&_0xbd9a22['idField']&&_0xbd9a22['customField']){_0x58d8cf[_0xdc28('0x41')][_0xdc28('0x42')]({'id':_0xbd9a22[_0xdc28('0x43')],'value':_0xbd9a22[_0xdc28('0x40')]['toString']()});}else if(_0xbd9a22[_0xdc28('0x3d')]===_0xdc28('0x44')&&_0xbd9a22['variableName']&&_0xbd9a22['idField']&&_0xbd9a22['customField']){_0x3dfb7f[_0xbd9a22[_0xdc28('0x45')]]&&_0x58d8cf[_0xdc28('0x41')][_0xdc28('0x42')]({'id':_0xbd9a22[_0xdc28('0x43')],'value':_0x3dfb7f[_0xbd9a22['variableName']][_0xdc28('0x36')]()});}else if(_0xbd9a22['type']===_0xdc28('0x46')&&_0xbd9a22[_0xdc28('0x47')]&&_0xbd9a22[_0xdc28('0x47')][_0xdc28('0x48')]&&_0xbd9a22[_0xdc28('0x43')]&&_0xbd9a22[_0xdc28('0x49')]){_0x3dfb7f[_0xbd9a22[_0xdc28('0x47')][_0xdc28('0x48')][_0xdc28('0x3f')]()]&&_0x58d8cf[_0xdc28('0x41')][_0xdc28('0x42')]({'id':_0xbd9a22['idField'],'value':_0x3dfb7f[_0xbd9a22['Variable'][_0xdc28('0x48')]['toLowerCase']()][_0xdc28('0x36')]()});}});}return _0x58d8cf;}exports['queue']=function(_0x9b2740,_0x118867,_0x22a505,_0x1b56a4,_0x1a1be4,_0x3f84db){var _0x58f883,_0x76141c;_0x3f84db['remoteUri']=intUtil[_0xdc28('0x4a')](_0x3f84db['remoteUri']);_0x3f84db[_0xdc28('0x4b')]=intUtil[_0xdc28('0x4a')](_0x3f84db[_0xdc28('0x4b')]);if(_0x1a1be4&&_0x1a1be4[_0xdc28('0x4c')]){logger[_0xdc28('0x18')](_0xdc28('0x4d'),_0xdc28('0x4e'));_0x118867[_0xdc28('0x4f')]=util[_0xdc28('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3f84db['serverUrl'],_0x118867[_0xdc28('0x50')],md5(_0x118867[_0xdc28('0x50')]));}else{_0x118867[_0xdc28('0x4f')]='';}headers[_0xdc28('0x51')]=getAuth(_0x3f84db);return getUser(_0x3f84db,_0x1b56a4[_0xdc28('0x52')])[_0xdc28('0x17')](function(_0x984692){_0x58f883=_0x984692;logger[_0xdc28('0x18')](_0xdc28('0x53'),_0x58f883['id']);return getEndUser(_0x3f84db,_0x118867[_0xdc28('0x54')],_0x118867['calleridnum']);})[_0xdc28('0x17')](function(_0x5c65b6){_0x76141c=_0x5c65b6;logger['info'](_0xdc28('0x55'),_0x76141c['id']);return getTicket(_0x3f84db,_0x58f883,_0x76141c,_0x22a505,_0x118867);})[_0xdc28('0x17')](function(_0x65b6e){if(_0x65b6e){logger[_0xdc28('0x18')](_0xdc28('0x56'),_0x65b6e['id']);switch(_0x3f84db[_0xdc28('0x3d')]){case _0xdc28('0x57'):logger['info'](_0xdc28('0x4d'),_0xdc28('0x58'));return request({'uri':util[_0xdc28('0xd')](_0xdc28('0x59'),_0x3f84db[_0xdc28('0xf')],_0x58f883['id'],_0x65b6e['id']),'method':_0xdc28('0x10')});case'newTab':logger['info']('[QUEUE]',_0xdc28('0x5a'));emit(util[_0xdc28('0xd')]('user:%s',_0x1b56a4[_0xdc28('0x48')]),'trigger:browser:url',{'uri':util[_0xdc28('0xd')](_0xdc28('0x5b'),_0x3f84db[_0xdc28('0xf')][_0xdc28('0x5c')](_0xdc28('0x5d'),''),_0x65b6e['id'])});break;default:logger[_0xdc28('0x5e')](_0xdc28('0x4d'),_0xdc28('0x5f'));}}})[_0xdc28('0x60')](function(_0x465b93){logger[_0xdc28('0x5e')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xdc28('0x61')](_0x465b93,{'showHidden':!![],'depth':null}));});};exports[_0xdc28('0x62')]=function(_0x417e28,_0x4648ee,_0x1f57b5,_0x199391,_0xda2591,_0x38a1ec,_0x57d311){var _0x212f81,_0x5ef9ff;_0x38a1ec['remoteUri']=intUtil[_0xdc28('0x4a')](_0x38a1ec[_0xdc28('0xf')]);_0x38a1ec['serverUrl']=intUtil[_0xdc28('0x4a')](_0x38a1ec['serverUrl']);if(_0x57d311&&_0x57d311['recordingFormat']&&_0x57d311['recordingFormat']!==_0xdc28('0x63')){logger[_0xdc28('0x18')](_0xdc28('0x64'),_0xdc28('0x4e'));_0x4648ee[_0xdc28('0x4f')]=util[_0xdc28('0xd')](_0xdc28('0x65'),_0x38a1ec['serverUrl'],_0x4648ee['uniqueid'],md5(_0x4648ee[_0xdc28('0x50')]));}headers[_0xdc28('0x51')]=getAuth(_0x38a1ec);return getUser(_0x38a1ec,_0x199391[_0xdc28('0x52')])[_0xdc28('0x17')](function(_0x137f7e){_0x212f81=_0x137f7e;logger['info'](_0xdc28('0x53'),_0x212f81['id']);return getEndUser(_0x38a1ec,_0x4648ee[_0xdc28('0x66')],_0x4648ee['destcalleridnum']);})[_0xdc28('0x17')](function(_0x38de2b){_0x5ef9ff=_0x38de2b;logger[_0xdc28('0x18')](_0xdc28('0x55'),_0x5ef9ff['id']);return getTicket(_0x38a1ec,_0x212f81,_0x5ef9ff,_0x1f57b5,_0x4648ee);})[_0xdc28('0x17')](function(_0x2a9d3f){if(_0x2a9d3f){logger['info']('The\x20Ticket\x20ID\x20is:',_0x2a9d3f['id']);switch(_0x38a1ec[_0xdc28('0x3d')]){case _0xdc28('0x57'):logger[_0xdc28('0x18')](_0xdc28('0x64'),_0xdc28('0x58'));return request({'uri':util[_0xdc28('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x38a1ec['remoteUri'],_0x212f81['id'],_0x2a9d3f['id']),'method':_0xdc28('0x10')});case'newTab':logger['info'](_0xdc28('0x64'),_0xdc28('0x5a'));emit(util[_0xdc28('0xd')](_0xdc28('0x67'),_0x199391[_0xdc28('0x48')]),_0xdc28('0x68'),{'uri':util[_0xdc28('0xd')]('%s/agent/tickets/%s',_0x38a1ec['remoteUri'][_0xdc28('0x5c')](_0xdc28('0x5d'),''),_0x2a9d3f['id'])});break;default:logger[_0xdc28('0x5e')](_0xdc28('0x64'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xdc28('0x60')](function(_0x5e1f74){logger[_0xdc28('0x5e')](_0xdc28('0x69'),util['inspect'](_0x5e1f74,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0xb68e79,_0xb60556,_0x244f7a,_0x31e0e0,_0x59574c,_0x313dda){var _0x16a432,_0x41aa2;_0x313dda['remoteUri']=intUtil[_0xdc28('0x4a')](_0x313dda[_0xdc28('0xf')]);_0x313dda['serverUrl']=intUtil[_0xdc28('0x4a')](_0x313dda[_0xdc28('0x4b')]);if(_0x59574c&&_0x59574c['monitor_format']){logger[_0xdc28('0x18')]('['+_0xb60556[_0xdc28('0x6a')][_0xdc28('0x6b')]()+']',_0xdc28('0x4e'));_0xb60556[_0xdc28('0x4f')]=util[_0xdc28('0xd')](_0xdc28('0x65'),_0x313dda['serverUrl'],_0xb60556[_0xdc28('0x50')],md5(_0xb60556[_0xdc28('0x50')]));}else{_0xb60556['recordingURL']='';}headers[_0xdc28('0x51')]=getAuth(_0x313dda);return getUser(_0x313dda)[_0xdc28('0x17')](function(_0x5c18c8){_0x16a432=_0x5c18c8;logger[_0xdc28('0x18')](_0xdc28('0x53'),_0x16a432['id']);return getEndUser(_0x313dda,_0xb60556[_0xdc28('0x54')],_0xb60556['calleridnum']);})['then'](function(_0x36b007){_0x41aa2=_0x36b007;logger[_0xdc28('0x18')]('The\x20Enduser\x20ID\x20is:',_0x41aa2['id']);return getTicket(_0x313dda,_0x16a432,_0x41aa2,_0x244f7a,_0xb60556);})[_0xdc28('0x17')](function(_0x134e14){if(_0x134e14){logger[_0xdc28('0x18')]('The\x20Ticket\x20ID\x20is:',_0x134e14['id']);}})[_0xdc28('0x60')](function(_0x554129){logger[_0xdc28('0x5e')]('['+_0xb60556['lastevent']['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0xdc28('0x61')](_0x554129,{'showHidden':!![],'depth':null}));});};