Built motion from commit (unavailable).|2.4.19
[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 _0xbab0=['%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','%s:%s','username','password','authType','%s/token:%s','token','Basic\x20%s','base64','debug','[HTTP]','stringify','GET','map','forEach','type','nameField','customField','toLowerCase','toString','string','idField','custom_fields','push','content','variableName','customVariable','Variable','queue','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','stripTrailingSlash','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','Zendesk\x20account\x20type\x20not\x20recognized','inspect','monitor_format','[ABANDONED]','The\x20User\x20ID\x20is:','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','type:user\x20role:agent\x20email:%s','Agent\x20found!','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!'];(function(_0x33727e,_0x19741d){var _0x320bb4=function(_0x2caebe){while(--_0x2caebe){_0x33727e['push'](_0x33727e['shift']());}};_0x320bb4(++_0x19741d);}(_0xbab0,0x183));var _0x0bab=function(_0x19e180,_0x33c258){_0x19e180=_0x19e180-0x0;var _0x25c98f=_0xbab0[_0x19e180];return _0x25c98f;};'use strict';var _=require(_0x0bab('0x0'));var rp=require(_0x0bab('0x1'));var md5=require(_0x0bab('0x2'));var util=require(_0x0bab('0x3'));var Redis=require('ioredis');var intUtil=require(_0x0bab('0x4'));var config=require(_0x0bab('0x5'));var logger=require(_0x0bab('0x6'))(_0x0bab('0x7'));config[_0x0bab('0x8')]=_[_0x0bab('0x9')](config[_0x0bab('0x8')],{'host':_0x0bab('0xa'),'port':0x18eb});var io=require(_0x0bab('0xb'))(new Redis(config[_0x0bab('0x8')]));function emit(_0x4a5a54,_0x3d5e81,_0xc4e91e){io['to'](_0x4a5a54)['emit'](_0x3d5e81,_0xc4e91e);}var headers={'Content-Type':_0x0bab('0xc'),'Accept':_0x0bab('0xc')};function getTicket(_0x34899a,_0x36a1fe,_0x39e50a,_0x5a372f,_0x3abf69){logger[_0x0bab('0xd')](_0x0bab('0xe'));return request({'uri':util[_0x0bab('0xf')]('%s/tickets.json',_0x34899a[_0x0bab('0x10')]),'method':_0x0bab('0x11'),'body':{'ticket':_['merge']({'requester_id':_0x39e50a['id'],'submitter_id':_0x36a1fe?_0x36a1fe['id']:undefined,'assignee_id':_0x36a1fe?_0x36a1fe['id']:undefined,'tags':getTags(_0x5a372f[_0x0bab('0x12')],_0x0bab('0x13')),'subject':intUtil[_0x0bab('0x14')](_0x5a372f[_0x0bab('0x15')],_0x3abf69,'\x20'),'description':intUtil['getString'](_0x5a372f[_0x0bab('0x16')],_0x3abf69,'\x0a'),'comment':{'public':![],'body':intUtil[_0x0bab('0x14')](_0x5a372f[_0x0bab('0x16')],_0x3abf69,'\x0a')}},getCustomFields(_0x5a372f[_0x0bab('0x17')],_0x3abf69))}})[_0x0bab('0x18')](function(_0x198aaf){logger[_0x0bab('0xd')](_0x0bab('0x19'));return _0x198aaf[_0x0bab('0x1a')];});}function getUser(_0x55d938,_0x31be45){if(intUtil[_0x0bab('0x1b')](_0x31be45)){logger[_0x0bab('0xd')]('Getting\x20agent\x20with\x20email',_0x31be45);return request({'uri':util['format']('%s/search.json',_0x55d938[_0x0bab('0x10')]),'qs':{'query':util['format'](_0x0bab('0x1c'),_0x31be45)}})['then'](function(_0x1dde54){if(_0x1dde54['count']){logger[_0x0bab('0xd')](_0x0bab('0x1d'));return _['find'](_0x1dde54[_0x0bab('0x1e')],{'email':_0x31be45,'role':_0x0bab('0x1f')});}else{logger[_0x0bab('0xd')](_0x0bab('0x20'));return request({'uri':util[_0x0bab('0xf')](_0x0bab('0x21'),_0x55d938[_0x0bab('0x10')])})['then'](function(_0x463eb1){logger['info'](_0x0bab('0x22'));return _0x463eb1[_0x0bab('0x23')];});}});}else{logger[_0x0bab('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x0bab('0xf')]('%s/users/me.json',_0x55d938['remoteUri'])})['then'](function(_0xa079cd){logger[_0x0bab('0xd')](_0x0bab('0x22'));return _0xa079cd['user'];});}}function getEndUser(_0x527b05,_0x334e1f,_0x2b88b8){logger[_0x0bab('0xd')](_0x0bab('0x24'),_0x2b88b8);return request({'uri':util['format']('%s/search.json',_0x527b05['remoteUri']),'qs':{'query':util[_0x0bab('0xf')](_0x0bab('0x25'),_0x2b88b8)}})[_0x0bab('0x18')](function(_0x83f2e7){var _0x5213ff;if(_0x83f2e7[_0x0bab('0x1e')]['length']){_0x83f2e7[_0x0bab('0x1e')]=_['filter'](_0x83f2e7[_0x0bab('0x1e')],{'suspended':![],'role':'end-user'});if(_0x83f2e7['results'][_0x0bab('0x26')]){_0x5213ff=_[_0x0bab('0x27')](_0x83f2e7[_0x0bab('0x1e')]);}}if(_0x5213ff){logger['info'](_0x0bab('0x28'));return _0x5213ff;}else{logger[_0x0bab('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x0bab('0x29'),_0x527b05[_0x0bab('0x10')]),'method':_0x0bab('0x11'),'body':{'user':{'role':_0x0bab('0x2a'),'name':util[_0x0bab('0xf')](_0x0bab('0x2b'),_0x334e1f||_0x2b88b8),'phone':_0x2b88b8}}})[_0x0bab('0x18')](function(_0x4fd9c5){logger[_0x0bab('0xd')](_0x0bab('0x2c'));return _0x4fd9c5[_0x0bab('0x23')];});}});}function getAuth(_0x4feaf1){var _0x2ec2ad;if(_0x4feaf1['authType']==='password'){_0x2ec2ad=util['format'](_0x0bab('0x2d'),_0x4feaf1[_0x0bab('0x2e')],_0x4feaf1[_0x0bab('0x2f')]);}else if(_0x4feaf1[_0x0bab('0x30')]==='token'){_0x2ec2ad=util[_0x0bab('0xf')](_0x0bab('0x31'),_0x4feaf1[_0x0bab('0x2e')],_0x4feaf1[_0x0bab('0x32')]);}return util[_0x0bab('0xf')](_0x0bab('0x33'),new Buffer(_0x2ec2ad)['toString'](_0x0bab('0x34')));}function request(_0x385355){logger[_0x0bab('0x35')](_0x0bab('0x36'),JSON[_0x0bab('0x37')](_0x385355));return rp(_['defaults'](_0x385355,{'method':_0x0bab('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x418bd1,_0x3e2971){var _0x4cd8db=[];if(_0x418bd1&&_0x418bd1[_0x0bab('0x26')]>0x0){_0x4cd8db=_[_0x0bab('0x39')](_0x418bd1,_0x3e2971);}return _0x4cd8db;}function getCustomFields(_0x315e48,_0x56e588){var _0x304d54=[];var _0x3087da={'custom_fields':[]};if(_0x315e48[_0x0bab('0x26')]>0x0){_[_0x0bab('0x3a')](_0x315e48,function(_0x4a5421){if(_0x4a5421[_0x0bab('0x3b')]==='string'&&_0x4a5421[_0x0bab('0x3c')]&&!_0x4a5421[_0x0bab('0x3d')]){_0x3087da[_0x4a5421[_0x0bab('0x3c')][_0x0bab('0x3e')]()]=_0x4a5421['content'][_0x0bab('0x3f')]();}else if(_0x4a5421[_0x0bab('0x3b')]===_0x0bab('0x40')&&_0x4a5421[_0x0bab('0x41')]&&_0x4a5421['customField']){_0x3087da[_0x0bab('0x42')][_0x0bab('0x43')]({'id':_0x4a5421[_0x0bab('0x41')],'value':_0x4a5421[_0x0bab('0x44')]['toString']()});}else if(_0x4a5421[_0x0bab('0x3b')]==='variable'&&_0x4a5421['variableName']&&_0x4a5421[_0x0bab('0x41')]&&_0x4a5421['customField']){_0x56e588[_0x4a5421[_0x0bab('0x45')]]&&_0x3087da[_0x0bab('0x42')][_0x0bab('0x43')]({'id':_0x4a5421[_0x0bab('0x41')],'value':_0x56e588[_0x4a5421['variableName']]['toString']()});}else if(_0x4a5421[_0x0bab('0x3b')]===_0x0bab('0x46')&&_0x4a5421['Variable']&&_0x4a5421[_0x0bab('0x47')]['name']&&_0x4a5421[_0x0bab('0x41')]&&_0x4a5421[_0x0bab('0x3d')]){_0x56e588[_0x4a5421[_0x0bab('0x47')][_0x0bab('0x13')][_0x0bab('0x3e')]()]&&_0x3087da['custom_fields'][_0x0bab('0x43')]({'id':_0x4a5421['idField'],'value':_0x56e588[_0x4a5421[_0x0bab('0x47')][_0x0bab('0x13')][_0x0bab('0x3e')]()][_0x0bab('0x3f')]()});}});}return _0x3087da;}exports[_0x0bab('0x48')]=function(_0x1ff932,_0x38c36a,_0x27bf91,_0x39c2bc,_0xb3d3dc,_0x39e1c1){var _0x3b4f90,_0x18643f;_0x39e1c1[_0x0bab('0x10')]=intUtil['stripTrailingSlash'](_0x39e1c1[_0x0bab('0x10')]);_0x39e1c1['serverUrl']=intUtil['stripTrailingSlash'](_0x39e1c1[_0x0bab('0x49')]);if(_0xb3d3dc&&_0xb3d3dc['monitor_format']){logger[_0x0bab('0xd')](_0x0bab('0x4a'),'Recording\x20is\x20enabled!');_0x38c36a[_0x0bab('0x4b')]=util['format'](_0x0bab('0x4c'),_0x39e1c1[_0x0bab('0x49')],_0x38c36a['uniqueid'],md5(_0x38c36a[_0x0bab('0x4d')]));}else{_0x38c36a[_0x0bab('0x4b')]='';}headers[_0x0bab('0x4e')]=getAuth(_0x39e1c1);return getUser(_0x39e1c1,_0x39c2bc[_0x0bab('0x4f')])[_0x0bab('0x18')](function(_0x2c9116){_0x3b4f90=_0x2c9116;logger[_0x0bab('0xd')]('The\x20User\x20ID\x20is:',_0x3b4f90['id']);return getEndUser(_0x39e1c1,_0x38c36a[_0x0bab('0x50')],_0x38c36a[_0x0bab('0x51')]);})[_0x0bab('0x18')](function(_0x4be6ac){_0x18643f=_0x4be6ac;logger[_0x0bab('0xd')](_0x0bab('0x52'),_0x18643f['id']);return getTicket(_0x39e1c1,_0x3b4f90,_0x18643f,_0x27bf91,_0x38c36a);})[_0x0bab('0x18')](function(_0x203261){if(_0x203261){logger[_0x0bab('0xd')](_0x0bab('0x53'),_0x203261['id']);switch(_0x39e1c1['type']){case _0x0bab('0x54'):logger['info'](_0x0bab('0x4a'),_0x0bab('0x55'));return request({'uri':util[_0x0bab('0xf')](_0x0bab('0x56'),_0x39e1c1[_0x0bab('0x10')],_0x3b4f90['id'],_0x203261['id']),'method':_0x0bab('0x11')});case _0x0bab('0x57'):logger[_0x0bab('0xd')](_0x0bab('0x4a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0bab('0xf')](_0x0bab('0x58'),_0x39c2bc[_0x0bab('0x13')]),_0x0bab('0x59'),{'uri':util[_0x0bab('0xf')](_0x0bab('0x5a'),_0x39e1c1[_0x0bab('0x10')],_0x203261['id'])});break;default:logger[_0x0bab('0x5b')](_0x0bab('0x4a'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x0bab('0x5c')](function(_0x2cd9a8){logger['error'](_0x0bab('0x5d'),util['inspect'](_0x2cd9a8,{'showHidden':!![],'depth':null}));});};exports[_0x0bab('0x5e')]=function(_0x393123,_0x5e252e,_0x1b7cd8,_0x39a40a,_0x10939e,_0x1eb1ee,_0x389c50){var _0xa9366d,_0x21f602;_0x1eb1ee[_0x0bab('0x10')]=intUtil[_0x0bab('0x5f')](_0x1eb1ee[_0x0bab('0x10')]);_0x1eb1ee[_0x0bab('0x49')]=intUtil[_0x0bab('0x5f')](_0x1eb1ee[_0x0bab('0x49')]);if(_0x389c50&&_0x389c50[_0x0bab('0x60')]&&_0x389c50[_0x0bab('0x60')]!=='none'){logger['info'](_0x0bab('0x61'),_0x0bab('0x62'));_0x5e252e[_0x0bab('0x4b')]=util[_0x0bab('0xf')](_0x0bab('0x4c'),_0x1eb1ee['serverUrl'],_0x5e252e[_0x0bab('0x4d')],md5(_0x5e252e[_0x0bab('0x4d')]));}headers[_0x0bab('0x4e')]=getAuth(_0x1eb1ee);return getUser(_0x1eb1ee,_0x39a40a['email'])[_0x0bab('0x18')](function(_0x5daa34){_0xa9366d=_0x5daa34;logger[_0x0bab('0xd')]('The\x20User\x20ID\x20is:',_0xa9366d['id']);return getEndUser(_0x1eb1ee,_0x5e252e[_0x0bab('0x63')],_0x5e252e[_0x0bab('0x64')]);})[_0x0bab('0x18')](function(_0x416108){_0x21f602=_0x416108;logger[_0x0bab('0xd')]('The\x20Enduser\x20ID\x20is:',_0x21f602['id']);return getTicket(_0x1eb1ee,_0xa9366d,_0x21f602,_0x1b7cd8,_0x5e252e);})['then'](function(_0xb45ca){if(_0xb45ca){logger[_0x0bab('0xd')](_0x0bab('0x53'),_0xb45ca['id']);switch(_0x1eb1ee[_0x0bab('0x3b')]){case'integrationTab':logger['info'](_0x0bab('0x61'),_0x0bab('0x55'));return request({'uri':util[_0x0bab('0xf')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x1eb1ee[_0x0bab('0x10')],_0xa9366d['id'],_0xb45ca['id']),'method':_0x0bab('0x11')});case'newTab':logger[_0x0bab('0xd')](_0x0bab('0x61'),_0x0bab('0x65'));emit(util[_0x0bab('0xf')](_0x0bab('0x58'),_0x39a40a[_0x0bab('0x13')]),_0x0bab('0x59'),{'uri':util[_0x0bab('0xf')](_0x0bab('0x5a'),_0x1eb1ee[_0x0bab('0x10')],_0xb45ca['id'])});break;default:logger[_0x0bab('0x5b')]('[OUTBOUND]',_0x0bab('0x66'));}}})[_0x0bab('0x5c')](function(_0x33534d){logger[_0x0bab('0x5b')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x0bab('0x67')](_0x33534d,{'showHidden':!![],'depth':null}));});};exports['abandoned']=function(_0x4c978d,_0xa84ef0,_0x32eb5f,_0x5fc717,_0x5a65d1,_0x41e325){var _0x47c821,_0x5d90ea;_0x41e325[_0x0bab('0x10')]=intUtil[_0x0bab('0x5f')](_0x41e325[_0x0bab('0x10')]);_0x41e325[_0x0bab('0x49')]=intUtil[_0x0bab('0x5f')](_0x41e325['serverUrl']);if(_0x5a65d1&&_0x5a65d1[_0x0bab('0x68')]){logger['info'](_0x0bab('0x69'),_0x0bab('0x62'));_0xa84ef0[_0x0bab('0x4b')]=util[_0x0bab('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x41e325['serverUrl'],_0xa84ef0[_0x0bab('0x4d')],md5(_0xa84ef0[_0x0bab('0x4d')]));}else{_0xa84ef0['recordingURL']='';}headers[_0x0bab('0x4e')]=getAuth(_0x41e325);return getUser(_0x41e325)[_0x0bab('0x18')](function(_0x5326ec){_0x47c821=_0x5326ec;logger[_0x0bab('0xd')](_0x0bab('0x6a'),_0x47c821['id']);return getEndUser(_0x41e325,_0xa84ef0[_0x0bab('0x50')],_0xa84ef0[_0x0bab('0x51')]);})['then'](function(_0x1de992){_0x5d90ea=_0x1de992;logger[_0x0bab('0xd')](_0x0bab('0x52'),_0x5d90ea['id']);return getTicket(_0x41e325,_0x47c821,_0x5d90ea,_0x32eb5f,_0xa84ef0);})['then'](function(_0x33807c){if(_0x33807c){logger[_0x0bab('0xd')](_0x0bab('0x53'),_0x33807c['id']);}})[_0x0bab('0x5c')](function(_0x4e5f1e){logger[_0x0bab('0x5b')]('[ABANDONED]\x20Error\x20running\x20Zendesk\x20integration',util[_0x0bab('0x67')](_0x4e5f1e,{'showHidden':!![],'depth':null}));});};