65a1778eab96e47a245322f7b2ef2deee4005344
[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 _0x474a=['socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','Subjects','Descriptions','getString','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','type:user\x20role:end-user\x20phone:%s','length','results','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','forEach','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%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','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x474a,0x69));var _0xa474=function(_0x328fe8,_0x3959b4){_0x328fe8=_0x328fe8-0x0;var _0x28eab1=_0x474a[_0x328fe8];return _0x28eab1;};'use strict';var _=require(_0xa474('0x0'));var rp=require(_0xa474('0x1'));var md5=require('md5');var util=require(_0xa474('0x2'));var Redis=require(_0xa474('0x3'));var intUtil=require('./util');var config=require(_0xa474('0x4'));var logger=require(_0xa474('0x5'))(_0xa474('0x6'));config[_0xa474('0x7')]=_[_0xa474('0x8')](config[_0xa474('0x7')],{'host':_0xa474('0x9'),'port':0x18eb});var io=require(_0xa474('0xa'))(new Redis(config[_0xa474('0x7')]));function emit(_0x25cd27,_0x2b4824,_0x14ede1){io['to'](_0x25cd27)[_0xa474('0xb')](_0x2b4824,_0x14ede1);}var headers={'Content-Type':_0xa474('0xc'),'Accept':_0xa474('0xc')};function getTicket(_0xf70963,_0x5058fc,_0x1b39f9,_0x1ef50f,_0x366df2){logger[_0xa474('0xd')](_0xa474('0xe'));return request({'uri':util[_0xa474('0xf')](_0xa474('0x10'),_0xf70963[_0xa474('0x11')]),'method':_0xa474('0x12'),'body':{'ticket':_[_0xa474('0x13')]({'requester_id':_0x1b39f9['id'],'submitter_id':_0x5058fc?_0x5058fc['id']:undefined,'assignee_id':_0x5058fc?_0x5058fc['id']:undefined,'tags':getTags(_0x1ef50f[_0xa474('0x14')],_0xa474('0x15')),'subject':intUtil['getString'](_0x1ef50f[_0xa474('0x16')],_0x366df2,'\x20'),'description':intUtil['getString'](_0x1ef50f[_0xa474('0x17')],_0x366df2,'\x0a'),'comment':{'public':![],'body':intUtil[_0xa474('0x18')](_0x1ef50f[_0xa474('0x17')],_0x366df2,'\x0a')}},getCustomFields(_0x1ef50f[_0xa474('0x19')],_0x366df2))}})[_0xa474('0x1a')](function(_0x50f961){logger['info'](_0xa474('0x1b'));return _0x50f961[_0xa474('0x1c')];});}function getUser(_0x16db96,_0x1241f5){if(intUtil[_0xa474('0x1d')](_0x1241f5)){logger[_0xa474('0xd')](_0xa474('0x1e'),_0x1241f5);return request({'uri':util['format'](_0xa474('0x1f'),_0x16db96[_0xa474('0x11')]),'qs':{'query':util[_0xa474('0xf')](_0xa474('0x20'),_0x1241f5)}})['then'](function(_0x1f6748){if(_0x1f6748[_0xa474('0x21')]){logger[_0xa474('0xd')]('Agent\x20found!');return _[_0xa474('0x22')](_0x1f6748['results'],{'email':_0x1241f5,'role':_0xa474('0x23')});}else{logger['info'](_0xa474('0x24'));return request({'uri':util['format'](_0xa474('0x25'),_0x16db96[_0xa474('0x11')])})['then'](function(_0x4f49d3){logger['info'](_0xa474('0x26'));return _0x4f49d3[_0xa474('0x27')];});}});}else{logger[_0xa474('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format']('%s/users/me.json',_0x16db96[_0xa474('0x11')])})['then'](function(_0x8c41f5){logger[_0xa474('0xd')](_0xa474('0x26'));return _0x8c41f5[_0xa474('0x27')];});}}function getEndUser(_0x2b3060,_0x567e63,_0x478d71){logger[_0xa474('0xd')]('Searching\x20enduser\x20with\x20phone',_0x478d71);return request({'uri':util[_0xa474('0xf')](_0xa474('0x1f'),_0x2b3060['remoteUri']),'qs':{'query':util['format'](_0xa474('0x28'),_0x478d71)}})[_0xa474('0x1a')](function(_0x3d1ef5){var _0xc20812;if(_0x3d1ef5['results'][_0xa474('0x29')]){_0x3d1ef5[_0xa474('0x2a')]=_['filter'](_0x3d1ef5[_0xa474('0x2a')],{'suspended':![],'role':_0xa474('0x2b')});if(_0x3d1ef5[_0xa474('0x2a')][_0xa474('0x29')]){_0xc20812=_['first'](_0x3d1ef5[_0xa474('0x2a')]);}}if(_0xc20812){logger[_0xa474('0xd')](_0xa474('0x2c'));return _0xc20812;}else{logger[_0xa474('0xd')](_0xa474('0x2d'));return request({'uri':util[_0xa474('0xf')]('%s/users.json',_0x2b3060[_0xa474('0x11')]),'method':_0xa474('0x12'),'body':{'user':{'role':'end-user','name':util[_0xa474('0xf')](_0xa474('0x2e'),_0x567e63||_0x478d71),'phone':_0x478d71}}})[_0xa474('0x1a')](function(_0x33cd24){logger[_0xa474('0xd')](_0xa474('0x2f'));return _0x33cd24[_0xa474('0x27')];});}});}function getAuth(_0x53dc9d){var _0x2c9f0b;if(_0x53dc9d[_0xa474('0x30')]===_0xa474('0x31')){_0x2c9f0b=util[_0xa474('0xf')](_0xa474('0x32'),_0x53dc9d[_0xa474('0x33')],_0x53dc9d[_0xa474('0x31')]);}else if(_0x53dc9d[_0xa474('0x30')]===_0xa474('0x34')){_0x2c9f0b=util[_0xa474('0xf')]('%s/token:%s',_0x53dc9d['username'],_0x53dc9d[_0xa474('0x34')]);}return util[_0xa474('0xf')](_0xa474('0x35'),new Buffer(_0x2c9f0b)[_0xa474('0x36')](_0xa474('0x37')));}function request(_0x469f1b){logger[_0xa474('0x38')](_0xa474('0x39'),JSON[_0xa474('0x3a')](_0x469f1b));return rp(_[_0xa474('0x8')](_0x469f1b,{'method':_0xa474('0x3b'),'headers':headers,'json':!![]}));}function getTags(_0x450843,_0x578819){var _0x1cb1a7=[];if(_0x450843&&_0x450843[_0xa474('0x29')]>0x0){_0x1cb1a7=_['map'](_0x450843,_0x578819);}return _0x1cb1a7;}function getCustomFields(_0x26b0ed,_0x14b3e6){var _0x351315=[];var _0x314dfb={'custom_fields':[]};if(_0x26b0ed[_0xa474('0x29')]>0x0){_[_0xa474('0x3c')](_0x26b0ed,function(_0x1d84f4){if(_0x1d84f4[_0xa474('0x3d')]==='string'&&_0x1d84f4[_0xa474('0x3e')]&&!_0x1d84f4[_0xa474('0x3f')]){_0x314dfb[_0x1d84f4[_0xa474('0x3e')][_0xa474('0x40')]()]=_0x1d84f4[_0xa474('0x41')]['toString']();}else if(_0x1d84f4[_0xa474('0x3d')]===_0xa474('0x42')&&_0x1d84f4[_0xa474('0x43')]&&_0x1d84f4['customField']){_0x314dfb[_0xa474('0x44')][_0xa474('0x45')]({'id':_0x1d84f4['idField'],'value':_0x1d84f4[_0xa474('0x41')][_0xa474('0x36')]()});}else if(_0x1d84f4['type']===_0xa474('0x46')&&_0x1d84f4[_0xa474('0x47')]&&_0x1d84f4[_0xa474('0x43')]&&_0x1d84f4['customField']){_0x14b3e6[_0x1d84f4['variableName']]&&_0x314dfb[_0xa474('0x44')][_0xa474('0x45')]({'id':_0x1d84f4['idField'],'value':_0x14b3e6[_0x1d84f4['variableName']][_0xa474('0x36')]()});}else if(_0x1d84f4[_0xa474('0x3d')]==='customVariable'&&_0x1d84f4[_0xa474('0x48')]&&_0x1d84f4[_0xa474('0x48')]['name']&&_0x1d84f4[_0xa474('0x43')]&&_0x1d84f4[_0xa474('0x3f')]){_0x14b3e6[_0x1d84f4['Variable'][_0xa474('0x15')][_0xa474('0x40')]()]&&_0x314dfb[_0xa474('0x44')][_0xa474('0x45')]({'id':_0x1d84f4['idField'],'value':_0x14b3e6[_0x1d84f4[_0xa474('0x48')]['name'][_0xa474('0x40')]()][_0xa474('0x36')]()});}});}return _0x314dfb;}exports[_0xa474('0x49')]=function(_0x36a50a,_0x44af6b,_0x37a7a4,_0x4d1599,_0x3dfe17,_0x47c651){var _0x57a5ac,_0x3c536c;_0x47c651[_0xa474('0x11')]=intUtil[_0xa474('0x4a')](_0x47c651[_0xa474('0x11')]);_0x47c651[_0xa474('0x4b')]=intUtil[_0xa474('0x4a')](_0x47c651['serverUrl']);if(_0x3dfe17&&_0x3dfe17[_0xa474('0x4c')]){logger[_0xa474('0xd')]('[QUEUE]',_0xa474('0x4d'));_0x44af6b[_0xa474('0x4e')]=util[_0xa474('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x47c651[_0xa474('0x4b')],_0x44af6b[_0xa474('0x4f')],md5(_0x44af6b[_0xa474('0x4f')]));}else{_0x44af6b[_0xa474('0x4e')]='';}headers[_0xa474('0x50')]=getAuth(_0x47c651);return getUser(_0x47c651,_0x4d1599[_0xa474('0x51')])['then'](function(_0x3bb468){_0x57a5ac=_0x3bb468;logger[_0xa474('0xd')](_0xa474('0x52'),_0x57a5ac['id']);return getEndUser(_0x47c651,_0x44af6b[_0xa474('0x53')],_0x44af6b['calleridnum']);})['then'](function(_0x25c78){_0x3c536c=_0x25c78;logger[_0xa474('0xd')]('The\x20Enduser\x20ID\x20is:',_0x3c536c['id']);return getTicket(_0x47c651,_0x57a5ac,_0x3c536c,_0x37a7a4,_0x44af6b);})[_0xa474('0x1a')](function(_0xac6b3a){if(_0xac6b3a){logger[_0xa474('0xd')](_0xa474('0x54'),_0xac6b3a['id']);switch(_0x47c651[_0xa474('0x3d')]){case _0xa474('0x55'):logger[_0xa474('0xd')](_0xa474('0x56'),_0xa474('0x57'));return request({'uri':util['format'](_0xa474('0x58'),_0x47c651['remoteUri'],_0x57a5ac['id'],_0xac6b3a['id']),'method':'POST'});case _0xa474('0x59'):logger[_0xa474('0xd')](_0xa474('0x56'),_0xa474('0x5a'));emit(util['format'](_0xa474('0x5b'),_0x4d1599[_0xa474('0x15')]),_0xa474('0x5c'),{'uri':util[_0xa474('0xf')](_0xa474('0x5d'),_0x47c651['remoteUri'][_0xa474('0x5e')](_0xa474('0x5f'),''),_0xac6b3a['id'])});break;default:logger[_0xa474('0x60')](_0xa474('0x56'),_0xa474('0x61'));}}})[_0xa474('0x62')](function(_0x1ec814){logger[_0xa474('0x60')](_0xa474('0x63'),util['inspect'](_0x1ec814,{'showHidden':!![],'depth':null}));});};exports[_0xa474('0x64')]=function(_0x1fe6ce,_0x3473cd,_0x58297d,_0x265569,_0x4fb899,_0x1ca5f7,_0x411c){var _0x139252,_0x6baac4;_0x1ca5f7['remoteUri']=intUtil[_0xa474('0x4a')](_0x1ca5f7[_0xa474('0x11')]);_0x1ca5f7['serverUrl']=intUtil['stripTrailingSlash'](_0x1ca5f7[_0xa474('0x4b')]);if(_0x411c&&_0x411c[_0xa474('0x65')]&&_0x411c[_0xa474('0x65')]!==_0xa474('0x66')){logger[_0xa474('0xd')](_0xa474('0x67'),_0xa474('0x4d'));_0x3473cd['recordingURL']=util[_0xa474('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1ca5f7[_0xa474('0x4b')],_0x3473cd[_0xa474('0x4f')],md5(_0x3473cd[_0xa474('0x4f')]));}headers[_0xa474('0x50')]=getAuth(_0x1ca5f7);return getUser(_0x1ca5f7,_0x265569['email'])[_0xa474('0x1a')](function(_0x2f4276){_0x139252=_0x2f4276;logger[_0xa474('0xd')](_0xa474('0x52'),_0x139252['id']);return getEndUser(_0x1ca5f7,_0x3473cd[_0xa474('0x68')],_0x3473cd[_0xa474('0x69')]);})[_0xa474('0x1a')](function(_0x19e0b0){_0x6baac4=_0x19e0b0;logger[_0xa474('0xd')](_0xa474('0x6a'),_0x6baac4['id']);return getTicket(_0x1ca5f7,_0x139252,_0x6baac4,_0x58297d,_0x3473cd);})[_0xa474('0x1a')](function(_0x19da6d){if(_0x19da6d){logger[_0xa474('0xd')](_0xa474('0x54'),_0x19da6d['id']);switch(_0x1ca5f7[_0xa474('0x3d')]){case'integrationTab':logger[_0xa474('0xd')]('[OUTBOUND]',_0xa474('0x57'));return request({'uri':util[_0xa474('0xf')](_0xa474('0x58'),_0x1ca5f7[_0xa474('0x11')],_0x139252['id'],_0x19da6d['id']),'method':_0xa474('0x12')});case _0xa474('0x59'):logger[_0xa474('0xd')](_0xa474('0x67'),_0xa474('0x5a'));emit(util[_0xa474('0xf')](_0xa474('0x5b'),_0x265569['name']),_0xa474('0x5c'),{'uri':util[_0xa474('0xf')](_0xa474('0x5d'),_0x1ca5f7[_0xa474('0x11')][_0xa474('0x5e')](_0xa474('0x5f'),''),_0x19da6d['id'])});break;default:logger[_0xa474('0x60')](_0xa474('0x67'),_0xa474('0x61'));}}})[_0xa474('0x62')](function(_0x17cccd){logger[_0xa474('0x60')](_0xa474('0x6b'),util[_0xa474('0x6c')](_0x17cccd,{'showHidden':!![],'depth':null}));});};exports[_0xa474('0x6d')]=function(_0x4941aa,_0x26326e,_0x2434f8,_0x1fe833,_0x5c96c2,_0xfbbff3){var _0x13988b,_0x56b0d5;_0xfbbff3[_0xa474('0x11')]=intUtil[_0xa474('0x4a')](_0xfbbff3[_0xa474('0x11')]);_0xfbbff3['serverUrl']=intUtil['stripTrailingSlash'](_0xfbbff3[_0xa474('0x4b')]);if(_0x5c96c2&&_0x5c96c2[_0xa474('0x4c')]){logger[_0xa474('0xd')]('['+_0x26326e[_0xa474('0x6e')][_0xa474('0x6f')]()+']',_0xa474('0x4d'));_0x26326e[_0xa474('0x4e')]=util[_0xa474('0xf')](_0xa474('0x70'),_0xfbbff3[_0xa474('0x4b')],_0x26326e[_0xa474('0x4f')],md5(_0x26326e['uniqueid']));}else{_0x26326e[_0xa474('0x4e')]='';}headers[_0xa474('0x50')]=getAuth(_0xfbbff3);return getUser(_0xfbbff3)[_0xa474('0x1a')](function(_0x7a6583){_0x13988b=_0x7a6583;logger[_0xa474('0xd')](_0xa474('0x52'),_0x13988b['id']);return getEndUser(_0xfbbff3,_0x26326e[_0xa474('0x53')],_0x26326e[_0xa474('0x71')]);})[_0xa474('0x1a')](function(_0x3b2310){_0x56b0d5=_0x3b2310;logger[_0xa474('0xd')]('The\x20Enduser\x20ID\x20is:',_0x56b0d5['id']);return getTicket(_0xfbbff3,_0x13988b,_0x56b0d5,_0x2434f8,_0x26326e);})['then'](function(_0x2db759){if(_0x2db759){logger[_0xa474('0xd')](_0xa474('0x54'),_0x2db759['id']);}})[_0xa474('0x62')](function(_0x5ecc6a){logger[_0xa474('0x60')]('['+_0x26326e[_0xa474('0x6e')][_0xa474('0x6f')]()+']'+_0xa474('0x72'),util['inspect'](_0x5ecc6a,{'showHidden':!![],'depth':null}));});};