Built motion from commit 9b156c94.|2.6.22
[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 _0x3821=['user','Admin\x20account\x20selected.','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','stringify','GET','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','idField','custom_fields','variable','variableName','push','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','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','[QUEUE]','user:%s','trigger:browser:url','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','count','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json'];(function(_0x10a212,_0x579d85){var _0x23c82b=function(_0x412ea9){while(--_0x412ea9){_0x10a212['push'](_0x10a212['shift']());}};_0x23c82b(++_0x579d85);}(_0x3821,0x133));var _0x1382=function(_0x3a114f,_0x4618c7){_0x3a114f=_0x3a114f-0x0;var _0x415982=_0x3821[_0x3a114f];return _0x415982;};'use strict';var _=require('lodash');var rp=require(_0x1382('0x0'));var md5=require(_0x1382('0x1'));var util=require(_0x1382('0x2'));var Redis=require('ioredis');var intUtil=require(_0x1382('0x3'));var config=require(_0x1382('0x4'));var logger=require(_0x1382('0x5'))(_0x1382('0x6'));config[_0x1382('0x7')]=_[_0x1382('0x8')](config[_0x1382('0x7')],{'host':_0x1382('0x9'),'port':0x18eb});var io=require(_0x1382('0xa'))(new Redis(config[_0x1382('0x7')]));function emit(_0x4aed78,_0x2b7dad,_0x514b97){io['to'](_0x4aed78)['emit'](_0x2b7dad,_0x514b97);}var headers={'Content-Type':'application/json','Accept':_0x1382('0xb')};function getTicket(_0x53011b,_0x631d76,_0x4e8be9,_0x3e322a,_0x333641){logger[_0x1382('0xc')](_0x1382('0xd'));return request({'uri':util[_0x1382('0xe')](_0x1382('0xf'),_0x53011b['remoteUri']),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x4e8be9['id'],'submitter_id':_0x631d76?_0x631d76['id']:undefined,'assignee_id':_0x631d76?_0x631d76['id']:undefined,'tags':getTags(_0x3e322a[_0x1382('0x10')],_0x1382('0x11')),'subject':intUtil[_0x1382('0x12')](_0x3e322a[_0x1382('0x13')],_0x333641,'\x20'),'description':intUtil[_0x1382('0x12')](_0x3e322a[_0x1382('0x14')],_0x333641,'\x0a'),'comment':{'public':![],'body':intUtil[_0x1382('0x12')](_0x3e322a[_0x1382('0x14')],_0x333641,'\x0a')}},getCustomFields(_0x3e322a[_0x1382('0x15')],_0x333641))}})[_0x1382('0x16')](function(_0xdb2f2b){logger[_0x1382('0xc')](_0x1382('0x17'));return _0xdb2f2b[_0x1382('0x18')];});}function getUser(_0x311287,_0xfa26d7){if(intUtil[_0x1382('0x19')](_0xfa26d7)){logger[_0x1382('0xc')](_0x1382('0x1a'),_0xfa26d7);return request({'uri':util['format'](_0x1382('0x1b'),_0x311287[_0x1382('0x1c')]),'qs':{'query':util[_0x1382('0xe')]('type:user\x20role:agent\x20email:%s',_0xfa26d7)}})['then'](function(_0x5b6f0a){if(_0x5b6f0a[_0x1382('0x1d')]){logger['info']('Agent\x20found!');return _[_0x1382('0x1e')](_0x5b6f0a[_0x1382('0x1f')],{'email':_0xfa26d7,'role':_0x1382('0x20')});}else{logger[_0x1382('0xc')](_0x1382('0x21'));return request({'uri':util[_0x1382('0xe')](_0x1382('0x22'),_0x311287[_0x1382('0x1c')])})[_0x1382('0x16')](function(_0xe118d8){logger['info']('Admin\x20account\x20selected.');return _0xe118d8[_0x1382('0x23')];});}});}else{logger[_0x1382('0xc')](_0x1382('0x21'));return request({'uri':util[_0x1382('0xe')](_0x1382('0x22'),_0x311287[_0x1382('0x1c')])})['then'](function(_0x3f0f73){logger[_0x1382('0xc')](_0x1382('0x24'));return _0x3f0f73['user'];});}}function getEndUser(_0x33b022,_0x44068,_0x3d91b7){logger[_0x1382('0xc')]('Searching\x20enduser\x20with\x20phone',_0x3d91b7);return request({'uri':util[_0x1382('0xe')]('%s/search.json',_0x33b022[_0x1382('0x1c')]),'qs':{'query':util[_0x1382('0xe')]('type:user\x20role:end-user\x20phone:%s',_0x3d91b7)}})[_0x1382('0x16')](function(_0x1f390b){var _0x40afbe;if(_0x1f390b[_0x1382('0x1f')][_0x1382('0x25')]){_0x1f390b[_0x1382('0x1f')]=_[_0x1382('0x26')](_0x1f390b[_0x1382('0x1f')],{'suspended':![],'role':_0x1382('0x27')});if(_0x1f390b[_0x1382('0x1f')][_0x1382('0x25')]){_0x40afbe=_[_0x1382('0x28')](_0x1f390b[_0x1382('0x1f')]);}}if(_0x40afbe){logger['info'](_0x1382('0x29'));return _0x40afbe;}else{logger[_0x1382('0xc')](_0x1382('0x2a'));return request({'uri':util['format'](_0x1382('0x2b'),_0x33b022['remoteUri']),'method':_0x1382('0x2c'),'body':{'user':{'role':_0x1382('0x27'),'name':util[_0x1382('0xe')](_0x1382('0x2d'),_0x44068||_0x3d91b7),'phone':_0x3d91b7}}})[_0x1382('0x16')](function(_0x3ea7e1){logger[_0x1382('0xc')](_0x1382('0x2e'));return _0x3ea7e1[_0x1382('0x23')];});}});}function getAuth(_0x1f1c0f){var _0x1b3af3;if(_0x1f1c0f[_0x1382('0x2f')]===_0x1382('0x30')){_0x1b3af3=util['format'](_0x1382('0x31'),_0x1f1c0f[_0x1382('0x32')],_0x1f1c0f['password']);}else if(_0x1f1c0f[_0x1382('0x2f')]===_0x1382('0x33')){_0x1b3af3=util[_0x1382('0xe')](_0x1382('0x34'),_0x1f1c0f[_0x1382('0x32')],_0x1f1c0f['token']);}return util[_0x1382('0xe')](_0x1382('0x35'),new Buffer(_0x1b3af3)[_0x1382('0x36')](_0x1382('0x37')));}function request(_0x5d6bfd){logger[_0x1382('0x38')]('[HTTP]',JSON[_0x1382('0x39')](_0x5d6bfd));return rp(_['defaults'](_0x5d6bfd,{'method':_0x1382('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x4120a0,_0x46bd11){var _0x546a83=[];if(_0x4120a0&&_0x4120a0[_0x1382('0x25')]>0x0){_0x546a83=_['map'](_0x4120a0,_0x46bd11);}return _0x546a83;}function getCustomFields(_0xa46fc2,_0x34f07c){var _0x3a7116=[];var _0x4662cf={'custom_fields':[]};if(_0xa46fc2[_0x1382('0x25')]>0x0){_[_0x1382('0x3b')](_0xa46fc2,function(_0x162399){if(_[_0x1382('0x3c')]([_0x1382('0x3d'),_0x1382('0x3e')],_0x162399[_0x1382('0x3f')])&&_0x162399['nameField']&&!_0x162399[_0x1382('0x40')]){_0x4662cf[_0x162399[_0x1382('0x41')][_0x1382('0x42')]()]=_0x162399[_0x1382('0x43')][_0x1382('0x36')]();}else if(_['includes']([_0x1382('0x3d'),_0x1382('0x3e')],_0x162399[_0x1382('0x3f')])&&_0x162399[_0x1382('0x44')]&&_0x162399[_0x1382('0x40')]){_0x4662cf[_0x1382('0x45')]['push']({'id':_0x162399[_0x1382('0x44')],'value':_0x162399[_0x1382('0x43')][_0x1382('0x36')]()});}else if(_0x162399['type']===_0x1382('0x46')&&_0x162399['variableName']&&_0x162399[_0x1382('0x44')]&&_0x162399[_0x1382('0x40')]){_0x34f07c[_0x162399[_0x1382('0x47')]]&&_0x4662cf[_0x1382('0x45')][_0x1382('0x48')]({'id':_0x162399[_0x1382('0x44')],'value':_0x34f07c[_0x162399[_0x1382('0x47')]][_0x1382('0x36')]()});}else if(_0x162399['type']==='customVariable'&&_0x162399['Variable']&&_0x162399[_0x1382('0x49')][_0x1382('0x11')]&&_0x162399[_0x1382('0x44')]&&_0x162399[_0x1382('0x40')]){_0x34f07c[_0x162399['Variable'][_0x1382('0x11')][_0x1382('0x42')]()]&&_0x4662cf['custom_fields'][_0x1382('0x48')]({'id':_0x162399[_0x1382('0x44')],'value':_0x34f07c[_0x162399[_0x1382('0x49')][_0x1382('0x11')]['toLowerCase']()]['toString']()});}});}return _0x4662cf;}exports[_0x1382('0x4a')]=function(_0x2692af,_0x4f0aaa,_0x409183,_0x163f53,_0x3549a4,_0x2b8506){var _0x66b171,_0x2babae;_0x2b8506['remoteUri']=intUtil[_0x1382('0x4b')](_0x2b8506[_0x1382('0x1c')]);_0x2b8506['serverUrl']=intUtil['stripTrailingSlash'](_0x2b8506[_0x1382('0x4c')]);if(_0x3549a4&&_0x3549a4[_0x1382('0x4d')]){logger[_0x1382('0xc')]('[QUEUE]',_0x1382('0x4e'));_0x4f0aaa[_0x1382('0x4f')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2b8506[_0x1382('0x4c')],_0x4f0aaa['uniqueid'],md5(_0x4f0aaa['uniqueid']));}else{_0x4f0aaa[_0x1382('0x4f')]='';}headers[_0x1382('0x50')]=getAuth(_0x2b8506);return getUser(_0x2b8506,_0x163f53[_0x1382('0x51')])[_0x1382('0x16')](function(_0x1e9b9e){_0x66b171=_0x1e9b9e;logger['info'](_0x1382('0x52'),_0x66b171['id']);return getEndUser(_0x2b8506,_0x4f0aaa[_0x1382('0x53')],_0x4f0aaa[_0x1382('0x54')]);})[_0x1382('0x16')](function(_0x373d33){_0x2babae=_0x373d33;logger[_0x1382('0xc')](_0x1382('0x55'),_0x2babae['id']);return getTicket(_0x2b8506,_0x66b171,_0x2babae,_0x409183,_0x4f0aaa);})['then'](function(_0x2d189d){if(_0x2d189d){logger[_0x1382('0xc')](_0x1382('0x56'),_0x2d189d['id']);switch(_0x2b8506[_0x1382('0x3f')]){case _0x1382('0x57'):logger[_0x1382('0xc')]('[QUEUE]',_0x1382('0x58'));return request({'uri':util['format'](_0x1382('0x59'),_0x2b8506[_0x1382('0x1c')],_0x66b171['id'],_0x2d189d['id']),'method':'POST'});case _0x1382('0x5a'):logger['info'](_0x1382('0x5b'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x1382('0xe')](_0x1382('0x5c'),_0x163f53[_0x1382('0x11')]),_0x1382('0x5d'),{'uri':util['format']('%s/agent/tickets/%s',_0x2b8506[_0x1382('0x1c')]['replace']('/api/v2',''),_0x2d189d['id'])});break;default:logger[_0x1382('0x5e')](_0x1382('0x5b'),_0x1382('0x5f'));}}})[_0x1382('0x60')](function(_0xb6ac34){logger[_0x1382('0x5e')](_0x1382('0x61'),util['inspect'](_0xb6ac34,{'showHidden':!![],'depth':null}));});};exports[_0x1382('0x62')]=function(_0x29ad43,_0x5143a3,_0x5dd646,_0x4f6c9a,_0x1d9502,_0x411795,_0x4f923d){var _0x38f8d3,_0x2bf1c0;_0x411795[_0x1382('0x1c')]=intUtil['stripTrailingSlash'](_0x411795['remoteUri']);_0x411795[_0x1382('0x4c')]=intUtil['stripTrailingSlash'](_0x411795[_0x1382('0x4c')]);if(_0x4f923d&&_0x4f923d['recordingFormat']&&_0x4f923d[_0x1382('0x63')]!==_0x1382('0x64')){logger[_0x1382('0xc')](_0x1382('0x65'),_0x1382('0x4e'));_0x5143a3[_0x1382('0x4f')]=util['format'](_0x1382('0x66'),_0x411795[_0x1382('0x4c')],_0x5143a3[_0x1382('0x67')],md5(_0x5143a3[_0x1382('0x67')]));}headers[_0x1382('0x50')]=getAuth(_0x411795);return getUser(_0x411795,_0x4f6c9a[_0x1382('0x51')])[_0x1382('0x16')](function(_0x48f32b){_0x38f8d3=_0x48f32b;logger['info'](_0x1382('0x52'),_0x38f8d3['id']);return getEndUser(_0x411795,_0x5143a3['destcalleridname'],_0x5143a3[_0x1382('0x68')]);})['then'](function(_0x5831be){_0x2bf1c0=_0x5831be;logger[_0x1382('0xc')](_0x1382('0x55'),_0x2bf1c0['id']);return getTicket(_0x411795,_0x38f8d3,_0x2bf1c0,_0x5dd646,_0x5143a3);})[_0x1382('0x16')](function(_0x5edfe6){if(_0x5edfe6){logger[_0x1382('0xc')](_0x1382('0x56'),_0x5edfe6['id']);switch(_0x411795['type']){case'integrationTab':logger[_0x1382('0xc')](_0x1382('0x65'),_0x1382('0x58'));return request({'uri':util[_0x1382('0xe')](_0x1382('0x59'),_0x411795['remoteUri'],_0x38f8d3['id'],_0x5edfe6['id']),'method':_0x1382('0x2c')});case _0x1382('0x5a'):logger[_0x1382('0xc')](_0x1382('0x65'),_0x1382('0x69'));emit(util[_0x1382('0xe')](_0x1382('0x5c'),_0x4f6c9a['name']),_0x1382('0x5d'),{'uri':util['format'](_0x1382('0x6a'),_0x411795[_0x1382('0x1c')][_0x1382('0x6b')]('/api/v2',''),_0x5edfe6['id'])});break;default:logger[_0x1382('0x5e')](_0x1382('0x65'),_0x1382('0x5f'));}}})['catch'](function(_0x1e6205){logger['error'](_0x1382('0x6c'),util[_0x1382('0x6d')](_0x1e6205,{'showHidden':!![],'depth':null}));});};exports[_0x1382('0x6e')]=function(_0x2399d0,_0x2fbbd0,_0x2c92f1,_0x5d6252,_0x536720,_0x41b548){var _0x255736,_0x13be2a;_0x41b548[_0x1382('0x1c')]=intUtil[_0x1382('0x4b')](_0x41b548[_0x1382('0x1c')]);_0x41b548[_0x1382('0x4c')]=intUtil['stripTrailingSlash'](_0x41b548[_0x1382('0x4c')]);if(_0x536720&&_0x536720[_0x1382('0x4d')]){logger['info']('['+_0x2fbbd0[_0x1382('0x6f')][_0x1382('0x70')]()+']','Recording\x20is\x20enabled!');_0x2fbbd0[_0x1382('0x4f')]=util['format'](_0x1382('0x66'),_0x41b548[_0x1382('0x4c')],_0x2fbbd0[_0x1382('0x67')],md5(_0x2fbbd0[_0x1382('0x67')]));}else{_0x2fbbd0[_0x1382('0x4f')]='';}headers[_0x1382('0x50')]=getAuth(_0x41b548);return getUser(_0x41b548)[_0x1382('0x16')](function(_0x2e9c93){_0x255736=_0x2e9c93;logger['info']('The\x20User\x20ID\x20is:',_0x255736['id']);return getEndUser(_0x41b548,_0x2fbbd0[_0x1382('0x53')],_0x2fbbd0[_0x1382('0x54')]);})['then'](function(_0x387499){_0x13be2a=_0x387499;logger[_0x1382('0xc')](_0x1382('0x55'),_0x13be2a['id']);return getTicket(_0x41b548,_0x255736,_0x13be2a,_0x2c92f1,_0x2fbbd0);})['then'](function(_0xe610fc){if(_0xe610fc){logger[_0x1382('0xc')](_0x1382('0x56'),_0xe610fc['id']);}})[_0x1382('0x60')](function(_0x175c22){logger[_0x1382('0x5e')]('['+_0x2fbbd0[_0x1382('0x6f')][_0x1382('0x70')]()+']'+_0x1382('0x71'),util[_0x1382('0x6d')](_0x175c22,{'showHidden':!![],'depth':null}));});};