Built motion from commit (unavailable).|2.5.27
[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 _0x5b86=['Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length','filter','results','end-user','first','Enduser\x20found!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','username','token','%s/token:%s','Basic\x20%s','toString','debug','[HTTP]','stringify','GET','map','string','picklist','nameField','toLowerCase','content','includes','custom_fields','push','type','variable','idField','customField','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','newTab','replace','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','email','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','calleridname','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','Tags','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','count'];(function(_0x1ed1a6,_0x333c3e){var _0x4f2017=function(_0x8d6e34){while(--_0x8d6e34){_0x1ed1a6['push'](_0x1ed1a6['shift']());}};_0x4f2017(++_0x333c3e);}(_0x5b86,0xb9));var _0x65b8=function(_0x33add5,_0x54f3c1){_0x33add5=_0x33add5-0x0;var _0x399430=_0x5b86[_0x33add5];return _0x399430;};'use strict';var _=require('lodash');var rp=require(_0x65b8('0x0'));var md5=require(_0x65b8('0x1'));var util=require(_0x65b8('0x2'));var Redis=require(_0x65b8('0x3'));var intUtil=require('./util');var config=require(_0x65b8('0x4'));var logger=require(_0x65b8('0x5'))(_0x65b8('0x6'));config[_0x65b8('0x7')]=_[_0x65b8('0x8')](config[_0x65b8('0x7')],{'host':_0x65b8('0x9'),'port':0x18eb});var io=require(_0x65b8('0xa'))(new Redis(config[_0x65b8('0x7')]));function emit(_0x416d5f,_0x5cca52,_0x268450){io['to'](_0x416d5f)[_0x65b8('0xb')](_0x5cca52,_0x268450);}var headers={'Content-Type':'application/json','Accept':_0x65b8('0xc')};function getTicket(_0x3dcb96,_0x520eb8,_0x3dd38b,_0x127c9b,_0x46d85a){logger[_0x65b8('0xd')](_0x65b8('0xe'));return request({'uri':util[_0x65b8('0xf')]('%s/tickets.json',_0x3dcb96['remoteUri']),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x3dd38b['id'],'submitter_id':_0x520eb8?_0x520eb8['id']:undefined,'assignee_id':_0x520eb8?_0x520eb8['id']:undefined,'tags':getTags(_0x127c9b[_0x65b8('0x10')],_0x65b8('0x11')),'subject':intUtil[_0x65b8('0x12')](_0x127c9b[_0x65b8('0x13')],_0x46d85a,'\x20'),'description':intUtil[_0x65b8('0x12')](_0x127c9b['Descriptions'],_0x46d85a,'\x0a'),'comment':{'public':![],'body':intUtil[_0x65b8('0x12')](_0x127c9b[_0x65b8('0x14')],_0x46d85a,'\x0a')}},getCustomFields(_0x127c9b['Fields'],_0x46d85a))}})[_0x65b8('0x15')](function(_0x2cba85){logger['info'](_0x65b8('0x16'));return _0x2cba85[_0x65b8('0x17')];});}function getUser(_0x443a14,_0x36033a){if(intUtil[_0x65b8('0x18')](_0x36033a)){logger[_0x65b8('0xd')]('Getting\x20agent\x20with\x20email',_0x36033a);return request({'uri':util[_0x65b8('0xf')](_0x65b8('0x19'),_0x443a14[_0x65b8('0x1a')]),'qs':{'query':util[_0x65b8('0xf')](_0x65b8('0x1b'),_0x36033a)}})[_0x65b8('0x15')](function(_0x25a5fa){if(_0x25a5fa[_0x65b8('0x1c')]){logger[_0x65b8('0xd')](_0x65b8('0x1d'));return _['find'](_0x25a5fa['results'],{'email':_0x36033a,'role':'agent'});}else{logger[_0x65b8('0xd')](_0x65b8('0x1e'));return request({'uri':util[_0x65b8('0xf')](_0x65b8('0x1f'),_0x443a14['remoteUri'])})['then'](function(_0x36db20){logger[_0x65b8('0xd')](_0x65b8('0x20'));return _0x36db20['user'];});}});}else{logger[_0x65b8('0xd')](_0x65b8('0x1e'));return request({'uri':util[_0x65b8('0xf')](_0x65b8('0x1f'),_0x443a14['remoteUri'])})[_0x65b8('0x15')](function(_0x2a08f6){logger['info'](_0x65b8('0x20'));return _0x2a08f6[_0x65b8('0x21')];});}}function getEndUser(_0x5ec8c4,_0x5a4ef6,_0x2c1bb9){logger[_0x65b8('0xd')](_0x65b8('0x22'),_0x2c1bb9);return request({'uri':util[_0x65b8('0xf')]('%s/search.json',_0x5ec8c4['remoteUri']),'qs':{'query':util['format']('type:user\x20role:end-user\x20phone:%s',_0x2c1bb9)}})['then'](function(_0x29fcff){var _0x20c255;if(_0x29fcff['results'][_0x65b8('0x23')]){_0x29fcff['results']=_[_0x65b8('0x24')](_0x29fcff[_0x65b8('0x25')],{'suspended':![],'role':_0x65b8('0x26')});if(_0x29fcff[_0x65b8('0x25')]['length']){_0x20c255=_[_0x65b8('0x27')](_0x29fcff[_0x65b8('0x25')]);}}if(_0x20c255){logger[_0x65b8('0xd')](_0x65b8('0x28'));return _0x20c255;}else{logger[_0x65b8('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x65b8('0xf')](_0x65b8('0x29'),_0x5ec8c4['remoteUri']),'method':'POST','body':{'user':{'role':_0x65b8('0x26'),'name':util[_0x65b8('0xf')](_0x65b8('0x2a'),_0x5a4ef6||_0x2c1bb9),'phone':_0x2c1bb9}}})['then'](function(_0x5f0cbd){logger[_0x65b8('0xd')](_0x65b8('0x2b'));return _0x5f0cbd[_0x65b8('0x21')];});}});}function getAuth(_0x39c122){var _0x585ae3;if(_0x39c122[_0x65b8('0x2c')]===_0x65b8('0x2d')){_0x585ae3=util['format']('%s:%s',_0x39c122[_0x65b8('0x2e')],_0x39c122[_0x65b8('0x2d')]);}else if(_0x39c122[_0x65b8('0x2c')]===_0x65b8('0x2f')){_0x585ae3=util[_0x65b8('0xf')](_0x65b8('0x30'),_0x39c122[_0x65b8('0x2e')],_0x39c122[_0x65b8('0x2f')]);}return util[_0x65b8('0xf')](_0x65b8('0x31'),new Buffer(_0x585ae3)[_0x65b8('0x32')]('base64'));}function request(_0x19ec35){logger[_0x65b8('0x33')](_0x65b8('0x34'),JSON[_0x65b8('0x35')](_0x19ec35));return rp(_[_0x65b8('0x8')](_0x19ec35,{'method':_0x65b8('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x101ee5,_0x468850){var _0x4a7b8e=[];if(_0x101ee5&&_0x101ee5[_0x65b8('0x23')]>0x0){_0x4a7b8e=_[_0x65b8('0x37')](_0x101ee5,_0x468850);}return _0x4a7b8e;}function getCustomFields(_0x29baed,_0xa25d83){var _0x2431e4=[];var _0x3c06e1={'custom_fields':[]};if(_0x29baed[_0x65b8('0x23')]>0x0){_['forEach'](_0x29baed,function(_0x138108){if(_['includes']([_0x65b8('0x38'),_0x65b8('0x39')],_0x138108['type'])&&_0x138108[_0x65b8('0x3a')]&&!_0x138108['customField']){_0x3c06e1[_0x138108[_0x65b8('0x3a')][_0x65b8('0x3b')]()]=_0x138108[_0x65b8('0x3c')][_0x65b8('0x32')]();}else if(_[_0x65b8('0x3d')]([_0x65b8('0x38'),_0x65b8('0x39')],_0x138108['type'])&&_0x138108['idField']&&_0x138108['customField']){_0x3c06e1[_0x65b8('0x3e')][_0x65b8('0x3f')]({'id':_0x138108['idField'],'value':_0x138108[_0x65b8('0x3c')][_0x65b8('0x32')]()});}else if(_0x138108[_0x65b8('0x40')]===_0x65b8('0x41')&&_0x138108['variableName']&&_0x138108[_0x65b8('0x42')]&&_0x138108[_0x65b8('0x43')]){_0xa25d83[_0x138108['variableName']]&&_0x3c06e1[_0x65b8('0x3e')][_0x65b8('0x3f')]({'id':_0x138108[_0x65b8('0x42')],'value':_0xa25d83[_0x138108[_0x65b8('0x44')]]['toString']()});}else if(_0x138108['type']===_0x65b8('0x45')&&_0x138108['Variable']&&_0x138108[_0x65b8('0x46')]['name']&&_0x138108['idField']&&_0x138108['customField']){_0xa25d83[_0x138108[_0x65b8('0x46')][_0x65b8('0x11')][_0x65b8('0x3b')]()]&&_0x3c06e1['custom_fields'][_0x65b8('0x3f')]({'id':_0x138108[_0x65b8('0x42')],'value':_0xa25d83[_0x138108[_0x65b8('0x46')]['name'][_0x65b8('0x3b')]()][_0x65b8('0x32')]()});}});}return _0x3c06e1;}exports[_0x65b8('0x47')]=function(_0x17a503,_0x1f7c17,_0x3e13c9,_0xc015a,_0x2cb524,_0x5d1def){var _0x1e91e6,_0x52801a;_0x5d1def[_0x65b8('0x1a')]=intUtil[_0x65b8('0x48')](_0x5d1def[_0x65b8('0x1a')]);_0x5d1def[_0x65b8('0x49')]=intUtil[_0x65b8('0x48')](_0x5d1def['serverUrl']);if(_0x2cb524&&_0x2cb524[_0x65b8('0x4a')]){logger[_0x65b8('0xd')](_0x65b8('0x4b'),'Recording\x20is\x20enabled!');_0x1f7c17[_0x65b8('0x4c')]=util[_0x65b8('0xf')](_0x65b8('0x4d'),_0x5d1def['serverUrl'],_0x1f7c17[_0x65b8('0x4e')],md5(_0x1f7c17[_0x65b8('0x4e')]));}else{_0x1f7c17['recordingURL']='';}headers[_0x65b8('0x4f')]=getAuth(_0x5d1def);return getUser(_0x5d1def,_0xc015a['email'])['then'](function(_0x5b52fc){_0x1e91e6=_0x5b52fc;logger[_0x65b8('0xd')](_0x65b8('0x50'),_0x1e91e6['id']);return getEndUser(_0x5d1def,_0x1f7c17['calleridname'],_0x1f7c17[_0x65b8('0x51')]);})[_0x65b8('0x15')](function(_0x58a3a6){_0x52801a=_0x58a3a6;logger[_0x65b8('0xd')](_0x65b8('0x52'),_0x52801a['id']);return getTicket(_0x5d1def,_0x1e91e6,_0x52801a,_0x3e13c9,_0x1f7c17);})[_0x65b8('0x15')](function(_0xc3b962){if(_0xc3b962){logger[_0x65b8('0xd')]('The\x20Ticket\x20ID\x20is:',_0xc3b962['id']);switch(_0x5d1def[_0x65b8('0x40')]){case'integrationTab':logger[_0x65b8('0xd')](_0x65b8('0x4b'),_0x65b8('0x53'));return request({'uri':util[_0x65b8('0xf')](_0x65b8('0x54'),_0x5d1def[_0x65b8('0x1a')],_0x1e91e6['id'],_0xc3b962['id']),'method':_0x65b8('0x55')});case _0x65b8('0x56'):logger[_0x65b8('0xd')](_0x65b8('0x4b'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x65b8('0xf')]('user:%s',_0xc015a[_0x65b8('0x11')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x5d1def[_0x65b8('0x1a')][_0x65b8('0x57')]('/api/v2',''),_0xc3b962['id'])});break;default:logger[_0x65b8('0x58')](_0x65b8('0x4b'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x65b8('0x59')](function(_0x2de88a){logger['error'](_0x65b8('0x5a'),util[_0x65b8('0x5b')](_0x2de88a,{'showHidden':!![],'depth':null}));});};exports[_0x65b8('0x5c')]=function(_0x47949d,_0x15025d,_0x401553,_0x2bd881,_0x19b24d,_0x15d224,_0x269eea){var _0x3b9a40,_0x33b293;_0x15d224[_0x65b8('0x1a')]=intUtil[_0x65b8('0x48')](_0x15d224[_0x65b8('0x1a')]);_0x15d224[_0x65b8('0x49')]=intUtil[_0x65b8('0x48')](_0x15d224[_0x65b8('0x49')]);if(_0x269eea&&_0x269eea[_0x65b8('0x5d')]&&_0x269eea['recordingFormat']!==_0x65b8('0x5e')){logger[_0x65b8('0xd')](_0x65b8('0x5f'),_0x65b8('0x60'));_0x15025d[_0x65b8('0x4c')]=util['format'](_0x65b8('0x4d'),_0x15d224[_0x65b8('0x49')],_0x15025d[_0x65b8('0x4e')],md5(_0x15025d[_0x65b8('0x4e')]));}headers[_0x65b8('0x4f')]=getAuth(_0x15d224);return getUser(_0x15d224,_0x2bd881[_0x65b8('0x61')])[_0x65b8('0x15')](function(_0x4fdd2a){_0x3b9a40=_0x4fdd2a;logger['info']('The\x20User\x20ID\x20is:',_0x3b9a40['id']);return getEndUser(_0x15d224,_0x15025d['destcalleridname'],_0x15025d['destcalleridnum']);})[_0x65b8('0x15')](function(_0x21cbe6){_0x33b293=_0x21cbe6;logger[_0x65b8('0xd')]('The\x20Enduser\x20ID\x20is:',_0x33b293['id']);return getTicket(_0x15d224,_0x3b9a40,_0x33b293,_0x401553,_0x15025d);})[_0x65b8('0x15')](function(_0x551180){if(_0x551180){logger[_0x65b8('0xd')](_0x65b8('0x62'),_0x551180['id']);switch(_0x15d224['type']){case'integrationTab':logger['info'](_0x65b8('0x5f'),_0x65b8('0x53'));return request({'uri':util[_0x65b8('0xf')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x15d224[_0x65b8('0x1a')],_0x3b9a40['id'],_0x551180['id']),'method':_0x65b8('0x55')});case _0x65b8('0x56'):logger[_0x65b8('0xd')](_0x65b8('0x5f'),_0x65b8('0x63'));emit(util[_0x65b8('0xf')](_0x65b8('0x64'),_0x2bd881[_0x65b8('0x11')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x15d224[_0x65b8('0x1a')][_0x65b8('0x57')]('/api/v2',''),_0x551180['id'])});break;default:logger[_0x65b8('0x58')]('[OUTBOUND]',_0x65b8('0x65'));}}})[_0x65b8('0x59')](function(_0x32481e){logger[_0x65b8('0x58')](_0x65b8('0x66'),util[_0x65b8('0x5b')](_0x32481e,{'showHidden':!![],'depth':null}));});};exports[_0x65b8('0x67')]=function(_0x4d6a66,_0x151e82,_0x10b39b,_0x44b279,_0x2f0ed8,_0x3d338b){var _0xb7b82,_0x226428;_0x3d338b[_0x65b8('0x1a')]=intUtil[_0x65b8('0x48')](_0x3d338b[_0x65b8('0x1a')]);_0x3d338b[_0x65b8('0x49')]=intUtil[_0x65b8('0x48')](_0x3d338b[_0x65b8('0x49')]);if(_0x2f0ed8&&_0x2f0ed8['monitor_format']){logger[_0x65b8('0xd')]('['+_0x151e82[_0x65b8('0x68')]['toUpperCase']()+']',_0x65b8('0x60'));_0x151e82[_0x65b8('0x4c')]=util[_0x65b8('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3d338b[_0x65b8('0x49')],_0x151e82[_0x65b8('0x4e')],md5(_0x151e82[_0x65b8('0x4e')]));}else{_0x151e82[_0x65b8('0x4c')]='';}headers[_0x65b8('0x4f')]=getAuth(_0x3d338b);return getUser(_0x3d338b)['then'](function(_0x34c425){_0xb7b82=_0x34c425;logger[_0x65b8('0xd')](_0x65b8('0x50'),_0xb7b82['id']);return getEndUser(_0x3d338b,_0x151e82[_0x65b8('0x69')],_0x151e82[_0x65b8('0x51')]);})['then'](function(_0x272490){_0x226428=_0x272490;logger[_0x65b8('0xd')](_0x65b8('0x52'),_0x226428['id']);return getTicket(_0x3d338b,_0xb7b82,_0x226428,_0x10b39b,_0x151e82);})[_0x65b8('0x15')](function(_0x5518a1){if(_0x5518a1){logger['info']('The\x20Ticket\x20ID\x20is:',_0x5518a1['id']);}})[_0x65b8('0x59')](function(_0x3f9a70){logger[_0x65b8('0x58')]('['+_0x151e82[_0x65b8('0x68')]['toUpperCase']()+']'+_0x65b8('0x6a'),util[_0x65b8('0x5b')](_0x3f9a70,{'showHidden':!![],'depth':null}));});};