dedcf9cb8ade44997ab87bbf091c44503ea281c5
[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 _0xd6a0=['Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','Recording\x20is\x20enabled!','recordingURL','destcalleridname','destcalleridnum','[OUTBOUND]','POST','newTab','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridname','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','name','getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','format','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','count','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','end-user','Enduser\x20found!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','toString','base64','debug','stringify','defaults','GET','map','includes','string','type','nameField','customField','toLowerCase','content','picklist','idField','custom_fields','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json'];(function(_0x3d675a,_0x1e141e){var _0x43399e=function(_0x1c10a0){while(--_0x1c10a0){_0x3d675a['push'](_0x3d675a['shift']());}};_0x43399e(++_0x1e141e);}(_0xd6a0,0x164));var _0x0d6a=function(_0x22645d,_0x30cf98){_0x22645d=_0x22645d-0x0;var _0x548ee5=_0xd6a0[_0x22645d];return _0x548ee5;};'use strict';var _=require('lodash');var rp=require(_0x0d6a('0x0'));var md5=require(_0x0d6a('0x1'));var util=require(_0x0d6a('0x2'));var Redis=require(_0x0d6a('0x3'));var intUtil=require(_0x0d6a('0x4'));var config=require(_0x0d6a('0x5'));var logger=require(_0x0d6a('0x6'))(_0x0d6a('0x7'));config[_0x0d6a('0x8')]=_['defaults'](config['redis'],{'host':_0x0d6a('0x9'),'port':0x18eb});var io=require(_0x0d6a('0xa'))(new Redis(config[_0x0d6a('0x8')]));function emit(_0x457126,_0x1fbf12,_0x44baa6){io['to'](_0x457126)['emit'](_0x1fbf12,_0x44baa6);}var headers={'Content-Type':_0x0d6a('0xb'),'Accept':'application/json'};function getTicket(_0x481db7,_0x5cce3a,_0xd0a30a,_0xbe7a23,_0x3e095f){logger[_0x0d6a('0xc')](_0x0d6a('0xd'));return request({'uri':util['format'](_0x0d6a('0xe'),_0x481db7['remoteUri']),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0xd0a30a['id'],'submitter_id':_0x5cce3a?_0x5cce3a['id']:undefined,'assignee_id':_0x5cce3a?_0x5cce3a['id']:undefined,'tags':getTags(_0xbe7a23['Tags'],_0x0d6a('0xf')),'subject':intUtil[_0x0d6a('0x10')](_0xbe7a23[_0x0d6a('0x11')],_0x3e095f,'\x20'),'description':intUtil[_0x0d6a('0x10')](_0xbe7a23[_0x0d6a('0x12')],_0x3e095f,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0xbe7a23['Descriptions'],_0x3e095f,'\x0a')}},getCustomFields(_0xbe7a23[_0x0d6a('0x13')],_0x3e095f))}})[_0x0d6a('0x14')](function(_0x1b7339){logger[_0x0d6a('0xc')]('Ticket\x20created!');return _0x1b7339[_0x0d6a('0x15')];});}function getUser(_0x4b7c06,_0x5e7004){if(intUtil[_0x0d6a('0x16')](_0x5e7004)){logger[_0x0d6a('0xc')]('Getting\x20agent\x20with\x20email',_0x5e7004);return request({'uri':util[_0x0d6a('0x17')](_0x0d6a('0x18'),_0x4b7c06[_0x0d6a('0x19')]),'qs':{'query':util['format'](_0x0d6a('0x1a'),_0x5e7004)}})['then'](function(_0x452b19){if(_0x452b19[_0x0d6a('0x1b')]){logger['info']('Agent\x20found!');return _[_0x0d6a('0x1c')](_0x452b19['results'],{'email':_0x5e7004,'role':_0x0d6a('0x1d')});}else{logger[_0x0d6a('0xc')](_0x0d6a('0x1e'));return request({'uri':util['format'](_0x0d6a('0x1f'),_0x4b7c06[_0x0d6a('0x19')])})[_0x0d6a('0x14')](function(_0x595b25){logger[_0x0d6a('0xc')](_0x0d6a('0x20'));return _0x595b25[_0x0d6a('0x21')];});}});}else{logger[_0x0d6a('0xc')](_0x0d6a('0x1e'));return request({'uri':util[_0x0d6a('0x17')](_0x0d6a('0x1f'),_0x4b7c06['remoteUri'])})[_0x0d6a('0x14')](function(_0x443dbf){logger['info'](_0x0d6a('0x20'));return _0x443dbf[_0x0d6a('0x21')];});}}function getEndUser(_0x4e6632,_0x482200,_0x4722ab){logger['info'](_0x0d6a('0x22'),_0x4722ab);return request({'uri':util['format']('%s/search.json',_0x4e6632[_0x0d6a('0x19')]),'qs':{'query':util[_0x0d6a('0x17')](_0x0d6a('0x23'),_0x4722ab)}})['then'](function(_0x359ab5){var _0x136509;if(_0x359ab5[_0x0d6a('0x24')]['length']){_0x359ab5['results']=_['filter'](_0x359ab5['results'],{'suspended':![],'role':_0x0d6a('0x25')});if(_0x359ab5[_0x0d6a('0x24')]['length']){_0x136509=_['first'](_0x359ab5[_0x0d6a('0x24')]);}}if(_0x136509){logger['info'](_0x0d6a('0x26'));return _0x136509;}else{logger[_0x0d6a('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x0d6a('0x17')](_0x0d6a('0x27'),_0x4e6632[_0x0d6a('0x19')]),'method':'POST','body':{'user':{'role':_0x0d6a('0x25'),'name':util[_0x0d6a('0x17')](_0x0d6a('0x28'),_0x482200||_0x4722ab),'phone':_0x4722ab}}})[_0x0d6a('0x14')](function(_0x388519){logger[_0x0d6a('0xc')](_0x0d6a('0x29'));return _0x388519[_0x0d6a('0x21')];});}});}function getAuth(_0x244be2){var _0x49abfc;if(_0x244be2[_0x0d6a('0x2a')]===_0x0d6a('0x2b')){_0x49abfc=util[_0x0d6a('0x17')](_0x0d6a('0x2c'),_0x244be2[_0x0d6a('0x2d')],_0x244be2[_0x0d6a('0x2b')]);}else if(_0x244be2[_0x0d6a('0x2a')]===_0x0d6a('0x2e')){_0x49abfc=util['format'](_0x0d6a('0x2f'),_0x244be2[_0x0d6a('0x2d')],_0x244be2[_0x0d6a('0x2e')]);}return util[_0x0d6a('0x17')]('Basic\x20%s',new Buffer(_0x49abfc)[_0x0d6a('0x30')](_0x0d6a('0x31')));}function request(_0x601a20){logger[_0x0d6a('0x32')]('[HTTP]',JSON[_0x0d6a('0x33')](_0x601a20));return rp(_[_0x0d6a('0x34')](_0x601a20,{'method':_0x0d6a('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x5ba255,_0x37ca82){var _0x1f9184=[];if(_0x5ba255&&_0x5ba255['length']>0x0){_0x1f9184=_[_0x0d6a('0x36')](_0x5ba255,_0x37ca82);}return _0x1f9184;}function getCustomFields(_0x372db3,_0x1b4535){var _0xff144a=[];var _0x20a892={'custom_fields':[]};if(_0x372db3['length']>0x0){_['forEach'](_0x372db3,function(_0x4379ad){if(_[_0x0d6a('0x37')]([_0x0d6a('0x38'),'picklist'],_0x4379ad[_0x0d6a('0x39')])&&_0x4379ad[_0x0d6a('0x3a')]&&!_0x4379ad[_0x0d6a('0x3b')]){_0x20a892[_0x4379ad[_0x0d6a('0x3a')][_0x0d6a('0x3c')]()]=_0x4379ad[_0x0d6a('0x3d')][_0x0d6a('0x30')]();}else if(_['includes']([_0x0d6a('0x38'),_0x0d6a('0x3e')],_0x4379ad['type'])&&_0x4379ad[_0x0d6a('0x3f')]&&_0x4379ad[_0x0d6a('0x3b')]){_0x20a892[_0x0d6a('0x40')][_0x0d6a('0x41')]({'id':_0x4379ad[_0x0d6a('0x3f')],'value':_0x4379ad[_0x0d6a('0x3d')]['toString']()});}else if(_0x4379ad[_0x0d6a('0x39')]===_0x0d6a('0x42')&&_0x4379ad[_0x0d6a('0x43')]&&_0x4379ad['idField']&&_0x4379ad[_0x0d6a('0x3b')]){_0x1b4535[_0x4379ad[_0x0d6a('0x43')]]&&_0x20a892['custom_fields'][_0x0d6a('0x41')]({'id':_0x4379ad[_0x0d6a('0x3f')],'value':_0x1b4535[_0x4379ad[_0x0d6a('0x43')]][_0x0d6a('0x30')]()});}else if(_0x4379ad[_0x0d6a('0x39')]==='customVariable'&&_0x4379ad['Variable']&&_0x4379ad[_0x0d6a('0x44')][_0x0d6a('0xf')]&&_0x4379ad[_0x0d6a('0x3f')]&&_0x4379ad[_0x0d6a('0x3b')]){_0x1b4535[_0x4379ad['Variable'][_0x0d6a('0xf')][_0x0d6a('0x3c')]()]&&_0x20a892['custom_fields'][_0x0d6a('0x41')]({'id':_0x4379ad['idField'],'value':_0x1b4535[_0x4379ad[_0x0d6a('0x44')][_0x0d6a('0xf')][_0x0d6a('0x3c')]()][_0x0d6a('0x30')]()});}});}return _0x20a892;}exports[_0x0d6a('0x45')]=function(_0x7ad97,_0x43f726,_0x54320a,_0x953f3a,_0x4b2c70,_0x2d353e){var _0x5f00a6,_0x38db4b;_0x2d353e['remoteUri']=intUtil[_0x0d6a('0x46')](_0x2d353e['remoteUri']);_0x2d353e['serverUrl']=intUtil[_0x0d6a('0x46')](_0x2d353e[_0x0d6a('0x47')]);if(_0x4b2c70&&_0x4b2c70[_0x0d6a('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x43f726['recordingURL']=util[_0x0d6a('0x17')](_0x0d6a('0x49'),_0x2d353e['serverUrl'],_0x43f726[_0x0d6a('0x4a')],md5(_0x43f726['uniqueid']));}else{_0x43f726['recordingURL']='';}headers[_0x0d6a('0x4b')]=getAuth(_0x2d353e);return getUser(_0x2d353e,_0x953f3a[_0x0d6a('0x4c')])[_0x0d6a('0x14')](function(_0x515b1e){_0x5f00a6=_0x515b1e;logger[_0x0d6a('0xc')](_0x0d6a('0x4d'),_0x5f00a6['id']);return getEndUser(_0x2d353e,_0x43f726['calleridname'],_0x43f726['calleridnum']);})[_0x0d6a('0x14')](function(_0x21738a){_0x38db4b=_0x21738a;logger[_0x0d6a('0xc')](_0x0d6a('0x4e'),_0x38db4b['id']);return getTicket(_0x2d353e,_0x5f00a6,_0x38db4b,_0x54320a,_0x43f726);})[_0x0d6a('0x14')](function(_0xd91c74){if(_0xd91c74){logger[_0x0d6a('0xc')](_0x0d6a('0x4f'),_0xd91c74['id']);switch(_0x2d353e[_0x0d6a('0x39')]){case _0x0d6a('0x50'):logger[_0x0d6a('0xc')](_0x0d6a('0x51'),_0x0d6a('0x52'));return request({'uri':util['format'](_0x0d6a('0x53'),_0x2d353e[_0x0d6a('0x19')],_0x5f00a6['id'],_0xd91c74['id']),'method':'POST'});case'newTab':logger['info'](_0x0d6a('0x51'),_0x0d6a('0x54'));emit(util[_0x0d6a('0x17')](_0x0d6a('0x55'),_0x953f3a[_0x0d6a('0xf')]),_0x0d6a('0x56'),{'uri':util[_0x0d6a('0x17')](_0x0d6a('0x57'),_0x2d353e[_0x0d6a('0x19')][_0x0d6a('0x58')](_0x0d6a('0x59'),''),_0xd91c74['id'])});break;default:logger[_0x0d6a('0x5a')](_0x0d6a('0x51'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x0d6a('0x5b')](function(_0x4e8208){logger[_0x0d6a('0x5a')](_0x0d6a('0x5c'),util[_0x0d6a('0x5d')](_0x4e8208,{'showHidden':!![],'depth':null}));});};exports[_0x0d6a('0x5e')]=function(_0x31563c,_0x151c97,_0x17a397,_0x11cf21,_0x271de2,_0x34919e,_0x32f6b5){var _0x2c4937,_0x4f56b1;_0x34919e[_0x0d6a('0x19')]=intUtil['stripTrailingSlash'](_0x34919e[_0x0d6a('0x19')]);_0x34919e[_0x0d6a('0x47')]=intUtil[_0x0d6a('0x46')](_0x34919e[_0x0d6a('0x47')]);if(_0x32f6b5&&_0x32f6b5[_0x0d6a('0x5f')]&&_0x32f6b5['recordingFormat']!==_0x0d6a('0x60')){logger[_0x0d6a('0xc')]('[OUTBOUND]',_0x0d6a('0x61'));_0x151c97[_0x0d6a('0x62')]=util['format'](_0x0d6a('0x49'),_0x34919e[_0x0d6a('0x47')],_0x151c97[_0x0d6a('0x4a')],md5(_0x151c97[_0x0d6a('0x4a')]));}headers['Authorization']=getAuth(_0x34919e);return getUser(_0x34919e,_0x11cf21[_0x0d6a('0x4c')])[_0x0d6a('0x14')](function(_0x49fa62){_0x2c4937=_0x49fa62;logger['info'](_0x0d6a('0x4d'),_0x2c4937['id']);return getEndUser(_0x34919e,_0x151c97[_0x0d6a('0x63')],_0x151c97[_0x0d6a('0x64')]);})[_0x0d6a('0x14')](function(_0x32cdd7){_0x4f56b1=_0x32cdd7;logger[_0x0d6a('0xc')](_0x0d6a('0x4e'),_0x4f56b1['id']);return getTicket(_0x34919e,_0x2c4937,_0x4f56b1,_0x17a397,_0x151c97);})[_0x0d6a('0x14')](function(_0x4d598a){if(_0x4d598a){logger['info'](_0x0d6a('0x4f'),_0x4d598a['id']);switch(_0x34919e['type']){case'integrationTab':logger[_0x0d6a('0xc')](_0x0d6a('0x65'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x0d6a('0x17')](_0x0d6a('0x53'),_0x34919e[_0x0d6a('0x19')],_0x2c4937['id'],_0x4d598a['id']),'method':_0x0d6a('0x66')});case _0x0d6a('0x67'):logger[_0x0d6a('0xc')]('[OUTBOUND]',_0x0d6a('0x54'));emit(util[_0x0d6a('0x17')]('user:%s',_0x11cf21[_0x0d6a('0xf')]),'trigger:browser:url',{'uri':util['format'](_0x0d6a('0x57'),_0x34919e[_0x0d6a('0x19')][_0x0d6a('0x58')](_0x0d6a('0x59'),''),_0x4d598a['id'])});break;default:logger[_0x0d6a('0x5a')](_0x0d6a('0x65'),_0x0d6a('0x68'));}}})[_0x0d6a('0x5b')](function(_0x26c32c){logger[_0x0d6a('0x5a')](_0x0d6a('0x69'),util[_0x0d6a('0x5d')](_0x26c32c,{'showHidden':!![],'depth':null}));});};exports[_0x0d6a('0x6a')]=function(_0x54589e,_0x36ba67,_0xc9edec,_0x464ec1,_0x443ab9,_0x2c3a3d){var _0x32cd82,_0x6d12b3;_0x2c3a3d[_0x0d6a('0x19')]=intUtil['stripTrailingSlash'](_0x2c3a3d[_0x0d6a('0x19')]);_0x2c3a3d[_0x0d6a('0x47')]=intUtil[_0x0d6a('0x46')](_0x2c3a3d[_0x0d6a('0x47')]);if(_0x443ab9&&_0x443ab9['monitor_format']){logger['info']('['+_0x36ba67[_0x0d6a('0x6b')][_0x0d6a('0x6c')]()+']',_0x0d6a('0x61'));_0x36ba67[_0x0d6a('0x62')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2c3a3d[_0x0d6a('0x47')],_0x36ba67[_0x0d6a('0x4a')],md5(_0x36ba67[_0x0d6a('0x4a')]));}else{_0x36ba67[_0x0d6a('0x62')]='';}headers['Authorization']=getAuth(_0x2c3a3d);return getUser(_0x2c3a3d)[_0x0d6a('0x14')](function(_0x5533b2){_0x32cd82=_0x5533b2;logger['info'](_0x0d6a('0x4d'),_0x32cd82['id']);return getEndUser(_0x2c3a3d,_0x36ba67[_0x0d6a('0x6d')],_0x36ba67['calleridnum']);})[_0x0d6a('0x14')](function(_0x4845d7){_0x6d12b3=_0x4845d7;logger['info']('The\x20Enduser\x20ID\x20is:',_0x6d12b3['id']);return getTicket(_0x2c3a3d,_0x32cd82,_0x6d12b3,_0xc9edec,_0x36ba67);})['then'](function(_0x32bd23){if(_0x32bd23){logger[_0x0d6a('0xc')](_0x0d6a('0x4f'),_0x32bd23['id']);}})[_0x0d6a('0x5b')](function(_0x2533c8){logger[_0x0d6a('0x5a')]('['+_0x36ba67[_0x0d6a('0x6b')][_0x0d6a('0x6c')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x0d6a('0x5d')](_0x2533c8,{'showHidden':!![],'depth':null}));});};