Built motion from commit ce9a7520.|2.5.39
[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 _0x1835=['monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','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','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','[OUTBOUND]','destcalleridname','destcalleridnum','integrationTab','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','Recording\x20is\x20enabled!','Authorization','calleridnum','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','%s/users.json','password','%s:%s','username','authType','token','%s/token:%s','toString','base64','debug','[HTTP]','stringify','GET','forEach','includes','type','customField','nameField','toLowerCase','content','picklist','idField','custom_fields','variable','variableName','customVariable','Variable','push','stripTrailingSlash','serverUrl'];(function(_0xe3e372,_0x1b63fd){var _0x384591=function(_0x4da7e6){while(--_0x4da7e6){_0xe3e372['push'](_0xe3e372['shift']());}};_0x384591(++_0x1b63fd);}(_0x1835,0x94));var _0x5183=function(_0x501be9,_0x7d2a1a){_0x501be9=_0x501be9-0x0;var _0x1f3ddd=_0x1835[_0x501be9];return _0x1f3ddd;};'use strict';var _=require(_0x5183('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x5183('0x1'));var Redis=require(_0x5183('0x2'));var intUtil=require(_0x5183('0x3'));var config=require(_0x5183('0x4'));var logger=require(_0x5183('0x5'))(_0x5183('0x6'));config[_0x5183('0x7')]=_[_0x5183('0x8')](config['redis'],{'host':_0x5183('0x9'),'port':0x18eb});var io=require(_0x5183('0xa'))(new Redis(config[_0x5183('0x7')]));function emit(_0x35b613,_0x2d2129,_0x401ec6){io['to'](_0x35b613)['emit'](_0x2d2129,_0x401ec6);}var headers={'Content-Type':_0x5183('0xb'),'Accept':'application/json'};function getTicket(_0xf55032,_0x5e369a,_0x21d000,_0x34f2d4,_0x3919cc){logger[_0x5183('0xc')](_0x5183('0xd'));return request({'uri':util['format'](_0x5183('0xe'),_0xf55032[_0x5183('0xf')]),'method':_0x5183('0x10'),'body':{'ticket':_[_0x5183('0x11')]({'requester_id':_0x21d000['id'],'submitter_id':_0x5e369a?_0x5e369a['id']:undefined,'assignee_id':_0x5e369a?_0x5e369a['id']:undefined,'tags':getTags(_0x34f2d4[_0x5183('0x12')],_0x5183('0x13')),'subject':intUtil[_0x5183('0x14')](_0x34f2d4[_0x5183('0x15')],_0x3919cc,'\x20'),'description':intUtil['getString'](_0x34f2d4['Descriptions'],_0x3919cc,'\x0a'),'comment':{'public':![],'body':intUtil[_0x5183('0x14')](_0x34f2d4['Descriptions'],_0x3919cc,'\x0a')}},getCustomFields(_0x34f2d4[_0x5183('0x16')],_0x3919cc))}})[_0x5183('0x17')](function(_0x41f6ac){logger[_0x5183('0xc')](_0x5183('0x18'));return _0x41f6ac[_0x5183('0x19')];});}function getUser(_0x32a42c,_0x7bd430){if(intUtil[_0x5183('0x1a')](_0x7bd430)){logger[_0x5183('0xc')](_0x5183('0x1b'),_0x7bd430);return request({'uri':util[_0x5183('0x1c')](_0x5183('0x1d'),_0x32a42c[_0x5183('0xf')]),'qs':{'query':util[_0x5183('0x1c')](_0x5183('0x1e'),_0x7bd430)}})[_0x5183('0x17')](function(_0x15fd6b){if(_0x15fd6b[_0x5183('0x1f')]){logger[_0x5183('0xc')](_0x5183('0x20'));return _['find'](_0x15fd6b['results'],{'email':_0x7bd430,'role':_0x5183('0x21')});}else{logger[_0x5183('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x5183('0x1c')](_0x5183('0x22'),_0x32a42c['remoteUri'])})[_0x5183('0x17')](function(_0x3c7c21){logger[_0x5183('0xc')](_0x5183('0x23'));return _0x3c7c21[_0x5183('0x24')];});}});}else{logger['info'](_0x5183('0x25'));return request({'uri':util['format'](_0x5183('0x22'),_0x32a42c[_0x5183('0xf')])})[_0x5183('0x17')](function(_0x507e98){logger[_0x5183('0xc')](_0x5183('0x23'));return _0x507e98[_0x5183('0x24')];});}}function getEndUser(_0x300a29,_0x4ed010,_0x478331){logger[_0x5183('0xc')]('Searching\x20enduser\x20with\x20phone',_0x478331);return request({'uri':util[_0x5183('0x1c')](_0x5183('0x1d'),_0x300a29[_0x5183('0xf')]),'qs':{'query':util['format'](_0x5183('0x26'),_0x478331)}})['then'](function(_0x599309){var _0x4e3f47;if(_0x599309[_0x5183('0x27')][_0x5183('0x28')]){_0x599309[_0x5183('0x27')]=_[_0x5183('0x29')](_0x599309['results'],{'suspended':![],'role':_0x5183('0x2a')});if(_0x599309[_0x5183('0x27')][_0x5183('0x28')]){_0x4e3f47=_[_0x5183('0x2b')](_0x599309[_0x5183('0x27')]);}}if(_0x4e3f47){logger[_0x5183('0xc')]('Enduser\x20found!');return _0x4e3f47;}else{logger[_0x5183('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x5183('0x1c')](_0x5183('0x2c'),_0x300a29[_0x5183('0xf')]),'method':'POST','body':{'user':{'role':_0x5183('0x2a'),'name':util[_0x5183('0x1c')]('Caller\x20-\x20%s',_0x4ed010||_0x478331),'phone':_0x478331}}})[_0x5183('0x17')](function(_0x257a66){logger[_0x5183('0xc')]('Enduser\x20created.');return _0x257a66[_0x5183('0x24')];});}});}function getAuth(_0x32ec9e){var _0x1dba6f;if(_0x32ec9e['authType']===_0x5183('0x2d')){_0x1dba6f=util[_0x5183('0x1c')](_0x5183('0x2e'),_0x32ec9e[_0x5183('0x2f')],_0x32ec9e[_0x5183('0x2d')]);}else if(_0x32ec9e[_0x5183('0x30')]===_0x5183('0x31')){_0x1dba6f=util[_0x5183('0x1c')](_0x5183('0x32'),_0x32ec9e['username'],_0x32ec9e['token']);}return util['format']('Basic\x20%s',new Buffer(_0x1dba6f)[_0x5183('0x33')](_0x5183('0x34')));}function request(_0x39b3c6){logger[_0x5183('0x35')](_0x5183('0x36'),JSON[_0x5183('0x37')](_0x39b3c6));return rp(_[_0x5183('0x8')](_0x39b3c6,{'method':_0x5183('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x29916b,_0x115efc){var _0x5347d0=[];if(_0x29916b&&_0x29916b[_0x5183('0x28')]>0x0){_0x5347d0=_['map'](_0x29916b,_0x115efc);}return _0x5347d0;}function getCustomFields(_0x2775c0,_0xe595d5){var _0x1a5a55=[];var _0x144170={'custom_fields':[]};if(_0x2775c0[_0x5183('0x28')]>0x0){_[_0x5183('0x39')](_0x2775c0,function(_0x262c64){if(_[_0x5183('0x3a')](['string','picklist'],_0x262c64[_0x5183('0x3b')])&&_0x262c64['nameField']&&!_0x262c64[_0x5183('0x3c')]){_0x144170[_0x262c64[_0x5183('0x3d')][_0x5183('0x3e')]()]=_0x262c64[_0x5183('0x3f')][_0x5183('0x33')]();}else if(_[_0x5183('0x3a')](['string',_0x5183('0x40')],_0x262c64[_0x5183('0x3b')])&&_0x262c64[_0x5183('0x41')]&&_0x262c64[_0x5183('0x3c')]){_0x144170[_0x5183('0x42')]['push']({'id':_0x262c64[_0x5183('0x41')],'value':_0x262c64[_0x5183('0x3f')][_0x5183('0x33')]()});}else if(_0x262c64[_0x5183('0x3b')]===_0x5183('0x43')&&_0x262c64[_0x5183('0x44')]&&_0x262c64[_0x5183('0x41')]&&_0x262c64['customField']){_0xe595d5[_0x262c64['variableName']]&&_0x144170[_0x5183('0x42')]['push']({'id':_0x262c64[_0x5183('0x41')],'value':_0xe595d5[_0x262c64[_0x5183('0x44')]][_0x5183('0x33')]()});}else if(_0x262c64[_0x5183('0x3b')]===_0x5183('0x45')&&_0x262c64[_0x5183('0x46')]&&_0x262c64['Variable'][_0x5183('0x13')]&&_0x262c64['idField']&&_0x262c64[_0x5183('0x3c')]){_0xe595d5[_0x262c64['Variable']['name'][_0x5183('0x3e')]()]&&_0x144170['custom_fields'][_0x5183('0x47')]({'id':_0x262c64[_0x5183('0x41')],'value':_0xe595d5[_0x262c64[_0x5183('0x46')]['name'][_0x5183('0x3e')]()][_0x5183('0x33')]()});}});}return _0x144170;}exports['queue']=function(_0x26c99b,_0x305f36,_0x27d8a1,_0x3144a9,_0x480b08,_0x5ae3f3){var _0xe79680,_0x35ab84;_0x5ae3f3[_0x5183('0xf')]=intUtil[_0x5183('0x48')](_0x5ae3f3[_0x5183('0xf')]);_0x5ae3f3[_0x5183('0x49')]=intUtil[_0x5183('0x48')](_0x5ae3f3[_0x5183('0x49')]);if(_0x480b08&&_0x480b08[_0x5183('0x4a')]){logger['info'](_0x5183('0x4b'),'Recording\x20is\x20enabled!');_0x305f36['recordingURL']=util[_0x5183('0x1c')](_0x5183('0x4c'),_0x5ae3f3[_0x5183('0x49')],_0x305f36[_0x5183('0x4d')],md5(_0x305f36[_0x5183('0x4d')]));}else{_0x305f36[_0x5183('0x4e')]='';}headers['Authorization']=getAuth(_0x5ae3f3);return getUser(_0x5ae3f3,_0x3144a9[_0x5183('0x4f')])['then'](function(_0x3c3f05){_0xe79680=_0x3c3f05;logger['info'](_0x5183('0x50'),_0xe79680['id']);return getEndUser(_0x5ae3f3,_0x305f36[_0x5183('0x51')],_0x305f36['calleridnum']);})['then'](function(_0x54a730){_0x35ab84=_0x54a730;logger[_0x5183('0xc')](_0x5183('0x52'),_0x35ab84['id']);return getTicket(_0x5ae3f3,_0xe79680,_0x35ab84,_0x27d8a1,_0x305f36);})['then'](function(_0x1d0c1e){if(_0x1d0c1e){logger['info'](_0x5183('0x53'),_0x1d0c1e['id']);switch(_0x5ae3f3[_0x5183('0x3b')]){case'integrationTab':logger[_0x5183('0xc')](_0x5183('0x4b'),_0x5183('0x54'));return request({'uri':util[_0x5183('0x1c')](_0x5183('0x55'),_0x5ae3f3[_0x5183('0xf')],_0xe79680['id'],_0x1d0c1e['id']),'method':_0x5183('0x10')});case _0x5183('0x56'):logger[_0x5183('0xc')](_0x5183('0x4b'),_0x5183('0x57'));emit(util[_0x5183('0x1c')](_0x5183('0x58'),_0x3144a9[_0x5183('0x13')]),_0x5183('0x59'),{'uri':util[_0x5183('0x1c')](_0x5183('0x5a'),_0x5ae3f3['remoteUri'][_0x5183('0x5b')](_0x5183('0x5c'),''),_0x1d0c1e['id'])});break;default:logger[_0x5183('0x5d')]('[QUEUE]',_0x5183('0x5e'));}}})['catch'](function(_0x2daf16){logger[_0x5183('0x5d')](_0x5183('0x5f'),util['inspect'](_0x2daf16,{'showHidden':!![],'depth':null}));});};exports[_0x5183('0x60')]=function(_0x7c5645,_0x428f7e,_0x206068,_0x431254,_0x4246f3,_0x4680ae,_0x584dfd){var _0x436240,_0x5614b6;_0x4680ae['remoteUri']=intUtil[_0x5183('0x48')](_0x4680ae[_0x5183('0xf')]);_0x4680ae[_0x5183('0x49')]=intUtil[_0x5183('0x48')](_0x4680ae[_0x5183('0x49')]);if(_0x584dfd&&_0x584dfd['recordingFormat']&&_0x584dfd['recordingFormat']!=='none'){logger[_0x5183('0xc')](_0x5183('0x61'),'Recording\x20is\x20enabled!');_0x428f7e[_0x5183('0x4e')]=util['format'](_0x5183('0x4c'),_0x4680ae[_0x5183('0x49')],_0x428f7e[_0x5183('0x4d')],md5(_0x428f7e[_0x5183('0x4d')]));}headers['Authorization']=getAuth(_0x4680ae);return getUser(_0x4680ae,_0x431254['email'])['then'](function(_0xb92d32){_0x436240=_0xb92d32;logger[_0x5183('0xc')]('The\x20User\x20ID\x20is:',_0x436240['id']);return getEndUser(_0x4680ae,_0x428f7e[_0x5183('0x62')],_0x428f7e[_0x5183('0x63')]);})[_0x5183('0x17')](function(_0x1835bd){_0x5614b6=_0x1835bd;logger[_0x5183('0xc')]('The\x20Enduser\x20ID\x20is:',_0x5614b6['id']);return getTicket(_0x4680ae,_0x436240,_0x5614b6,_0x206068,_0x428f7e);})[_0x5183('0x17')](function(_0x1cf0da){if(_0x1cf0da){logger[_0x5183('0xc')](_0x5183('0x53'),_0x1cf0da['id']);switch(_0x4680ae['type']){case _0x5183('0x64'):logger[_0x5183('0xc')](_0x5183('0x61'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x5183('0x1c')](_0x5183('0x55'),_0x4680ae['remoteUri'],_0x436240['id'],_0x1cf0da['id']),'method':'POST'});case _0x5183('0x56'):logger[_0x5183('0xc')](_0x5183('0x61'),_0x5183('0x57'));emit(util[_0x5183('0x1c')](_0x5183('0x58'),_0x431254['name']),_0x5183('0x59'),{'uri':util[_0x5183('0x1c')](_0x5183('0x5a'),_0x4680ae[_0x5183('0xf')]['replace'](_0x5183('0x5c'),''),_0x1cf0da['id'])});break;default:logger['error'](_0x5183('0x61'),_0x5183('0x5e'));}}})[_0x5183('0x65')](function(_0x2e0679){logger['error'](_0x5183('0x66'),util[_0x5183('0x67')](_0x2e0679,{'showHidden':!![],'depth':null}));});};exports[_0x5183('0x68')]=function(_0x2769d5,_0x5ad252,_0x328c89,_0x15507c,_0x4e4148,_0x3d6982){var _0xeec9e6,_0x235c90;_0x3d6982['remoteUri']=intUtil[_0x5183('0x48')](_0x3d6982[_0x5183('0xf')]);_0x3d6982['serverUrl']=intUtil[_0x5183('0x48')](_0x3d6982['serverUrl']);if(_0x4e4148&&_0x4e4148['monitor_format']){logger[_0x5183('0xc')]('['+_0x5ad252[_0x5183('0x69')]['toUpperCase']()+']',_0x5183('0x6a'));_0x5ad252[_0x5183('0x4e')]=util['format'](_0x5183('0x4c'),_0x3d6982['serverUrl'],_0x5ad252[_0x5183('0x4d')],md5(_0x5ad252['uniqueid']));}else{_0x5ad252[_0x5183('0x4e')]='';}headers[_0x5183('0x6b')]=getAuth(_0x3d6982);return getUser(_0x3d6982)[_0x5183('0x17')](function(_0x5c547e){_0xeec9e6=_0x5c547e;logger[_0x5183('0xc')](_0x5183('0x50'),_0xeec9e6['id']);return getEndUser(_0x3d6982,_0x5ad252[_0x5183('0x51')],_0x5ad252[_0x5183('0x6c')]);})[_0x5183('0x17')](function(_0x5d1bb0){_0x235c90=_0x5d1bb0;logger['info'](_0x5183('0x52'),_0x235c90['id']);return getTicket(_0x3d6982,_0xeec9e6,_0x235c90,_0x328c89,_0x5ad252);})[_0x5183('0x17')](function(_0x5e017a){if(_0x5e017a){logger[_0x5183('0xc')](_0x5183('0x53'),_0x5e017a['id']);}})[_0x5183('0x65')](function(_0x2d0db5){logger['error']('['+_0x5ad252['lastevent'][_0x5183('0x6d')]()+']'+_0x5183('0x6e'),util[_0x5183('0x67')](_0x2d0db5,{'showHidden':!![],'depth':null}));});};