Built motion from commit 8c034dcd.|2.6.31
[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 _0x9389=['recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','newTab','Zendesk\x20account\x20type\x20not\x20recognized','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','./util','../../../../config/logger','zendesk','redis','emit','application/json','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','info','ticket','format','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','%s/search.json','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','authType','token','username','Basic\x20%s','base64','debug','stringify','defaults','GET','map','forEach','includes','string','type','nameField','customField','toLowerCase','content','toString','picklist','idField','push','variable','variableName','customVariable','Variable','custom_fields','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]'];(function(_0xd21fe7,_0x225a39){var _0x14d570=function(_0x3c0674){while(--_0x3c0674){_0xd21fe7['push'](_0xd21fe7['shift']());}};_0x14d570(++_0x225a39);}(_0x9389,0x175));var _0x9938=function(_0x57d477,_0x5d54cb){_0x57d477=_0x57d477-0x0;var _0xc628bb=_0x9389[_0x57d477];return _0xc628bb;};'use strict';var _=require(_0x9938('0x0'));var rp=require(_0x9938('0x1'));var md5=require('md5');var util=require(_0x9938('0x2'));var Redis=require(_0x9938('0x3'));var intUtil=require(_0x9938('0x4'));var config=require('../../../../config/environment');var logger=require(_0x9938('0x5'))(_0x9938('0x6'));config[_0x9938('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x3fd077,_0x34b547,_0x2fd02f){io['to'](_0x3fd077)[_0x9938('0x8')](_0x34b547,_0x2fd02f);}var headers={'Content-Type':_0x9938('0x9'),'Accept':'application/json'};function getTicket(_0x19f29b,_0x3a6ec7,_0x57356d,_0x344346,_0x465bfb){logger['info'](_0x9938('0xa'));return request({'uri':util['format'](_0x9938('0xb'),_0x19f29b[_0x9938('0xc')]),'method':_0x9938('0xd'),'body':{'ticket':_[_0x9938('0xe')]({'requester_id':_0x57356d['id'],'submitter_id':_0x3a6ec7?_0x3a6ec7['id']:undefined,'assignee_id':_0x3a6ec7?_0x3a6ec7['id']:undefined,'tags':getTags(_0x344346[_0x9938('0xf')],_0x9938('0x10')),'subject':intUtil[_0x9938('0x11')](_0x344346[_0x9938('0x12')],_0x465bfb,'\x20'),'description':intUtil['getString'](_0x344346[_0x9938('0x13')],_0x465bfb,'\x0a'),'comment':{'public':![],'body':intUtil[_0x9938('0x11')](_0x344346['Descriptions'],_0x465bfb,'\x0a')}},getCustomFields(_0x344346[_0x9938('0x14')],_0x465bfb))}})['then'](function(_0x54fefe){logger[_0x9938('0x15')]('Ticket\x20created!');return _0x54fefe[_0x9938('0x16')];});}function getUser(_0x1c5d00,_0x25b5c9){if(intUtil['validateEmail'](_0x25b5c9)){logger['info']('Getting\x20agent\x20with\x20email',_0x25b5c9);return request({'uri':util['format']('%s/search.json',_0x1c5d00[_0x9938('0xc')]),'qs':{'query':util[_0x9938('0x17')](_0x9938('0x18'),_0x25b5c9)}})[_0x9938('0x19')](function(_0xe2a095){if(_0xe2a095[_0x9938('0x1a')]){logger[_0x9938('0x15')](_0x9938('0x1b'));return _[_0x9938('0x1c')](_0xe2a095['results'],{'email':_0x25b5c9,'role':_0x9938('0x1d')});}else{logger[_0x9938('0x15')](_0x9938('0x1e'));return request({'uri':util['format'](_0x9938('0x1f'),_0x1c5d00['remoteUri'])})[_0x9938('0x19')](function(_0x23d10c){logger[_0x9938('0x15')](_0x9938('0x20'));return _0x23d10c['user'];});}});}else{logger['info'](_0x9938('0x1e'));return request({'uri':util[_0x9938('0x17')](_0x9938('0x1f'),_0x1c5d00[_0x9938('0xc')])})[_0x9938('0x19')](function(_0x25c746){logger[_0x9938('0x15')](_0x9938('0x20'));return _0x25c746[_0x9938('0x21')];});}}function getEndUser(_0x12c551,_0x3fe901,_0x133c3a){logger[_0x9938('0x15')]('Searching\x20enduser\x20with\x20phone',_0x133c3a);return request({'uri':util['format'](_0x9938('0x22'),_0x12c551[_0x9938('0xc')]),'qs':{'query':util[_0x9938('0x17')](_0x9938('0x23'),_0x133c3a)}})[_0x9938('0x19')](function(_0x569814){var _0x4c131f;if(_0x569814[_0x9938('0x24')][_0x9938('0x25')]){_0x569814[_0x9938('0x24')]=_[_0x9938('0x26')](_0x569814[_0x9938('0x24')],{'suspended':![],'role':_0x9938('0x27')});if(_0x569814[_0x9938('0x24')][_0x9938('0x25')]){_0x4c131f=_[_0x9938('0x28')](_0x569814[_0x9938('0x24')]);}}if(_0x4c131f){logger[_0x9938('0x15')]('Enduser\x20found!');return _0x4c131f;}else{logger[_0x9938('0x15')](_0x9938('0x29'));return request({'uri':util[_0x9938('0x17')](_0x9938('0x2a'),_0x12c551[_0x9938('0xc')]),'method':_0x9938('0xd'),'body':{'user':{'role':_0x9938('0x27'),'name':util[_0x9938('0x17')](_0x9938('0x2b'),_0x3fe901||_0x133c3a),'phone':_0x133c3a}}})[_0x9938('0x19')](function(_0x24294f){logger[_0x9938('0x15')](_0x9938('0x2c'));return _0x24294f['user'];});}});}function getAuth(_0x295e2f){var _0x1aa406;if(_0x295e2f['authType']===_0x9938('0x2d')){_0x1aa406=util[_0x9938('0x17')](_0x9938('0x2e'),_0x295e2f['username'],_0x295e2f[_0x9938('0x2d')]);}else if(_0x295e2f[_0x9938('0x2f')]===_0x9938('0x30')){_0x1aa406=util[_0x9938('0x17')]('%s/token:%s',_0x295e2f[_0x9938('0x31')],_0x295e2f['token']);}return util[_0x9938('0x17')](_0x9938('0x32'),new Buffer(_0x1aa406)['toString'](_0x9938('0x33')));}function request(_0x45dba3){logger[_0x9938('0x34')]('[HTTP]',JSON[_0x9938('0x35')](_0x45dba3));return rp(_[_0x9938('0x36')](_0x45dba3,{'method':_0x9938('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x417aa2,_0x4fdac2){var _0x33faaf=[];if(_0x417aa2&&_0x417aa2[_0x9938('0x25')]>0x0){_0x33faaf=_[_0x9938('0x38')](_0x417aa2,_0x4fdac2);}return _0x33faaf;}function getCustomFields(_0x262823,_0x2b4f85){var _0x1297dd=[];var _0x7af833={'custom_fields':[]};if(_0x262823['length']>0x0){_[_0x9938('0x39')](_0x262823,function(_0x49a2a3){if(_[_0x9938('0x3a')]([_0x9938('0x3b'),'picklist'],_0x49a2a3[_0x9938('0x3c')])&&_0x49a2a3[_0x9938('0x3d')]&&!_0x49a2a3[_0x9938('0x3e')]){_0x7af833[_0x49a2a3['nameField'][_0x9938('0x3f')]()]=_0x49a2a3[_0x9938('0x40')][_0x9938('0x41')]();}else if(_[_0x9938('0x3a')]([_0x9938('0x3b'),_0x9938('0x42')],_0x49a2a3[_0x9938('0x3c')])&&_0x49a2a3[_0x9938('0x43')]&&_0x49a2a3[_0x9938('0x3e')]){_0x7af833['custom_fields'][_0x9938('0x44')]({'id':_0x49a2a3[_0x9938('0x43')],'value':_0x49a2a3['content']['toString']()});}else if(_0x49a2a3[_0x9938('0x3c')]===_0x9938('0x45')&&_0x49a2a3[_0x9938('0x46')]&&_0x49a2a3['idField']&&_0x49a2a3[_0x9938('0x3e')]){_0x2b4f85[_0x49a2a3[_0x9938('0x46')]]&&_0x7af833['custom_fields'][_0x9938('0x44')]({'id':_0x49a2a3[_0x9938('0x43')],'value':_0x2b4f85[_0x49a2a3['variableName']][_0x9938('0x41')]()});}else if(_0x49a2a3['type']===_0x9938('0x47')&&_0x49a2a3[_0x9938('0x48')]&&_0x49a2a3[_0x9938('0x48')][_0x9938('0x10')]&&_0x49a2a3[_0x9938('0x43')]&&_0x49a2a3[_0x9938('0x3e')]){_0x2b4f85[_0x49a2a3['Variable'][_0x9938('0x10')][_0x9938('0x3f')]()]&&_0x7af833[_0x9938('0x49')][_0x9938('0x44')]({'id':_0x49a2a3[_0x9938('0x43')],'value':_0x2b4f85[_0x49a2a3[_0x9938('0x48')][_0x9938('0x10')][_0x9938('0x3f')]()][_0x9938('0x41')]()});}});}return _0x7af833;}exports[_0x9938('0x4a')]=function(_0x4f40e9,_0x183152,_0x1826e,_0x5a4edc,_0x3c533e,_0x5ecf2e){var _0x56cb51,_0xd8e030;_0x5ecf2e[_0x9938('0xc')]=intUtil[_0x9938('0x4b')](_0x5ecf2e[_0x9938('0xc')]);_0x5ecf2e['serverUrl']=intUtil[_0x9938('0x4b')](_0x5ecf2e[_0x9938('0x4c')]);if(_0x3c533e&&_0x3c533e[_0x9938('0x4d')]){logger[_0x9938('0x15')](_0x9938('0x4e'),'Recording\x20is\x20enabled!');_0x183152[_0x9938('0x4f')]=util[_0x9938('0x17')](_0x9938('0x50'),_0x5ecf2e[_0x9938('0x4c')],_0x183152[_0x9938('0x51')],md5(_0x183152[_0x9938('0x51')]));}else{_0x183152[_0x9938('0x4f')]='';}headers[_0x9938('0x52')]=getAuth(_0x5ecf2e);return getUser(_0x5ecf2e,_0x5a4edc[_0x9938('0x53')])[_0x9938('0x19')](function(_0x777fb7){_0x56cb51=_0x777fb7;logger[_0x9938('0x15')]('The\x20User\x20ID\x20is:',_0x56cb51['id']);return getEndUser(_0x5ecf2e,_0x183152[_0x9938('0x54')],_0x183152['calleridnum']);})['then'](function(_0x9cf0a0){_0xd8e030=_0x9cf0a0;logger[_0x9938('0x15')](_0x9938('0x55'),_0xd8e030['id']);return getTicket(_0x5ecf2e,_0x56cb51,_0xd8e030,_0x1826e,_0x183152);})['then'](function(_0x15a4d6){if(_0x15a4d6){logger[_0x9938('0x15')](_0x9938('0x56'),_0x15a4d6['id']);switch(_0x5ecf2e[_0x9938('0x3c')]){case _0x9938('0x57'):logger['info'](_0x9938('0x4e'),_0x9938('0x58'));return request({'uri':util[_0x9938('0x17')](_0x9938('0x59'),_0x5ecf2e[_0x9938('0xc')],_0x56cb51['id'],_0x15a4d6['id']),'method':_0x9938('0xd')});case'newTab':logger['info']('[QUEUE]',_0x9938('0x5a'));emit(util[_0x9938('0x17')](_0x9938('0x5b'),_0x5a4edc[_0x9938('0x10')]),_0x9938('0x5c'),{'uri':util[_0x9938('0x17')](_0x9938('0x5d'),_0x5ecf2e[_0x9938('0xc')][_0x9938('0x5e')](_0x9938('0x5f'),''),_0x15a4d6['id'])});break;default:logger['error'](_0x9938('0x4e'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x15cdd2){logger[_0x9938('0x60')](_0x9938('0x61'),util[_0x9938('0x62')](_0x15cdd2,{'showHidden':!![],'depth':null}));});};exports[_0x9938('0x63')]=function(_0x1f8e10,_0x412680,_0x150125,_0x58cc64,_0x148a5c,_0x1ea273,_0x53e6d3){var _0x2512d9,_0x2b3d85;_0x1ea273['remoteUri']=intUtil['stripTrailingSlash'](_0x1ea273[_0x9938('0xc')]);_0x1ea273['serverUrl']=intUtil[_0x9938('0x4b')](_0x1ea273['serverUrl']);if(_0x53e6d3&&_0x53e6d3[_0x9938('0x64')]&&_0x53e6d3[_0x9938('0x64')]!==_0x9938('0x65')){logger[_0x9938('0x15')](_0x9938('0x66'),_0x9938('0x67'));_0x412680['recordingURL']=util[_0x9938('0x17')](_0x9938('0x50'),_0x1ea273[_0x9938('0x4c')],_0x412680[_0x9938('0x51')],md5(_0x412680[_0x9938('0x51')]));}headers[_0x9938('0x52')]=getAuth(_0x1ea273);return getUser(_0x1ea273,_0x58cc64['email'])[_0x9938('0x19')](function(_0x4d8938){_0x2512d9=_0x4d8938;logger[_0x9938('0x15')](_0x9938('0x68'),_0x2512d9['id']);return getEndUser(_0x1ea273,_0x412680[_0x9938('0x69')],_0x412680['destcalleridnum']);})['then'](function(_0x4f321f){_0x2b3d85=_0x4f321f;logger[_0x9938('0x15')](_0x9938('0x55'),_0x2b3d85['id']);return getTicket(_0x1ea273,_0x2512d9,_0x2b3d85,_0x150125,_0x412680);})[_0x9938('0x19')](function(_0x186ddd){if(_0x186ddd){logger[_0x9938('0x15')](_0x9938('0x56'),_0x186ddd['id']);switch(_0x1ea273['type']){case _0x9938('0x57'):logger[_0x9938('0x15')](_0x9938('0x66'),_0x9938('0x58'));return request({'uri':util['format'](_0x9938('0x59'),_0x1ea273[_0x9938('0xc')],_0x2512d9['id'],_0x186ddd['id']),'method':_0x9938('0xd')});case _0x9938('0x6a'):logger[_0x9938('0x15')](_0x9938('0x66'),_0x9938('0x5a'));emit(util[_0x9938('0x17')](_0x9938('0x5b'),_0x58cc64[_0x9938('0x10')]),_0x9938('0x5c'),{'uri':util[_0x9938('0x17')](_0x9938('0x5d'),_0x1ea273[_0x9938('0xc')][_0x9938('0x5e')]('/api/v2',''),_0x186ddd['id'])});break;default:logger[_0x9938('0x60')](_0x9938('0x66'),_0x9938('0x6b'));}}})[_0x9938('0x6c')](function(_0x10a076){logger['error'](_0x9938('0x6d'),util['inspect'](_0x10a076,{'showHidden':!![],'depth':null}));});};exports[_0x9938('0x6e')]=function(_0x504bfd,_0x157741,_0x4b16d2,_0x53ad0a,_0x325dd4,_0x356c93){var _0x3cca2c,_0x2cdc4e;_0x356c93[_0x9938('0xc')]=intUtil['stripTrailingSlash'](_0x356c93[_0x9938('0xc')]);_0x356c93['serverUrl']=intUtil['stripTrailingSlash'](_0x356c93[_0x9938('0x4c')]);if(_0x325dd4&&_0x325dd4['monitor_format']){logger['info']('['+_0x157741[_0x9938('0x6f')]['toUpperCase']()+']',_0x9938('0x67'));_0x157741[_0x9938('0x4f')]=util[_0x9938('0x17')](_0x9938('0x50'),_0x356c93[_0x9938('0x4c')],_0x157741['uniqueid'],md5(_0x157741[_0x9938('0x51')]));}else{_0x157741[_0x9938('0x4f')]='';}headers['Authorization']=getAuth(_0x356c93);return getUser(_0x356c93)['then'](function(_0x311f9a){_0x3cca2c=_0x311f9a;logger['info'](_0x9938('0x68'),_0x3cca2c['id']);return getEndUser(_0x356c93,_0x157741[_0x9938('0x54')],_0x157741['calleridnum']);})[_0x9938('0x19')](function(_0x5721db){_0x2cdc4e=_0x5721db;logger[_0x9938('0x15')](_0x9938('0x55'),_0x2cdc4e['id']);return getTicket(_0x356c93,_0x3cca2c,_0x2cdc4e,_0x4b16d2,_0x157741);})[_0x9938('0x19')](function(_0x21a84b){if(_0x21a84b){logger[_0x9938('0x15')](_0x9938('0x56'),_0x21a84b['id']);}})[_0x9938('0x6c')](function(_0x1a751b){logger[_0x9938('0x60')]('['+_0x157741['lastevent']['toUpperCase']()+']'+_0x9938('0x70'),util[_0x9938('0x62')](_0x1a751b,{'showHidden':!![],'depth':null}));});};