Built motion from commit (unavailable).|2.5.14
[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 _0x6d4b=['[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','newTab','user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','monitor_format','lastevent','toUpperCase','calleridname','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','ioredis','./util','../../../../config/logger','zendesk','redis','defaults','localhost','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','merge','Tags','Subjects','getString','Descriptions','Fields','validateEmail','Getting\x20agent\x20with\x20email','then','count','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','%s/search.json','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Enduser\x20created.','authType','password','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','type','string','nameField','customField','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','serverUrl','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none'];(function(_0x581b8c,_0x45fafe){var _0x3e768f=function(_0x194578){while(--_0x194578){_0x581b8c['push'](_0x581b8c['shift']());}};_0x3e768f(++_0x45fafe);}(_0x6d4b,0x158));var _0xb6d4=function(_0x3f1fb2,_0x22be7b){_0x3f1fb2=_0x3f1fb2-0x0;var _0x1d6c89=_0x6d4b[_0x3f1fb2];return _0x1d6c89;};'use strict';var _=require(_0xb6d4('0x0'));var rp=require(_0xb6d4('0x1'));var md5=require(_0xb6d4('0x2'));var util=require('util');var Redis=require(_0xb6d4('0x3'));var intUtil=require(_0xb6d4('0x4'));var config=require('../../../../config/environment');var logger=require(_0xb6d4('0x5'))(_0xb6d4('0x6'));config[_0xb6d4('0x7')]=_[_0xb6d4('0x8')](config[_0xb6d4('0x7')],{'host':_0xb6d4('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb6d4('0x7')]));function emit(_0x2a792,_0x52a9b5,_0x44ea9d){io['to'](_0x2a792)[_0xb6d4('0xa')](_0x52a9b5,_0x44ea9d);}var headers={'Content-Type':_0xb6d4('0xb'),'Accept':_0xb6d4('0xb')};function getTicket(_0x5e582d,_0x12ff54,_0x118c2f,_0x293b18,_0x17c770){logger[_0xb6d4('0xc')](_0xb6d4('0xd'));return request({'uri':util[_0xb6d4('0xe')](_0xb6d4('0xf'),_0x5e582d[_0xb6d4('0x10')]),'method':'POST','body':{'ticket':_[_0xb6d4('0x11')]({'requester_id':_0x118c2f['id'],'submitter_id':_0x12ff54?_0x12ff54['id']:undefined,'assignee_id':_0x12ff54?_0x12ff54['id']:undefined,'tags':getTags(_0x293b18[_0xb6d4('0x12')],'name'),'subject':intUtil['getString'](_0x293b18[_0xb6d4('0x13')],_0x17c770,'\x20'),'description':intUtil['getString'](_0x293b18['Descriptions'],_0x17c770,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb6d4('0x14')](_0x293b18[_0xb6d4('0x15')],_0x17c770,'\x0a')}},getCustomFields(_0x293b18[_0xb6d4('0x16')],_0x17c770))}})['then'](function(_0x2375c5){logger[_0xb6d4('0xc')]('Ticket\x20created!');return _0x2375c5['ticket'];});}function getUser(_0x582d68,_0x1c7284){if(intUtil[_0xb6d4('0x17')](_0x1c7284)){logger['info'](_0xb6d4('0x18'),_0x1c7284);return request({'uri':util[_0xb6d4('0xe')]('%s/search.json',_0x582d68[_0xb6d4('0x10')]),'qs':{'query':util['format']('type:user\x20role:agent\x20email:%s',_0x1c7284)}})[_0xb6d4('0x19')](function(_0x222cb8){if(_0x222cb8[_0xb6d4('0x1a')]){logger[_0xb6d4('0xc')](_0xb6d4('0x1b'));return _['find'](_0x222cb8['results'],{'email':_0x1c7284,'role':'agent'});}else{logger['info'](_0xb6d4('0x1c'));return request({'uri':util[_0xb6d4('0xe')](_0xb6d4('0x1d'),_0x582d68[_0xb6d4('0x10')])})[_0xb6d4('0x19')](function(_0x91ed3){logger[_0xb6d4('0xc')](_0xb6d4('0x1e'));return _0x91ed3[_0xb6d4('0x1f')];});}});}else{logger['info'](_0xb6d4('0x1c'));return request({'uri':util[_0xb6d4('0xe')](_0xb6d4('0x1d'),_0x582d68[_0xb6d4('0x10')])})[_0xb6d4('0x19')](function(_0x30de95){logger['info'](_0xb6d4('0x1e'));return _0x30de95['user'];});}}function getEndUser(_0xa5942c,_0x2eaf96,_0x48eb84){logger['info']('Searching\x20enduser\x20with\x20phone',_0x48eb84);return request({'uri':util['format'](_0xb6d4('0x20'),_0xa5942c['remoteUri']),'qs':{'query':util['format'](_0xb6d4('0x21'),_0x48eb84)}})[_0xb6d4('0x19')](function(_0x1c1f21){var _0x1a6657;if(_0x1c1f21[_0xb6d4('0x22')][_0xb6d4('0x23')]){_0x1c1f21[_0xb6d4('0x22')]=_[_0xb6d4('0x24')](_0x1c1f21[_0xb6d4('0x22')],{'suspended':![],'role':_0xb6d4('0x25')});if(_0x1c1f21[_0xb6d4('0x22')][_0xb6d4('0x23')]){_0x1a6657=_['first'](_0x1c1f21[_0xb6d4('0x22')]);}}if(_0x1a6657){logger['info'](_0xb6d4('0x26'));return _0x1a6657;}else{logger[_0xb6d4('0xc')](_0xb6d4('0x27'));return request({'uri':util[_0xb6d4('0xe')](_0xb6d4('0x28'),_0xa5942c['remoteUri']),'method':_0xb6d4('0x29'),'body':{'user':{'role':'end-user','name':util[_0xb6d4('0xe')]('Caller\x20-\x20%s',_0x2eaf96||_0x48eb84),'phone':_0x48eb84}}})['then'](function(_0x3fc1ca){logger[_0xb6d4('0xc')](_0xb6d4('0x2a'));return _0x3fc1ca[_0xb6d4('0x1f')];});}});}function getAuth(_0x4501b3){var _0x42b0e6;if(_0x4501b3[_0xb6d4('0x2b')]===_0xb6d4('0x2c')){_0x42b0e6=util['format']('%s:%s',_0x4501b3[_0xb6d4('0x2d')],_0x4501b3[_0xb6d4('0x2c')]);}else if(_0x4501b3[_0xb6d4('0x2b')]===_0xb6d4('0x2e')){_0x42b0e6=util[_0xb6d4('0xe')](_0xb6d4('0x2f'),_0x4501b3[_0xb6d4('0x2d')],_0x4501b3['token']);}return util[_0xb6d4('0xe')](_0xb6d4('0x30'),new Buffer(_0x42b0e6)[_0xb6d4('0x31')](_0xb6d4('0x32')));}function request(_0x44fc22){logger[_0xb6d4('0x33')](_0xb6d4('0x34'),JSON[_0xb6d4('0x35')](_0x44fc22));return rp(_[_0xb6d4('0x8')](_0x44fc22,{'method':_0xb6d4('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x477059,_0x50dbe0){var _0x4a16a7=[];if(_0x477059&&_0x477059[_0xb6d4('0x23')]>0x0){_0x4a16a7=_[_0xb6d4('0x37')](_0x477059,_0x50dbe0);}return _0x4a16a7;}function getCustomFields(_0x2e0ffd,_0x43ba29){var _0x7d9986=[];var _0x31f145={'custom_fields':[]};if(_0x2e0ffd[_0xb6d4('0x23')]>0x0){_[_0xb6d4('0x38')](_0x2e0ffd,function(_0x1e011c){if(_0x1e011c[_0xb6d4('0x39')]===_0xb6d4('0x3a')&&_0x1e011c[_0xb6d4('0x3b')]&&!_0x1e011c[_0xb6d4('0x3c')]){_0x31f145[_0x1e011c[_0xb6d4('0x3b')]['toLowerCase']()]=_0x1e011c[_0xb6d4('0x3d')][_0xb6d4('0x31')]();}else if(_0x1e011c['type']===_0xb6d4('0x3a')&&_0x1e011c[_0xb6d4('0x3e')]&&_0x1e011c[_0xb6d4('0x3c')]){_0x31f145[_0xb6d4('0x3f')][_0xb6d4('0x40')]({'id':_0x1e011c['idField'],'value':_0x1e011c['content'][_0xb6d4('0x31')]()});}else if(_0x1e011c['type']===_0xb6d4('0x41')&&_0x1e011c[_0xb6d4('0x42')]&&_0x1e011c['idField']&&_0x1e011c[_0xb6d4('0x3c')]){_0x43ba29[_0x1e011c[_0xb6d4('0x42')]]&&_0x31f145[_0xb6d4('0x3f')]['push']({'id':_0x1e011c['idField'],'value':_0x43ba29[_0x1e011c['variableName']][_0xb6d4('0x31')]()});}else if(_0x1e011c[_0xb6d4('0x39')]===_0xb6d4('0x43')&&_0x1e011c['Variable']&&_0x1e011c['Variable']['name']&&_0x1e011c[_0xb6d4('0x3e')]&&_0x1e011c['customField']){_0x43ba29[_0x1e011c[_0xb6d4('0x44')][_0xb6d4('0x45')][_0xb6d4('0x46')]()]&&_0x31f145[_0xb6d4('0x3f')][_0xb6d4('0x40')]({'id':_0x1e011c[_0xb6d4('0x3e')],'value':_0x43ba29[_0x1e011c[_0xb6d4('0x44')][_0xb6d4('0x45')][_0xb6d4('0x46')]()]['toString']()});}});}return _0x31f145;}exports[_0xb6d4('0x47')]=function(_0x3323c9,_0x46d9bb,_0x3f1f1b,_0x198c7f,_0x14c547,_0x1a0e54){var _0x51efc6,_0x4ac561;_0x1a0e54['remoteUri']=intUtil[_0xb6d4('0x48')](_0x1a0e54[_0xb6d4('0x10')]);_0x1a0e54[_0xb6d4('0x49')]=intUtil['stripTrailingSlash'](_0x1a0e54['serverUrl']);if(_0x14c547&&_0x14c547['monitor_format']){logger['info'](_0xb6d4('0x4a'),'Recording\x20is\x20enabled!');_0x46d9bb['recordingURL']=util['format'](_0xb6d4('0x4b'),_0x1a0e54[_0xb6d4('0x49')],_0x46d9bb[_0xb6d4('0x4c')],md5(_0x46d9bb[_0xb6d4('0x4c')]));}else{_0x46d9bb[_0xb6d4('0x4d')]='';}headers[_0xb6d4('0x4e')]=getAuth(_0x1a0e54);return getUser(_0x1a0e54,_0x198c7f[_0xb6d4('0x4f')])[_0xb6d4('0x19')](function(_0x5cdcb8){_0x51efc6=_0x5cdcb8;logger[_0xb6d4('0xc')](_0xb6d4('0x50'),_0x51efc6['id']);return getEndUser(_0x1a0e54,_0x46d9bb['calleridname'],_0x46d9bb['calleridnum']);})[_0xb6d4('0x19')](function(_0x52b22f){_0x4ac561=_0x52b22f;logger[_0xb6d4('0xc')](_0xb6d4('0x51'),_0x4ac561['id']);return getTicket(_0x1a0e54,_0x51efc6,_0x4ac561,_0x3f1f1b,_0x46d9bb);})[_0xb6d4('0x19')](function(_0x2fd7a4){if(_0x2fd7a4){logger['info']('The\x20Ticket\x20ID\x20is:',_0x2fd7a4['id']);switch(_0x1a0e54[_0xb6d4('0x39')]){case _0xb6d4('0x52'):logger[_0xb6d4('0xc')](_0xb6d4('0x4a'),_0xb6d4('0x53'));return request({'uri':util['format'](_0xb6d4('0x54'),_0x1a0e54['remoteUri'],_0x51efc6['id'],_0x2fd7a4['id']),'method':_0xb6d4('0x29')});case'newTab':logger[_0xb6d4('0xc')](_0xb6d4('0x4a'),_0xb6d4('0x55'));emit(util[_0xb6d4('0xe')]('user:%s',_0x198c7f[_0xb6d4('0x45')]),_0xb6d4('0x56'),{'uri':util['format']('%s/agent/tickets/%s',_0x1a0e54[_0xb6d4('0x10')][_0xb6d4('0x57')](_0xb6d4('0x58'),''),_0x2fd7a4['id'])});break;default:logger[_0xb6d4('0x59')](_0xb6d4('0x4a'),_0xb6d4('0x5a'));}}})[_0xb6d4('0x5b')](function(_0x21d756){logger[_0xb6d4('0x59')](_0xb6d4('0x5c'),util['inspect'](_0x21d756,{'showHidden':!![],'depth':null}));});};exports[_0xb6d4('0x5d')]=function(_0x28c54b,_0x3a7b0d,_0x55e54e,_0x6349ea,_0x36839f,_0x538b23,_0x200646){var _0x56ef1c,_0x4f8ba3;_0x538b23['remoteUri']=intUtil[_0xb6d4('0x48')](_0x538b23[_0xb6d4('0x10')]);_0x538b23[_0xb6d4('0x49')]=intUtil[_0xb6d4('0x48')](_0x538b23['serverUrl']);if(_0x200646&&_0x200646[_0xb6d4('0x5e')]&&_0x200646['recordingFormat']!==_0xb6d4('0x5f')){logger['info'](_0xb6d4('0x60'),_0xb6d4('0x61'));_0x3a7b0d[_0xb6d4('0x4d')]=util[_0xb6d4('0xe')](_0xb6d4('0x4b'),_0x538b23[_0xb6d4('0x49')],_0x3a7b0d['uniqueid'],md5(_0x3a7b0d[_0xb6d4('0x4c')]));}headers[_0xb6d4('0x4e')]=getAuth(_0x538b23);return getUser(_0x538b23,_0x6349ea[_0xb6d4('0x4f')])['then'](function(_0x367ebc){_0x56ef1c=_0x367ebc;logger[_0xb6d4('0xc')]('The\x20User\x20ID\x20is:',_0x56ef1c['id']);return getEndUser(_0x538b23,_0x3a7b0d[_0xb6d4('0x62')],_0x3a7b0d[_0xb6d4('0x63')]);})[_0xb6d4('0x19')](function(_0x466bbc){_0x4f8ba3=_0x466bbc;logger[_0xb6d4('0xc')]('The\x20Enduser\x20ID\x20is:',_0x4f8ba3['id']);return getTicket(_0x538b23,_0x56ef1c,_0x4f8ba3,_0x55e54e,_0x3a7b0d);})[_0xb6d4('0x19')](function(_0x22764d){if(_0x22764d){logger[_0xb6d4('0xc')]('The\x20Ticket\x20ID\x20is:',_0x22764d['id']);switch(_0x538b23[_0xb6d4('0x39')]){case'integrationTab':logger['info'](_0xb6d4('0x60'),_0xb6d4('0x53'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x538b23[_0xb6d4('0x10')],_0x56ef1c['id'],_0x22764d['id']),'method':_0xb6d4('0x29')});case _0xb6d4('0x64'):logger[_0xb6d4('0xc')]('[OUTBOUND]',_0xb6d4('0x55'));emit(util[_0xb6d4('0xe')](_0xb6d4('0x65'),_0x6349ea[_0xb6d4('0x45')]),_0xb6d4('0x56'),{'uri':util[_0xb6d4('0xe')]('%s/agent/tickets/%s',_0x538b23[_0xb6d4('0x10')][_0xb6d4('0x57')](_0xb6d4('0x58'),''),_0x22764d['id'])});break;default:logger['error'](_0xb6d4('0x60'),_0xb6d4('0x5a'));}}})[_0xb6d4('0x5b')](function(_0x4c6b73){logger[_0xb6d4('0x59')](_0xb6d4('0x66'),util[_0xb6d4('0x67')](_0x4c6b73,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x4b5406,_0x3ff0ea,_0x11db99,_0x4cec02,_0x30e864,_0x1b69ee){var _0x3d5b9,_0x4109ee;_0x1b69ee[_0xb6d4('0x10')]=intUtil[_0xb6d4('0x48')](_0x1b69ee[_0xb6d4('0x10')]);_0x1b69ee['serverUrl']=intUtil['stripTrailingSlash'](_0x1b69ee['serverUrl']);if(_0x30e864&&_0x30e864[_0xb6d4('0x68')]){logger[_0xb6d4('0xc')]('['+_0x3ff0ea[_0xb6d4('0x69')][_0xb6d4('0x6a')]()+']',_0xb6d4('0x61'));_0x3ff0ea[_0xb6d4('0x4d')]=util[_0xb6d4('0xe')](_0xb6d4('0x4b'),_0x1b69ee[_0xb6d4('0x49')],_0x3ff0ea['uniqueid'],md5(_0x3ff0ea[_0xb6d4('0x4c')]));}else{_0x3ff0ea['recordingURL']='';}headers[_0xb6d4('0x4e')]=getAuth(_0x1b69ee);return getUser(_0x1b69ee)[_0xb6d4('0x19')](function(_0x20d2f1){_0x3d5b9=_0x20d2f1;logger[_0xb6d4('0xc')](_0xb6d4('0x50'),_0x3d5b9['id']);return getEndUser(_0x1b69ee,_0x3ff0ea[_0xb6d4('0x6b')],_0x3ff0ea[_0xb6d4('0x6c')]);})[_0xb6d4('0x19')](function(_0x16a7a4){_0x4109ee=_0x16a7a4;logger[_0xb6d4('0xc')](_0xb6d4('0x51'),_0x4109ee['id']);return getTicket(_0x1b69ee,_0x3d5b9,_0x4109ee,_0x11db99,_0x3ff0ea);})[_0xb6d4('0x19')](function(_0x26787c){if(_0x26787c){logger[_0xb6d4('0xc')]('The\x20Ticket\x20ID\x20is:',_0x26787c['id']);}})[_0xb6d4('0x5b')](function(_0x15c202){logger[_0xb6d4('0x59')]('['+_0x3ff0ea[_0xb6d4('0x69')][_0xb6d4('0x6a')]()+']'+_0xb6d4('0x6d'),util['inspect'](_0x15c202,{'showHidden':!![],'depth':null}));});};