Built motion from commit da617fac.|2.6.6
[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 _0x0965=['results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','filter','end-user','length','first','%s/users.json','Enduser\x20created.','authType','password','username','token','%s/token:%s','Basic\x20%s','base64','debug','[HTTP]','stringify','defaults','GET','map','forEach','includes','string','type','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','toString','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','trigger:browser:url','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','calleridname','request-promise','util','ioredis','../../../../config/environment','redis','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','format','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find'];(function(_0x3f6e68,_0x53142a){var _0x234f16=function(_0x4e3b50){while(--_0x4e3b50){_0x3f6e68['push'](_0x3f6e68['shift']());}};_0x234f16(++_0x53142a);}(_0x0965,0xb4));var _0x5096=function(_0x16037f,_0x375f3b){_0x16037f=_0x16037f-0x0;var _0x569806=_0x0965[_0x16037f];return _0x569806;};'use strict';var _=require('lodash');var rp=require(_0x5096('0x0'));var md5=require('md5');var util=require(_0x5096('0x1'));var Redis=require(_0x5096('0x2'));var intUtil=require('./util');var config=require(_0x5096('0x3'));var logger=require('../../../../config/logger')('zendesk');config[_0x5096('0x4')]=_['defaults'](config[_0x5096('0x4')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x842dcd,_0x195660,_0x50bfea){io['to'](_0x842dcd)[_0x5096('0x5')](_0x195660,_0x50bfea);}var headers={'Content-Type':_0x5096('0x6'),'Accept':'application/json'};function getTicket(_0xd697d6,_0x5f311f,_0x3a8812,_0x55facb,_0xb65175){logger[_0x5096('0x7')](_0x5096('0x8'));return request({'uri':util['format'](_0x5096('0x9'),_0xd697d6[_0x5096('0xa')]),'method':_0x5096('0xb'),'body':{'ticket':_[_0x5096('0xc')]({'requester_id':_0x3a8812['id'],'submitter_id':_0x5f311f?_0x5f311f['id']:undefined,'assignee_id':_0x5f311f?_0x5f311f['id']:undefined,'tags':getTags(_0x55facb[_0x5096('0xd')],_0x5096('0xe')),'subject':intUtil[_0x5096('0xf')](_0x55facb[_0x5096('0x10')],_0xb65175,'\x20'),'description':intUtil[_0x5096('0xf')](_0x55facb['Descriptions'],_0xb65175,'\x0a'),'comment':{'public':![],'body':intUtil[_0x5096('0xf')](_0x55facb[_0x5096('0x11')],_0xb65175,'\x0a')}},getCustomFields(_0x55facb['Fields'],_0xb65175))}})[_0x5096('0x12')](function(_0x1231de){logger['info'](_0x5096('0x13'));return _0x1231de[_0x5096('0x14')];});}function getUser(_0x212ecd,_0x1123fe){if(intUtil[_0x5096('0x15')](_0x1123fe)){logger[_0x5096('0x7')](_0x5096('0x16'),_0x1123fe);return request({'uri':util[_0x5096('0x17')]('%s/search.json',_0x212ecd[_0x5096('0xa')]),'qs':{'query':util[_0x5096('0x17')](_0x5096('0x18'),_0x1123fe)}})[_0x5096('0x12')](function(_0x5b1a42){if(_0x5b1a42[_0x5096('0x19')]){logger[_0x5096('0x7')](_0x5096('0x1a'));return _[_0x5096('0x1b')](_0x5b1a42[_0x5096('0x1c')],{'email':_0x1123fe,'role':'agent'});}else{logger['info'](_0x5096('0x1d'));return request({'uri':util[_0x5096('0x17')](_0x5096('0x1e'),_0x212ecd[_0x5096('0xa')])})[_0x5096('0x12')](function(_0x737cbe){logger['info'](_0x5096('0x1f'));return _0x737cbe['user'];});}});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x5096('0x17')](_0x5096('0x1e'),_0x212ecd[_0x5096('0xa')])})[_0x5096('0x12')](function(_0x4c098f){logger['info'](_0x5096('0x1f'));return _0x4c098f[_0x5096('0x20')];});}}function getEndUser(_0xb8bb82,_0x395dea,_0x64207f){logger[_0x5096('0x7')](_0x5096('0x21'),_0x64207f);return request({'uri':util[_0x5096('0x17')]('%s/search.json',_0xb8bb82[_0x5096('0xa')]),'qs':{'query':util[_0x5096('0x17')]('type:user\x20role:end-user\x20phone:%s',_0x64207f)}})['then'](function(_0xa715e1){var _0xeb230e;if(_0xa715e1[_0x5096('0x1c')]['length']){_0xa715e1[_0x5096('0x1c')]=_[_0x5096('0x22')](_0xa715e1[_0x5096('0x1c')],{'suspended':![],'role':_0x5096('0x23')});if(_0xa715e1[_0x5096('0x1c')][_0x5096('0x24')]){_0xeb230e=_[_0x5096('0x25')](_0xa715e1[_0x5096('0x1c')]);}}if(_0xeb230e){logger[_0x5096('0x7')]('Enduser\x20found!');return _0xeb230e;}else{logger[_0x5096('0x7')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x5096('0x17')](_0x5096('0x26'),_0xb8bb82['remoteUri']),'method':_0x5096('0xb'),'body':{'user':{'role':_0x5096('0x23'),'name':util[_0x5096('0x17')]('Caller\x20-\x20%s',_0x395dea||_0x64207f),'phone':_0x64207f}}})['then'](function(_0x2b1a2a){logger['info'](_0x5096('0x27'));return _0x2b1a2a['user'];});}});}function getAuth(_0x3185c9){var _0x158e1b;if(_0x3185c9[_0x5096('0x28')]===_0x5096('0x29')){_0x158e1b=util[_0x5096('0x17')]('%s:%s',_0x3185c9[_0x5096('0x2a')],_0x3185c9[_0x5096('0x29')]);}else if(_0x3185c9[_0x5096('0x28')]===_0x5096('0x2b')){_0x158e1b=util[_0x5096('0x17')](_0x5096('0x2c'),_0x3185c9[_0x5096('0x2a')],_0x3185c9[_0x5096('0x2b')]);}return util[_0x5096('0x17')](_0x5096('0x2d'),new Buffer(_0x158e1b)['toString'](_0x5096('0x2e')));}function request(_0x487fca){logger[_0x5096('0x2f')](_0x5096('0x30'),JSON[_0x5096('0x31')](_0x487fca));return rp(_[_0x5096('0x32')](_0x487fca,{'method':_0x5096('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x57a45d,_0x2836fe){var _0x4088b1=[];if(_0x57a45d&&_0x57a45d[_0x5096('0x24')]>0x0){_0x4088b1=_[_0x5096('0x34')](_0x57a45d,_0x2836fe);}return _0x4088b1;}function getCustomFields(_0x3a2c24,_0x1fa1a0){var _0x3109f8=[];var _0x2b5fe5={'custom_fields':[]};if(_0x3a2c24[_0x5096('0x24')]>0x0){_[_0x5096('0x35')](_0x3a2c24,function(_0x20c87b){if(_[_0x5096('0x36')]([_0x5096('0x37'),'picklist'],_0x20c87b[_0x5096('0x38')])&&_0x20c87b[_0x5096('0x39')]&&!_0x20c87b['customField']){_0x2b5fe5[_0x20c87b[_0x5096('0x39')][_0x5096('0x3a')]()]=_0x20c87b[_0x5096('0x3b')]['toString']();}else if(_['includes']([_0x5096('0x37'),_0x5096('0x3c')],_0x20c87b[_0x5096('0x38')])&&_0x20c87b[_0x5096('0x3d')]&&_0x20c87b[_0x5096('0x3e')]){_0x2b5fe5[_0x5096('0x3f')]['push']({'id':_0x20c87b['idField'],'value':_0x20c87b[_0x5096('0x3b')][_0x5096('0x40')]()});}else if(_0x20c87b[_0x5096('0x38')]==='variable'&&_0x20c87b[_0x5096('0x41')]&&_0x20c87b[_0x5096('0x3d')]&&_0x20c87b[_0x5096('0x3e')]){_0x1fa1a0[_0x20c87b['variableName']]&&_0x2b5fe5[_0x5096('0x3f')][_0x5096('0x42')]({'id':_0x20c87b['idField'],'value':_0x1fa1a0[_0x20c87b[_0x5096('0x41')]]['toString']()});}else if(_0x20c87b[_0x5096('0x38')]===_0x5096('0x43')&&_0x20c87b[_0x5096('0x44')]&&_0x20c87b[_0x5096('0x44')][_0x5096('0xe')]&&_0x20c87b['idField']&&_0x20c87b[_0x5096('0x3e')]){_0x1fa1a0[_0x20c87b[_0x5096('0x44')][_0x5096('0xe')][_0x5096('0x3a')]()]&&_0x2b5fe5[_0x5096('0x3f')][_0x5096('0x42')]({'id':_0x20c87b[_0x5096('0x3d')],'value':_0x1fa1a0[_0x20c87b['Variable'][_0x5096('0xe')][_0x5096('0x3a')]()][_0x5096('0x40')]()});}});}return _0x2b5fe5;}exports[_0x5096('0x45')]=function(_0xd4b57d,_0x41a9d1,_0x5c5291,_0x34ea2a,_0x4215f1,_0x2d0842){var _0x375e33,_0x24174b;_0x2d0842[_0x5096('0xa')]=intUtil[_0x5096('0x46')](_0x2d0842[_0x5096('0xa')]);_0x2d0842[_0x5096('0x47')]=intUtil[_0x5096('0x46')](_0x2d0842[_0x5096('0x47')]);if(_0x4215f1&&_0x4215f1[_0x5096('0x48')]){logger[_0x5096('0x7')](_0x5096('0x49'),_0x5096('0x4a'));_0x41a9d1[_0x5096('0x4b')]=util[_0x5096('0x17')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2d0842[_0x5096('0x47')],_0x41a9d1[_0x5096('0x4c')],md5(_0x41a9d1[_0x5096('0x4c')]));}else{_0x41a9d1[_0x5096('0x4b')]='';}headers[_0x5096('0x4d')]=getAuth(_0x2d0842);return getUser(_0x2d0842,_0x34ea2a['email'])[_0x5096('0x12')](function(_0x2dfef2){_0x375e33=_0x2dfef2;logger[_0x5096('0x7')](_0x5096('0x4e'),_0x375e33['id']);return getEndUser(_0x2d0842,_0x41a9d1['calleridname'],_0x41a9d1[_0x5096('0x4f')]);})[_0x5096('0x12')](function(_0x323a61){_0x24174b=_0x323a61;logger[_0x5096('0x7')](_0x5096('0x50'),_0x24174b['id']);return getTicket(_0x2d0842,_0x375e33,_0x24174b,_0x5c5291,_0x41a9d1);})[_0x5096('0x12')](function(_0x115365){if(_0x115365){logger[_0x5096('0x7')](_0x5096('0x51'),_0x115365['id']);switch(_0x2d0842['type']){case _0x5096('0x52'):logger[_0x5096('0x7')](_0x5096('0x49'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x5096('0x17')](_0x5096('0x53'),_0x2d0842[_0x5096('0xa')],_0x375e33['id'],_0x115365['id']),'method':_0x5096('0xb')});case _0x5096('0x54'):logger['info'](_0x5096('0x49'),_0x5096('0x55'));emit(util[_0x5096('0x17')](_0x5096('0x56'),_0x34ea2a[_0x5096('0xe')]),'trigger:browser:url',{'uri':util[_0x5096('0x17')](_0x5096('0x57'),_0x2d0842['remoteUri'][_0x5096('0x58')](_0x5096('0x59'),''),_0x115365['id'])});break;default:logger[_0x5096('0x5a')](_0x5096('0x49'),_0x5096('0x5b'));}}})[_0x5096('0x5c')](function(_0x2a210b){logger[_0x5096('0x5a')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x5096('0x5d')](_0x2a210b,{'showHidden':!![],'depth':null}));});};exports[_0x5096('0x5e')]=function(_0x24d96b,_0x5a50dd,_0x1ebff1,_0x5b7437,_0x59a7c2,_0x4bd4e8,_0x2233ef){var _0x5a8e9d,_0x259432;_0x4bd4e8[_0x5096('0xa')]=intUtil[_0x5096('0x46')](_0x4bd4e8['remoteUri']);_0x4bd4e8[_0x5096('0x47')]=intUtil[_0x5096('0x46')](_0x4bd4e8[_0x5096('0x47')]);if(_0x2233ef&&_0x2233ef[_0x5096('0x5f')]&&_0x2233ef['recordingFormat']!==_0x5096('0x60')){logger[_0x5096('0x7')](_0x5096('0x61'),_0x5096('0x4a'));_0x5a50dd[_0x5096('0x4b')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4bd4e8[_0x5096('0x47')],_0x5a50dd[_0x5096('0x4c')],md5(_0x5a50dd[_0x5096('0x4c')]));}headers[_0x5096('0x4d')]=getAuth(_0x4bd4e8);return getUser(_0x4bd4e8,_0x5b7437['email'])['then'](function(_0x3383b5){_0x5a8e9d=_0x3383b5;logger['info'](_0x5096('0x4e'),_0x5a8e9d['id']);return getEndUser(_0x4bd4e8,_0x5a50dd[_0x5096('0x62')],_0x5a50dd['destcalleridnum']);})[_0x5096('0x12')](function(_0x57d8e0){_0x259432=_0x57d8e0;logger['info'](_0x5096('0x50'),_0x259432['id']);return getTicket(_0x4bd4e8,_0x5a8e9d,_0x259432,_0x1ebff1,_0x5a50dd);})['then'](function(_0x1ea10f){if(_0x1ea10f){logger[_0x5096('0x7')](_0x5096('0x51'),_0x1ea10f['id']);switch(_0x4bd4e8[_0x5096('0x38')]){case _0x5096('0x52'):logger['info'](_0x5096('0x61'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x5096('0x17')](_0x5096('0x53'),_0x4bd4e8['remoteUri'],_0x5a8e9d['id'],_0x1ea10f['id']),'method':_0x5096('0xb')});case _0x5096('0x54'):logger[_0x5096('0x7')](_0x5096('0x61'),_0x5096('0x55'));emit(util['format']('user:%s',_0x5b7437[_0x5096('0xe')]),_0x5096('0x63'),{'uri':util[_0x5096('0x17')](_0x5096('0x57'),_0x4bd4e8[_0x5096('0xa')]['replace']('/api/v2',''),_0x1ea10f['id'])});break;default:logger[_0x5096('0x5a')](_0x5096('0x61'),_0x5096('0x5b'));}}})[_0x5096('0x5c')](function(_0x406b4e){logger[_0x5096('0x5a')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x5096('0x5d')](_0x406b4e,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x2af256,_0x39164b,_0xee1a60,_0x3baa59,_0xf0342,_0x4e2b5b){var _0x324e79,_0x37680d;_0x4e2b5b['remoteUri']=intUtil[_0x5096('0x46')](_0x4e2b5b[_0x5096('0xa')]);_0x4e2b5b['serverUrl']=intUtil[_0x5096('0x46')](_0x4e2b5b[_0x5096('0x47')]);if(_0xf0342&&_0xf0342['monitor_format']){logger['info']('['+_0x39164b[_0x5096('0x64')][_0x5096('0x65')]()+']',_0x5096('0x4a'));_0x39164b['recordingURL']=util[_0x5096('0x17')](_0x5096('0x66'),_0x4e2b5b[_0x5096('0x47')],_0x39164b[_0x5096('0x4c')],md5(_0x39164b[_0x5096('0x4c')]));}else{_0x39164b[_0x5096('0x4b')]='';}headers[_0x5096('0x4d')]=getAuth(_0x4e2b5b);return getUser(_0x4e2b5b)[_0x5096('0x12')](function(_0x2ca580){_0x324e79=_0x2ca580;logger[_0x5096('0x7')](_0x5096('0x4e'),_0x324e79['id']);return getEndUser(_0x4e2b5b,_0x39164b[_0x5096('0x67')],_0x39164b[_0x5096('0x4f')]);})[_0x5096('0x12')](function(_0x2b783c){_0x37680d=_0x2b783c;logger[_0x5096('0x7')]('The\x20Enduser\x20ID\x20is:',_0x37680d['id']);return getTicket(_0x4e2b5b,_0x324e79,_0x37680d,_0xee1a60,_0x39164b);})[_0x5096('0x12')](function(_0x410a8b){if(_0x410a8b){logger['info'](_0x5096('0x51'),_0x410a8b['id']);}})[_0x5096('0x5c')](function(_0x35f135){logger['error']('['+_0x39164b[_0x5096('0x64')][_0x5096('0x65')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x35f135,{'showHidden':!![],'depth':null}));});};