Built motion from commit (unavailable).|2.5.4
[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 _0x6324=['[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','unmanaged','lastevent','toUpperCase','catch','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','./util','../../../../config/logger','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','Tags','getString','Subjects','Descriptions','Fields','then','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','authType','password','%s:%s','username','token','Basic\x20%s','toString','debug','[HTTP]','stringify','defaults','forEach','type','string','nameField','customField','toLowerCase','content','custom_fields','idField','variableName','push','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','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','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none'];(function(_0x573010,_0x2923c4){var _0x84c43d=function(_0x22c44d){while(--_0x22c44d){_0x573010['push'](_0x573010['shift']());}};_0x84c43d(++_0x2923c4);}(_0x6324,0x142));var _0x4632=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0x6324[_0x32d457];return _0x338386;};'use strict';var _=require(_0x4632('0x0'));var rp=require(_0x4632('0x1'));var md5=require(_0x4632('0x2'));var util=require(_0x4632('0x3'));var Redis=require('ioredis');var intUtil=require(_0x4632('0x4'));var config=require('../../../../config/environment');var logger=require(_0x4632('0x5'))('zendesk');config[_0x4632('0x6')]=_['defaults'](config[_0x4632('0x6')],{'host':_0x4632('0x7'),'port':0x18eb});var io=require(_0x4632('0x8'))(new Redis(config[_0x4632('0x6')]));function emit(_0x4a15b2,_0x17e860,_0x44dd6d){io['to'](_0x4a15b2)[_0x4632('0x9')](_0x17e860,_0x44dd6d);}var headers={'Content-Type':'application/json','Accept':_0x4632('0xa')};function getTicket(_0x47824c,_0x47a518,_0x556bbc,_0xcdefa2,_0x21999d){logger[_0x4632('0xb')](_0x4632('0xc'));return request({'uri':util[_0x4632('0xd')](_0x4632('0xe'),_0x47824c[_0x4632('0xf')]),'method':_0x4632('0x10'),'body':{'ticket':_['merge']({'requester_id':_0x556bbc['id'],'submitter_id':_0x47a518?_0x47a518['id']:undefined,'assignee_id':_0x47a518?_0x47a518['id']:undefined,'tags':getTags(_0xcdefa2[_0x4632('0x11')],'name'),'subject':intUtil[_0x4632('0x12')](_0xcdefa2[_0x4632('0x13')],_0x21999d,'\x20'),'description':intUtil[_0x4632('0x12')](_0xcdefa2[_0x4632('0x14')],_0x21999d,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0xcdefa2[_0x4632('0x14')],_0x21999d,'\x0a')}},getCustomFields(_0xcdefa2[_0x4632('0x15')],_0x21999d))}})[_0x4632('0x16')](function(_0x37d798){logger[_0x4632('0xb')]('Ticket\x20created!');return _0x37d798['ticket'];});}function getUser(_0x2fd7ae,_0x38bedd){if(intUtil[_0x4632('0x17')](_0x38bedd)){logger[_0x4632('0xb')]('Getting\x20agent\x20with\x20email',_0x38bedd);return request({'uri':util[_0x4632('0xd')](_0x4632('0x18'),_0x2fd7ae[_0x4632('0xf')]),'qs':{'query':util['format'](_0x4632('0x19'),_0x38bedd)}})[_0x4632('0x16')](function(_0x58e193){if(_0x58e193['count']){logger[_0x4632('0xb')](_0x4632('0x1a'));return _[_0x4632('0x1b')](_0x58e193[_0x4632('0x1c')],{'email':_0x38bedd,'role':_0x4632('0x1d')});}else{logger[_0x4632('0xb')](_0x4632('0x1e'));return request({'uri':util[_0x4632('0xd')](_0x4632('0x1f'),_0x2fd7ae[_0x4632('0xf')])})[_0x4632('0x16')](function(_0x2d656a){logger[_0x4632('0xb')](_0x4632('0x20'));return _0x2d656a[_0x4632('0x21')];});}});}else{logger[_0x4632('0xb')](_0x4632('0x1e'));return request({'uri':util[_0x4632('0xd')](_0x4632('0x1f'),_0x2fd7ae[_0x4632('0xf')])})[_0x4632('0x16')](function(_0x4455ef){logger[_0x4632('0xb')](_0x4632('0x20'));return _0x4455ef[_0x4632('0x21')];});}}function getEndUser(_0x1b8de0,_0x4af026,_0x2e3428){logger[_0x4632('0xb')](_0x4632('0x22'),_0x2e3428);return request({'uri':util[_0x4632('0xd')](_0x4632('0x18'),_0x1b8de0[_0x4632('0xf')]),'qs':{'query':util['format']('type:user\x20role:end-user\x20phone:%s',_0x2e3428)}})[_0x4632('0x16')](function(_0x244743){var _0x2f6656;if(_0x244743[_0x4632('0x1c')][_0x4632('0x23')]){_0x244743[_0x4632('0x1c')]=_[_0x4632('0x24')](_0x244743['results'],{'suspended':![],'role':_0x4632('0x25')});if(_0x244743[_0x4632('0x1c')]['length']){_0x2f6656=_[_0x4632('0x26')](_0x244743['results']);}}if(_0x2f6656){logger[_0x4632('0xb')]('Enduser\x20found!');return _0x2f6656;}else{logger['info'](_0x4632('0x27'));return request({'uri':util[_0x4632('0xd')](_0x4632('0x28'),_0x1b8de0['remoteUri']),'method':'POST','body':{'user':{'role':_0x4632('0x25'),'name':util[_0x4632('0xd')]('Caller\x20-\x20%s',_0x4af026||_0x2e3428),'phone':_0x2e3428}}})['then'](function(_0x97cb9a){logger[_0x4632('0xb')]('Enduser\x20created.');return _0x97cb9a[_0x4632('0x21')];});}});}function getAuth(_0x2a1093){var _0x4686c7;if(_0x2a1093[_0x4632('0x29')]===_0x4632('0x2a')){_0x4686c7=util['format'](_0x4632('0x2b'),_0x2a1093[_0x4632('0x2c')],_0x2a1093['password']);}else if(_0x2a1093['authType']===_0x4632('0x2d')){_0x4686c7=util['format']('%s/token:%s',_0x2a1093[_0x4632('0x2c')],_0x2a1093['token']);}return util[_0x4632('0xd')](_0x4632('0x2e'),new Buffer(_0x4686c7)[_0x4632('0x2f')]('base64'));}function request(_0x4d091b){logger[_0x4632('0x30')](_0x4632('0x31'),JSON[_0x4632('0x32')](_0x4d091b));return rp(_[_0x4632('0x33')](_0x4d091b,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x486f6c,_0x3114c4){var _0xd90c7c=[];if(_0x486f6c&&_0x486f6c[_0x4632('0x23')]>0x0){_0xd90c7c=_['map'](_0x486f6c,_0x3114c4);}return _0xd90c7c;}function getCustomFields(_0x5a3fb4,_0x53b436){var _0x405308=[];var _0x393ef2={'custom_fields':[]};if(_0x5a3fb4['length']>0x0){_[_0x4632('0x34')](_0x5a3fb4,function(_0x20a700){if(_0x20a700[_0x4632('0x35')]===_0x4632('0x36')&&_0x20a700[_0x4632('0x37')]&&!_0x20a700[_0x4632('0x38')]){_0x393ef2[_0x20a700[_0x4632('0x37')][_0x4632('0x39')]()]=_0x20a700[_0x4632('0x3a')][_0x4632('0x2f')]();}else if(_0x20a700[_0x4632('0x35')]===_0x4632('0x36')&&_0x20a700['idField']&&_0x20a700[_0x4632('0x38')]){_0x393ef2[_0x4632('0x3b')]['push']({'id':_0x20a700[_0x4632('0x3c')],'value':_0x20a700[_0x4632('0x3a')]['toString']()});}else if(_0x20a700[_0x4632('0x35')]==='variable'&&_0x20a700[_0x4632('0x3d')]&&_0x20a700[_0x4632('0x3c')]&&_0x20a700[_0x4632('0x38')]){_0x53b436[_0x20a700[_0x4632('0x3d')]]&&_0x393ef2['custom_fields'][_0x4632('0x3e')]({'id':_0x20a700[_0x4632('0x3c')],'value':_0x53b436[_0x20a700[_0x4632('0x3d')]][_0x4632('0x2f')]()});}else if(_0x20a700['type']==='customVariable'&&_0x20a700[_0x4632('0x3f')]&&_0x20a700[_0x4632('0x3f')][_0x4632('0x40')]&&_0x20a700['idField']&&_0x20a700[_0x4632('0x38')]){_0x53b436[_0x20a700[_0x4632('0x3f')][_0x4632('0x40')][_0x4632('0x39')]()]&&_0x393ef2[_0x4632('0x3b')][_0x4632('0x3e')]({'id':_0x20a700[_0x4632('0x3c')],'value':_0x53b436[_0x20a700['Variable'][_0x4632('0x40')][_0x4632('0x39')]()][_0x4632('0x2f')]()});}});}return _0x393ef2;}exports[_0x4632('0x41')]=function(_0x165c00,_0x4d1d50,_0x579ed2,_0x6e373d,_0x3a1d52,_0x23b0df){var _0x2e5978,_0x4fa733;_0x23b0df[_0x4632('0xf')]=intUtil[_0x4632('0x42')](_0x23b0df[_0x4632('0xf')]);_0x23b0df[_0x4632('0x43')]=intUtil[_0x4632('0x42')](_0x23b0df['serverUrl']);if(_0x3a1d52&&_0x3a1d52[_0x4632('0x44')]){logger[_0x4632('0xb')](_0x4632('0x45'),_0x4632('0x46'));_0x4d1d50[_0x4632('0x47')]=util[_0x4632('0xd')](_0x4632('0x48'),_0x23b0df[_0x4632('0x43')],_0x4d1d50[_0x4632('0x49')],md5(_0x4d1d50[_0x4632('0x49')]));}else{_0x4d1d50[_0x4632('0x47')]='';}headers['Authorization']=getAuth(_0x23b0df);return getUser(_0x23b0df,_0x6e373d[_0x4632('0x4a')])[_0x4632('0x16')](function(_0x30864d){_0x2e5978=_0x30864d;logger['info'](_0x4632('0x4b'),_0x2e5978['id']);return getEndUser(_0x23b0df,_0x4d1d50[_0x4632('0x4c')],_0x4d1d50[_0x4632('0x4d')]);})[_0x4632('0x16')](function(_0xa681e9){_0x4fa733=_0xa681e9;logger[_0x4632('0xb')](_0x4632('0x4e'),_0x4fa733['id']);return getTicket(_0x23b0df,_0x2e5978,_0x4fa733,_0x579ed2,_0x4d1d50);})[_0x4632('0x16')](function(_0x1f43b6){if(_0x1f43b6){logger[_0x4632('0xb')]('The\x20Ticket\x20ID\x20is:',_0x1f43b6['id']);switch(_0x23b0df[_0x4632('0x35')]){case _0x4632('0x4f'):logger['info'](_0x4632('0x45'),_0x4632('0x50'));return request({'uri':util[_0x4632('0xd')](_0x4632('0x51'),_0x23b0df[_0x4632('0xf')],_0x2e5978['id'],_0x1f43b6['id']),'method':_0x4632('0x10')});case _0x4632('0x52'):logger[_0x4632('0xb')](_0x4632('0x45'),_0x4632('0x53'));emit(util[_0x4632('0xd')](_0x4632('0x54'),_0x6e373d[_0x4632('0x40')]),_0x4632('0x55'),{'uri':util[_0x4632('0xd')](_0x4632('0x56'),_0x23b0df[_0x4632('0xf')],_0x1f43b6['id'])});break;default:logger[_0x4632('0x57')](_0x4632('0x45'),_0x4632('0x58'));}}})['catch'](function(_0x3bd8ee){logger[_0x4632('0x57')](_0x4632('0x59'),util[_0x4632('0x5a')](_0x3bd8ee,{'showHidden':!![],'depth':null}));});};exports[_0x4632('0x5b')]=function(_0x33ad25,_0x5d2cbb,_0x3d313f,_0x433fea,_0x41409d,_0x5877b9,_0xdc9d7f){var _0x275ea1,_0x57dbe7;_0x5877b9[_0x4632('0xf')]=intUtil[_0x4632('0x42')](_0x5877b9[_0x4632('0xf')]);_0x5877b9['serverUrl']=intUtil[_0x4632('0x42')](_0x5877b9[_0x4632('0x43')]);if(_0xdc9d7f&&_0xdc9d7f[_0x4632('0x5c')]&&_0xdc9d7f[_0x4632('0x5c')]!==_0x4632('0x5d')){logger[_0x4632('0xb')](_0x4632('0x5e'),_0x4632('0x46'));_0x5d2cbb[_0x4632('0x47')]=util[_0x4632('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5877b9[_0x4632('0x43')],_0x5d2cbb[_0x4632('0x49')],md5(_0x5d2cbb['uniqueid']));}headers[_0x4632('0x5f')]=getAuth(_0x5877b9);return getUser(_0x5877b9,_0x433fea['email'])['then'](function(_0xa55d76){_0x275ea1=_0xa55d76;logger[_0x4632('0xb')](_0x4632('0x4b'),_0x275ea1['id']);return getEndUser(_0x5877b9,_0x5d2cbb[_0x4632('0x60')],_0x5d2cbb[_0x4632('0x61')]);})[_0x4632('0x16')](function(_0x32920e){_0x57dbe7=_0x32920e;logger[_0x4632('0xb')](_0x4632('0x4e'),_0x57dbe7['id']);return getTicket(_0x5877b9,_0x275ea1,_0x57dbe7,_0x3d313f,_0x5d2cbb);})[_0x4632('0x16')](function(_0x1c321f){if(_0x1c321f){logger[_0x4632('0xb')](_0x4632('0x62'),_0x1c321f['id']);switch(_0x5877b9[_0x4632('0x35')]){case'integrationTab':logger['info'](_0x4632('0x5e'),_0x4632('0x50'));return request({'uri':util[_0x4632('0xd')](_0x4632('0x51'),_0x5877b9[_0x4632('0xf')],_0x275ea1['id'],_0x1c321f['id']),'method':_0x4632('0x10')});case'newTab':logger[_0x4632('0xb')](_0x4632('0x5e'),_0x4632('0x53'));emit(util[_0x4632('0xd')]('user:%s',_0x433fea['name']),_0x4632('0x55'),{'uri':util['format'](_0x4632('0x56'),_0x5877b9[_0x4632('0xf')],_0x1c321f['id'])});break;default:logger[_0x4632('0x57')](_0x4632('0x5e'),_0x4632('0x58'));}}})['catch'](function(_0x61aa92){logger[_0x4632('0x57')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x61aa92,{'showHidden':!![],'depth':null}));});};exports[_0x4632('0x63')]=function(_0x1375f6,_0x47391f,_0x3090d6,_0x4dfda1,_0x5a2cc1,_0x52e63b){var _0x10f7ab,_0x5b37cc;_0x52e63b[_0x4632('0xf')]=intUtil[_0x4632('0x42')](_0x52e63b[_0x4632('0xf')]);_0x52e63b[_0x4632('0x43')]=intUtil[_0x4632('0x42')](_0x52e63b[_0x4632('0x43')]);if(_0x5a2cc1&&_0x5a2cc1[_0x4632('0x44')]){logger[_0x4632('0xb')]('['+_0x47391f[_0x4632('0x64')][_0x4632('0x65')]()+']',_0x4632('0x46'));_0x47391f[_0x4632('0x47')]=util[_0x4632('0xd')](_0x4632('0x48'),_0x52e63b[_0x4632('0x43')],_0x47391f[_0x4632('0x49')],md5(_0x47391f['uniqueid']));}else{_0x47391f[_0x4632('0x47')]='';}headers[_0x4632('0x5f')]=getAuth(_0x52e63b);return getUser(_0x52e63b)[_0x4632('0x16')](function(_0x26a3f3){_0x10f7ab=_0x26a3f3;logger[_0x4632('0xb')](_0x4632('0x4b'),_0x10f7ab['id']);return getEndUser(_0x52e63b,_0x47391f[_0x4632('0x4c')],_0x47391f[_0x4632('0x4d')]);})[_0x4632('0x16')](function(_0x33561f){_0x5b37cc=_0x33561f;logger[_0x4632('0xb')](_0x4632('0x4e'),_0x5b37cc['id']);return getTicket(_0x52e63b,_0x10f7ab,_0x5b37cc,_0x3090d6,_0x47391f);})[_0x4632('0x16')](function(_0x4bba05){if(_0x4bba05){logger[_0x4632('0xb')](_0x4632('0x62'),_0x4bba05['id']);}})[_0x4632('0x66')](function(_0x3a4645){logger[_0x4632('0x57')]('['+_0x47391f[_0x4632('0x64')]['toUpperCase']()+']'+_0x4632('0x67'),util[_0x4632('0x5a')](_0x3a4645,{'showHidden':!![],'depth':null}));});};