Built motion from commit 97153652.|2.6.26
[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 _0xde42=['defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','merge','Tags','name','Subjects','Descriptions','getString','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','count','Agent\x20found!','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','filter','first','Enduser\x20found!','%s/users.json','POST','end-user','Caller\x20-\x20%s','user','authType','password','%s:%s','username','%s/token:%s','toString','base64','debug','[HTTP]','stringify','GET','map','includes','string','type','nameField','customField','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','toLowerCase','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','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','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','monitor_format','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','redis'];(function(_0x11b7bd,_0x3923ba){var _0x29a90b=function(_0x3a74a3){while(--_0x3a74a3){_0x11b7bd['push'](_0x11b7bd['shift']());}};_0x29a90b(++_0x3923ba);}(_0xde42,0x1be));var _0x2de4=function(_0x5b3a35,_0x312e9b){_0x5b3a35=_0x5b3a35-0x0;var _0x4383df=_0xde42[_0x5b3a35];return _0x4383df;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0x2de4('0x0'));var Redis=require(_0x2de4('0x1'));var intUtil=require('./util');var config=require(_0x2de4('0x2'));var logger=require(_0x2de4('0x3'))(_0x2de4('0x4'));config[_0x2de4('0x5')]=_[_0x2de4('0x6')](config[_0x2de4('0x5')],{'host':_0x2de4('0x7'),'port':0x18eb});var io=require(_0x2de4('0x8'))(new Redis(config[_0x2de4('0x5')]));function emit(_0x5ecc3d,_0x543284,_0x1b9e4d){io['to'](_0x5ecc3d)[_0x2de4('0x9')](_0x543284,_0x1b9e4d);}var headers={'Content-Type':_0x2de4('0xa'),'Accept':'application/json'};function getTicket(_0x2dbd7b,_0x23cb1b,_0x58b345,_0x249dc5,_0x262885){logger[_0x2de4('0xb')](_0x2de4('0xc'));return request({'uri':util[_0x2de4('0xd')](_0x2de4('0xe'),_0x2dbd7b['remoteUri']),'method':'POST','body':{'ticket':_[_0x2de4('0xf')]({'requester_id':_0x58b345['id'],'submitter_id':_0x23cb1b?_0x23cb1b['id']:undefined,'assignee_id':_0x23cb1b?_0x23cb1b['id']:undefined,'tags':getTags(_0x249dc5[_0x2de4('0x10')],_0x2de4('0x11')),'subject':intUtil['getString'](_0x249dc5[_0x2de4('0x12')],_0x262885,'\x20'),'description':intUtil['getString'](_0x249dc5[_0x2de4('0x13')],_0x262885,'\x0a'),'comment':{'public':![],'body':intUtil[_0x2de4('0x14')](_0x249dc5['Descriptions'],_0x262885,'\x0a')}},getCustomFields(_0x249dc5[_0x2de4('0x15')],_0x262885))}})[_0x2de4('0x16')](function(_0x50d4b0){logger[_0x2de4('0xb')](_0x2de4('0x17'));return _0x50d4b0[_0x2de4('0x18')];});}function getUser(_0x4db54e,_0x5cba65){if(intUtil[_0x2de4('0x19')](_0x5cba65)){logger[_0x2de4('0xb')](_0x2de4('0x1a'),_0x5cba65);return request({'uri':util[_0x2de4('0xd')](_0x2de4('0x1b'),_0x4db54e[_0x2de4('0x1c')]),'qs':{'query':util[_0x2de4('0xd')]('type:user\x20role:agent\x20email:%s',_0x5cba65)}})[_0x2de4('0x16')](function(_0x1591cb){if(_0x1591cb[_0x2de4('0x1d')]){logger['info'](_0x2de4('0x1e'));return _['find'](_0x1591cb['results'],{'email':_0x5cba65,'role':_0x2de4('0x1f')});}else{logger[_0x2de4('0xb')](_0x2de4('0x20'));return request({'uri':util[_0x2de4('0xd')](_0x2de4('0x21'),_0x4db54e['remoteUri'])})[_0x2de4('0x16')](function(_0x384103){logger['info'](_0x2de4('0x22'));return _0x384103['user'];});}});}else{logger['info'](_0x2de4('0x20'));return request({'uri':util[_0x2de4('0xd')](_0x2de4('0x21'),_0x4db54e[_0x2de4('0x1c')])})['then'](function(_0x1ef31f){logger[_0x2de4('0xb')](_0x2de4('0x22'));return _0x1ef31f['user'];});}}function getEndUser(_0x11fa30,_0x26563b,_0x11de62){logger['info'](_0x2de4('0x23'),_0x11de62);return request({'uri':util[_0x2de4('0xd')]('%s/search.json',_0x11fa30['remoteUri']),'qs':{'query':util[_0x2de4('0xd')](_0x2de4('0x24'),_0x11de62)}})['then'](function(_0x1ba2d9){var _0x4e4540;if(_0x1ba2d9[_0x2de4('0x25')][_0x2de4('0x26')]){_0x1ba2d9[_0x2de4('0x25')]=_[_0x2de4('0x27')](_0x1ba2d9[_0x2de4('0x25')],{'suspended':![],'role':'end-user'});if(_0x1ba2d9[_0x2de4('0x25')][_0x2de4('0x26')]){_0x4e4540=_[_0x2de4('0x28')](_0x1ba2d9['results']);}}if(_0x4e4540){logger[_0x2de4('0xb')](_0x2de4('0x29'));return _0x4e4540;}else{logger[_0x2de4('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x2de4('0x2a'),_0x11fa30[_0x2de4('0x1c')]),'method':_0x2de4('0x2b'),'body':{'user':{'role':_0x2de4('0x2c'),'name':util[_0x2de4('0xd')](_0x2de4('0x2d'),_0x26563b||_0x11de62),'phone':_0x11de62}}})['then'](function(_0x31b3bc){logger[_0x2de4('0xb')]('Enduser\x20created.');return _0x31b3bc[_0x2de4('0x2e')];});}});}function getAuth(_0x480a96){var _0x590e59;if(_0x480a96[_0x2de4('0x2f')]===_0x2de4('0x30')){_0x590e59=util['format'](_0x2de4('0x31'),_0x480a96[_0x2de4('0x32')],_0x480a96[_0x2de4('0x30')]);}else if(_0x480a96[_0x2de4('0x2f')]==='token'){_0x590e59=util[_0x2de4('0xd')](_0x2de4('0x33'),_0x480a96[_0x2de4('0x32')],_0x480a96['token']);}return util[_0x2de4('0xd')]('Basic\x20%s',new Buffer(_0x590e59)[_0x2de4('0x34')](_0x2de4('0x35')));}function request(_0x10d3a1){logger[_0x2de4('0x36')](_0x2de4('0x37'),JSON[_0x2de4('0x38')](_0x10d3a1));return rp(_[_0x2de4('0x6')](_0x10d3a1,{'method':_0x2de4('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x389f12,_0x2e35ea){var _0x37dbcd=[];if(_0x389f12&&_0x389f12['length']>0x0){_0x37dbcd=_[_0x2de4('0x3a')](_0x389f12,_0x2e35ea);}return _0x37dbcd;}function getCustomFields(_0x519260,_0x330a2a){var _0x5d8b58=[];var _0x24eecc={'custom_fields':[]};if(_0x519260[_0x2de4('0x26')]>0x0){_['forEach'](_0x519260,function(_0x343760){if(_[_0x2de4('0x3b')]([_0x2de4('0x3c'),'picklist'],_0x343760[_0x2de4('0x3d')])&&_0x343760[_0x2de4('0x3e')]&&!_0x343760[_0x2de4('0x3f')]){_0x24eecc[_0x343760[_0x2de4('0x3e')]['toLowerCase']()]=_0x343760[_0x2de4('0x40')][_0x2de4('0x34')]();}else if(_[_0x2de4('0x3b')]([_0x2de4('0x3c'),'picklist'],_0x343760[_0x2de4('0x3d')])&&_0x343760[_0x2de4('0x41')]&&_0x343760['customField']){_0x24eecc[_0x2de4('0x42')][_0x2de4('0x43')]({'id':_0x343760[_0x2de4('0x41')],'value':_0x343760[_0x2de4('0x40')][_0x2de4('0x34')]()});}else if(_0x343760[_0x2de4('0x3d')]===_0x2de4('0x44')&&_0x343760['variableName']&&_0x343760[_0x2de4('0x41')]&&_0x343760[_0x2de4('0x3f')]){_0x330a2a[_0x343760[_0x2de4('0x45')]]&&_0x24eecc[_0x2de4('0x42')][_0x2de4('0x43')]({'id':_0x343760['idField'],'value':_0x330a2a[_0x343760[_0x2de4('0x45')]]['toString']()});}else if(_0x343760[_0x2de4('0x3d')]===_0x2de4('0x46')&&_0x343760[_0x2de4('0x47')]&&_0x343760[_0x2de4('0x47')][_0x2de4('0x11')]&&_0x343760[_0x2de4('0x41')]&&_0x343760['customField']){_0x330a2a[_0x343760[_0x2de4('0x47')][_0x2de4('0x11')][_0x2de4('0x48')]()]&&_0x24eecc[_0x2de4('0x42')][_0x2de4('0x43')]({'id':_0x343760[_0x2de4('0x41')],'value':_0x330a2a[_0x343760[_0x2de4('0x47')][_0x2de4('0x11')][_0x2de4('0x48')]()]['toString']()});}});}return _0x24eecc;}exports['queue']=function(_0x2748bf,_0x18a703,_0x1b70a7,_0xccf890,_0x52b9ca,_0x2cb17c){var _0x2ca23e,_0x111366;_0x2cb17c[_0x2de4('0x1c')]=intUtil[_0x2de4('0x49')](_0x2cb17c[_0x2de4('0x1c')]);_0x2cb17c[_0x2de4('0x4a')]=intUtil[_0x2de4('0x49')](_0x2cb17c[_0x2de4('0x4a')]);if(_0x52b9ca&&_0x52b9ca['monitor_format']){logger[_0x2de4('0xb')](_0x2de4('0x4b'),_0x2de4('0x4c'));_0x18a703[_0x2de4('0x4d')]=util['format'](_0x2de4('0x4e'),_0x2cb17c[_0x2de4('0x4a')],_0x18a703[_0x2de4('0x4f')],md5(_0x18a703[_0x2de4('0x4f')]));}else{_0x18a703[_0x2de4('0x4d')]='';}headers[_0x2de4('0x50')]=getAuth(_0x2cb17c);return getUser(_0x2cb17c,_0xccf890[_0x2de4('0x51')])[_0x2de4('0x16')](function(_0x274a7a){_0x2ca23e=_0x274a7a;logger[_0x2de4('0xb')](_0x2de4('0x52'),_0x2ca23e['id']);return getEndUser(_0x2cb17c,_0x18a703[_0x2de4('0x53')],_0x18a703[_0x2de4('0x54')]);})[_0x2de4('0x16')](function(_0x46f925){_0x111366=_0x46f925;logger[_0x2de4('0xb')](_0x2de4('0x55'),_0x111366['id']);return getTicket(_0x2cb17c,_0x2ca23e,_0x111366,_0x1b70a7,_0x18a703);})[_0x2de4('0x16')](function(_0x42d2f1){if(_0x42d2f1){logger[_0x2de4('0xb')]('The\x20Ticket\x20ID\x20is:',_0x42d2f1['id']);switch(_0x2cb17c[_0x2de4('0x3d')]){case _0x2de4('0x56'):logger['info']('[QUEUE]',_0x2de4('0x57'));return request({'uri':util[_0x2de4('0xd')](_0x2de4('0x58'),_0x2cb17c['remoteUri'],_0x2ca23e['id'],_0x42d2f1['id']),'method':_0x2de4('0x2b')});case _0x2de4('0x59'):logger['info']('[QUEUE]',_0x2de4('0x5a'));emit(util[_0x2de4('0xd')](_0x2de4('0x5b'),_0xccf890[_0x2de4('0x11')]),_0x2de4('0x5c'),{'uri':util[_0x2de4('0xd')](_0x2de4('0x5d'),_0x2cb17c['remoteUri'][_0x2de4('0x5e')](_0x2de4('0x5f'),''),_0x42d2f1['id'])});break;default:logger[_0x2de4('0x60')](_0x2de4('0x4b'),_0x2de4('0x61'));}}})[_0x2de4('0x62')](function(_0x26bbd3){logger[_0x2de4('0x60')](_0x2de4('0x63'),util[_0x2de4('0x64')](_0x26bbd3,{'showHidden':!![],'depth':null}));});};exports[_0x2de4('0x65')]=function(_0x242907,_0x386020,_0x49ca56,_0x258c65,_0x3fea42,_0x101c5e,_0x477db8){var _0x51c5d5,_0x16520a;_0x101c5e['remoteUri']=intUtil['stripTrailingSlash'](_0x101c5e[_0x2de4('0x1c')]);_0x101c5e[_0x2de4('0x4a')]=intUtil[_0x2de4('0x49')](_0x101c5e[_0x2de4('0x4a')]);if(_0x477db8&&_0x477db8[_0x2de4('0x66')]&&_0x477db8[_0x2de4('0x66')]!=='none'){logger[_0x2de4('0xb')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x386020['recordingURL']=util[_0x2de4('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x101c5e[_0x2de4('0x4a')],_0x386020[_0x2de4('0x4f')],md5(_0x386020[_0x2de4('0x4f')]));}headers['Authorization']=getAuth(_0x101c5e);return getUser(_0x101c5e,_0x258c65[_0x2de4('0x51')])['then'](function(_0x214581){_0x51c5d5=_0x214581;logger[_0x2de4('0xb')]('The\x20User\x20ID\x20is:',_0x51c5d5['id']);return getEndUser(_0x101c5e,_0x386020[_0x2de4('0x67')],_0x386020[_0x2de4('0x68')]);})['then'](function(_0x5ec6ba){_0x16520a=_0x5ec6ba;logger[_0x2de4('0xb')](_0x2de4('0x55'),_0x16520a['id']);return getTicket(_0x101c5e,_0x51c5d5,_0x16520a,_0x49ca56,_0x386020);})['then'](function(_0xd944dc){if(_0xd944dc){logger[_0x2de4('0xb')](_0x2de4('0x69'),_0xd944dc['id']);switch(_0x101c5e[_0x2de4('0x3d')]){case _0x2de4('0x56'):logger[_0x2de4('0xb')](_0x2de4('0x6a'),_0x2de4('0x57'));return request({'uri':util[_0x2de4('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x101c5e[_0x2de4('0x1c')],_0x51c5d5['id'],_0xd944dc['id']),'method':_0x2de4('0x2b')});case _0x2de4('0x59'):logger['info'](_0x2de4('0x6a'),_0x2de4('0x5a'));emit(util['format'](_0x2de4('0x5b'),_0x258c65[_0x2de4('0x11')]),_0x2de4('0x5c'),{'uri':util['format']('%s/agent/tickets/%s',_0x101c5e[_0x2de4('0x1c')][_0x2de4('0x5e')]('/api/v2',''),_0xd944dc['id'])});break;default:logger[_0x2de4('0x60')](_0x2de4('0x6a'),_0x2de4('0x61'));}}})[_0x2de4('0x62')](function(_0x156748){logger[_0x2de4('0x60')](_0x2de4('0x6b'),util['inspect'](_0x156748,{'showHidden':!![],'depth':null}));});};exports[_0x2de4('0x6c')]=function(_0x13ef3b,_0x50dc27,_0x2ced87,_0x46c3cb,_0x4cb4ea,_0x1958c1){var _0x13db91,_0x33cb88;_0x1958c1['remoteUri']=intUtil['stripTrailingSlash'](_0x1958c1[_0x2de4('0x1c')]);_0x1958c1[_0x2de4('0x4a')]=intUtil[_0x2de4('0x49')](_0x1958c1[_0x2de4('0x4a')]);if(_0x4cb4ea&&_0x4cb4ea[_0x2de4('0x6d')]){logger['info']('['+_0x50dc27[_0x2de4('0x6e')][_0x2de4('0x6f')]()+']',_0x2de4('0x4c'));_0x50dc27['recordingURL']=util[_0x2de4('0xd')](_0x2de4('0x4e'),_0x1958c1['serverUrl'],_0x50dc27[_0x2de4('0x4f')],md5(_0x50dc27[_0x2de4('0x4f')]));}else{_0x50dc27[_0x2de4('0x4d')]='';}headers['Authorization']=getAuth(_0x1958c1);return getUser(_0x1958c1)[_0x2de4('0x16')](function(_0x1cae5b){_0x13db91=_0x1cae5b;logger[_0x2de4('0xb')](_0x2de4('0x52'),_0x13db91['id']);return getEndUser(_0x1958c1,_0x50dc27[_0x2de4('0x53')],_0x50dc27[_0x2de4('0x54')]);})['then'](function(_0x518793){_0x33cb88=_0x518793;logger[_0x2de4('0xb')](_0x2de4('0x55'),_0x33cb88['id']);return getTicket(_0x1958c1,_0x13db91,_0x33cb88,_0x2ced87,_0x50dc27);})['then'](function(_0x5d23b7){if(_0x5d23b7){logger[_0x2de4('0xb')](_0x2de4('0x69'),_0x5d23b7['id']);}})[_0x2de4('0x62')](function(_0x2c7188){logger[_0x2de4('0x60')]('['+_0x50dc27[_0x2de4('0x6e')][_0x2de4('0x6f')]()+']'+_0x2de4('0x70'),util['inspect'](_0x2c7188,{'showHidden':!![],'depth':null}));});};