Built motion from commit d6d69adf.|2.6.33
[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 _0xad9a=['lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','inspect','request-promise','md5','util','ioredis','./util','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','POST','merge','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','filter','end-user','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','debug','[HTTP]','stringify','GET','map','includes','string','type','nameField','toLowerCase','content','picklist','custom_fields','idField','variable','variableName','customVariable','Variable','name','push','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','replace','/api/v2','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged'];(function(_0x454d94,_0x2d5642){var _0x1389b0=function(_0x1202ad){while(--_0x1202ad){_0x454d94['push'](_0x454d94['shift']());}};_0x1389b0(++_0x2d5642);}(_0xad9a,0x1c8));var _0xaad9=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xad9a[_0x47b58b];return _0x46bebe;};'use strict';var _=require('lodash');var rp=require(_0xaad9('0x0'));var md5=require(_0xaad9('0x1'));var util=require(_0xaad9('0x2'));var Redis=require(_0xaad9('0x3'));var intUtil=require(_0xaad9('0x4'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')('zendesk');config[_0xaad9('0x5')]=_[_0xaad9('0x6')](config[_0xaad9('0x5')],{'host':_0xaad9('0x7'),'port':0x18eb});var io=require(_0xaad9('0x8'))(new Redis(config['redis']));function emit(_0x1bd2e3,_0x277dbc,_0x102766){io['to'](_0x1bd2e3)[_0xaad9('0x9')](_0x277dbc,_0x102766);}var headers={'Content-Type':'application/json','Accept':_0xaad9('0xa')};function getTicket(_0x5bc57f,_0x182198,_0x5557d5,_0x2b5436,_0x2b16be){logger[_0xaad9('0xb')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xaad9('0xc')](_0xaad9('0xd'),_0x5bc57f['remoteUri']),'method':_0xaad9('0xe'),'body':{'ticket':_[_0xaad9('0xf')]({'requester_id':_0x5557d5['id'],'submitter_id':_0x182198?_0x182198['id']:undefined,'assignee_id':_0x182198?_0x182198['id']:undefined,'tags':getTags(_0x2b5436['Tags'],'name'),'subject':intUtil[_0xaad9('0x10')](_0x2b5436[_0xaad9('0x11')],_0x2b16be,'\x20'),'description':intUtil[_0xaad9('0x10')](_0x2b5436[_0xaad9('0x12')],_0x2b16be,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x2b5436['Descriptions'],_0x2b16be,'\x0a')}},getCustomFields(_0x2b5436[_0xaad9('0x13')],_0x2b16be))}})[_0xaad9('0x14')](function(_0x2c72b0){logger[_0xaad9('0xb')](_0xaad9('0x15'));return _0x2c72b0[_0xaad9('0x16')];});}function getUser(_0x543df4,_0x4860a3){if(intUtil[_0xaad9('0x17')](_0x4860a3)){logger['info'](_0xaad9('0x18'),_0x4860a3);return request({'uri':util[_0xaad9('0xc')](_0xaad9('0x19'),_0x543df4[_0xaad9('0x1a')]),'qs':{'query':util[_0xaad9('0xc')](_0xaad9('0x1b'),_0x4860a3)}})[_0xaad9('0x14')](function(_0x583ee0){if(_0x583ee0[_0xaad9('0x1c')]){logger[_0xaad9('0xb')](_0xaad9('0x1d'));return _[_0xaad9('0x1e')](_0x583ee0[_0xaad9('0x1f')],{'email':_0x4860a3,'role':_0xaad9('0x20')});}else{logger[_0xaad9('0xb')](_0xaad9('0x21'));return request({'uri':util['format'](_0xaad9('0x22'),_0x543df4['remoteUri'])})['then'](function(_0x159b4b){logger[_0xaad9('0xb')](_0xaad9('0x23'));return _0x159b4b[_0xaad9('0x24')];});}});}else{logger[_0xaad9('0xb')](_0xaad9('0x21'));return request({'uri':util[_0xaad9('0xc')]('%s/users/me.json',_0x543df4[_0xaad9('0x1a')])})['then'](function(_0x1fe2a0){logger[_0xaad9('0xb')]('Admin\x20account\x20selected.');return _0x1fe2a0[_0xaad9('0x24')];});}}function getEndUser(_0x5460a9,_0x2b56aa,_0x58dce7){logger[_0xaad9('0xb')](_0xaad9('0x25'),_0x58dce7);return request({'uri':util[_0xaad9('0xc')](_0xaad9('0x19'),_0x5460a9['remoteUri']),'qs':{'query':util[_0xaad9('0xc')]('type:user\x20role:end-user\x20phone:%s',_0x58dce7)}})[_0xaad9('0x14')](function(_0x318088){var _0x11466f;if(_0x318088['results']['length']){_0x318088['results']=_[_0xaad9('0x26')](_0x318088[_0xaad9('0x1f')],{'suspended':![],'role':_0xaad9('0x27')});if(_0x318088[_0xaad9('0x1f')][_0xaad9('0x28')]){_0x11466f=_['first'](_0x318088[_0xaad9('0x1f')]);}}if(_0x11466f){logger[_0xaad9('0xb')](_0xaad9('0x29'));return _0x11466f;}else{logger['info'](_0xaad9('0x2a'));return request({'uri':util[_0xaad9('0xc')](_0xaad9('0x2b'),_0x5460a9[_0xaad9('0x1a')]),'method':_0xaad9('0xe'),'body':{'user':{'role':_0xaad9('0x27'),'name':util[_0xaad9('0xc')](_0xaad9('0x2c'),_0x2b56aa||_0x58dce7),'phone':_0x58dce7}}})[_0xaad9('0x14')](function(_0x71eba9){logger[_0xaad9('0xb')](_0xaad9('0x2d'));return _0x71eba9['user'];});}});}function getAuth(_0x85d3c4){var _0x15cb6e;if(_0x85d3c4[_0xaad9('0x2e')]===_0xaad9('0x2f')){_0x15cb6e=util[_0xaad9('0xc')](_0xaad9('0x30'),_0x85d3c4[_0xaad9('0x31')],_0x85d3c4['password']);}else if(_0x85d3c4[_0xaad9('0x2e')]===_0xaad9('0x32')){_0x15cb6e=util['format'](_0xaad9('0x33'),_0x85d3c4[_0xaad9('0x31')],_0x85d3c4[_0xaad9('0x32')]);}return util[_0xaad9('0xc')](_0xaad9('0x34'),new Buffer(_0x15cb6e)[_0xaad9('0x35')]('base64'));}function request(_0x29ca25){logger[_0xaad9('0x36')](_0xaad9('0x37'),JSON[_0xaad9('0x38')](_0x29ca25));return rp(_[_0xaad9('0x6')](_0x29ca25,{'method':_0xaad9('0x39'),'headers':headers,'json':!![]}));}function getTags(_0xd1c648,_0xd9ed41){var _0x2b0a12=[];if(_0xd1c648&&_0xd1c648[_0xaad9('0x28')]>0x0){_0x2b0a12=_[_0xaad9('0x3a')](_0xd1c648,_0xd9ed41);}return _0x2b0a12;}function getCustomFields(_0x36ba3e,_0x40cab2){var _0x656f5f=[];var _0x46a525={'custom_fields':[]};if(_0x36ba3e[_0xaad9('0x28')]>0x0){_['forEach'](_0x36ba3e,function(_0xeff407){if(_[_0xaad9('0x3b')]([_0xaad9('0x3c'),'picklist'],_0xeff407[_0xaad9('0x3d')])&&_0xeff407[_0xaad9('0x3e')]&&!_0xeff407['customField']){_0x46a525[_0xeff407[_0xaad9('0x3e')][_0xaad9('0x3f')]()]=_0xeff407[_0xaad9('0x40')][_0xaad9('0x35')]();}else if(_[_0xaad9('0x3b')](['string',_0xaad9('0x41')],_0xeff407[_0xaad9('0x3d')])&&_0xeff407['idField']&&_0xeff407['customField']){_0x46a525[_0xaad9('0x42')]['push']({'id':_0xeff407[_0xaad9('0x43')],'value':_0xeff407[_0xaad9('0x40')]['toString']()});}else if(_0xeff407[_0xaad9('0x3d')]===_0xaad9('0x44')&&_0xeff407[_0xaad9('0x45')]&&_0xeff407[_0xaad9('0x43')]&&_0xeff407['customField']){_0x40cab2[_0xeff407[_0xaad9('0x45')]]&&_0x46a525[_0xaad9('0x42')]['push']({'id':_0xeff407[_0xaad9('0x43')],'value':_0x40cab2[_0xeff407[_0xaad9('0x45')]][_0xaad9('0x35')]()});}else if(_0xeff407[_0xaad9('0x3d')]===_0xaad9('0x46')&&_0xeff407[_0xaad9('0x47')]&&_0xeff407[_0xaad9('0x47')][_0xaad9('0x48')]&&_0xeff407[_0xaad9('0x43')]&&_0xeff407['customField']){_0x40cab2[_0xeff407[_0xaad9('0x47')][_0xaad9('0x48')][_0xaad9('0x3f')]()]&&_0x46a525[_0xaad9('0x42')][_0xaad9('0x49')]({'id':_0xeff407[_0xaad9('0x43')],'value':_0x40cab2[_0xeff407[_0xaad9('0x47')][_0xaad9('0x48')]['toLowerCase']()][_0xaad9('0x35')]()});}});}return _0x46a525;}exports[_0xaad9('0x4a')]=function(_0x1a03fe,_0x13b2f1,_0x43429c,_0x4e1ad8,_0x4b6b5c,_0x59abe8){var _0x367ca8,_0x2553f1;_0x59abe8['remoteUri']=intUtil[_0xaad9('0x4b')](_0x59abe8[_0xaad9('0x1a')]);_0x59abe8[_0xaad9('0x4c')]=intUtil['stripTrailingSlash'](_0x59abe8[_0xaad9('0x4c')]);if(_0x4b6b5c&&_0x4b6b5c[_0xaad9('0x4d')]){logger[_0xaad9('0xb')](_0xaad9('0x4e'),_0xaad9('0x4f'));_0x13b2f1[_0xaad9('0x50')]=util[_0xaad9('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x59abe8[_0xaad9('0x4c')],_0x13b2f1[_0xaad9('0x51')],md5(_0x13b2f1[_0xaad9('0x51')]));}else{_0x13b2f1[_0xaad9('0x50')]='';}headers['Authorization']=getAuth(_0x59abe8);return getUser(_0x59abe8,_0x4e1ad8[_0xaad9('0x52')])['then'](function(_0x4f9e11){_0x367ca8=_0x4f9e11;logger[_0xaad9('0xb')](_0xaad9('0x53'),_0x367ca8['id']);return getEndUser(_0x59abe8,_0x13b2f1[_0xaad9('0x54')],_0x13b2f1[_0xaad9('0x55')]);})[_0xaad9('0x14')](function(_0x2975dd){_0x2553f1=_0x2975dd;logger[_0xaad9('0xb')](_0xaad9('0x56'),_0x2553f1['id']);return getTicket(_0x59abe8,_0x367ca8,_0x2553f1,_0x43429c,_0x13b2f1);})[_0xaad9('0x14')](function(_0x2a475f){if(_0x2a475f){logger['info'](_0xaad9('0x57'),_0x2a475f['id']);switch(_0x59abe8[_0xaad9('0x3d')]){case _0xaad9('0x58'):logger['info'](_0xaad9('0x4e'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xaad9('0xc')](_0xaad9('0x59'),_0x59abe8[_0xaad9('0x1a')],_0x367ca8['id'],_0x2a475f['id']),'method':_0xaad9('0xe')});case'newTab':logger[_0xaad9('0xb')](_0xaad9('0x4e'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xaad9('0xc')]('user:%s',_0x4e1ad8['name']),'trigger:browser:url',{'uri':util[_0xaad9('0xc')]('%s/agent/tickets/%s',_0x59abe8[_0xaad9('0x1a')][_0xaad9('0x5a')](_0xaad9('0x5b'),''),_0x2a475f['id'])});break;default:logger[_0xaad9('0x5c')](_0xaad9('0x4e'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xaad9('0x5d')](function(_0x2a181b){logger[_0xaad9('0x5c')](_0xaad9('0x5e'),util['inspect'](_0x2a181b,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x54df4c,_0x14a67e,_0x161937,_0x3731af,_0x1c0372,_0x48c9e6,_0x191012){var _0x25cbb8,_0x4d180e;_0x48c9e6[_0xaad9('0x1a')]=intUtil[_0xaad9('0x4b')](_0x48c9e6['remoteUri']);_0x48c9e6[_0xaad9('0x4c')]=intUtil[_0xaad9('0x4b')](_0x48c9e6[_0xaad9('0x4c')]);if(_0x191012&&_0x191012[_0xaad9('0x5f')]&&_0x191012['recordingFormat']!==_0xaad9('0x60')){logger['info'](_0xaad9('0x61'),_0xaad9('0x4f'));_0x14a67e[_0xaad9('0x50')]=util[_0xaad9('0xc')](_0xaad9('0x62'),_0x48c9e6[_0xaad9('0x4c')],_0x14a67e[_0xaad9('0x51')],md5(_0x14a67e['uniqueid']));}headers[_0xaad9('0x63')]=getAuth(_0x48c9e6);return getUser(_0x48c9e6,_0x3731af[_0xaad9('0x52')])['then'](function(_0x35aafa){_0x25cbb8=_0x35aafa;logger[_0xaad9('0xb')](_0xaad9('0x53'),_0x25cbb8['id']);return getEndUser(_0x48c9e6,_0x14a67e[_0xaad9('0x64')],_0x14a67e[_0xaad9('0x65')]);})[_0xaad9('0x14')](function(_0x236db8){_0x4d180e=_0x236db8;logger[_0xaad9('0xb')](_0xaad9('0x56'),_0x4d180e['id']);return getTicket(_0x48c9e6,_0x25cbb8,_0x4d180e,_0x161937,_0x14a67e);})[_0xaad9('0x14')](function(_0x5d285e){if(_0x5d285e){logger[_0xaad9('0xb')](_0xaad9('0x57'),_0x5d285e['id']);switch(_0x48c9e6[_0xaad9('0x3d')]){case _0xaad9('0x58'):logger[_0xaad9('0xb')](_0xaad9('0x61'),_0xaad9('0x66'));return request({'uri':util['format'](_0xaad9('0x59'),_0x48c9e6[_0xaad9('0x1a')],_0x25cbb8['id'],_0x5d285e['id']),'method':_0xaad9('0xe')});case _0xaad9('0x67'):logger[_0xaad9('0xb')](_0xaad9('0x61'),_0xaad9('0x68'));emit(util['format']('user:%s',_0x3731af[_0xaad9('0x48')]),_0xaad9('0x69'),{'uri':util[_0xaad9('0xc')](_0xaad9('0x6a'),_0x48c9e6[_0xaad9('0x1a')][_0xaad9('0x5a')](_0xaad9('0x5b'),''),_0x5d285e['id'])});break;default:logger[_0xaad9('0x5c')]('[OUTBOUND]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xaad9('0x5d')](function(_0x1662d8){logger[_0xaad9('0x5c')](_0xaad9('0x6b'),util['inspect'](_0x1662d8,{'showHidden':!![],'depth':null}));});};exports[_0xaad9('0x6c')]=function(_0x5407d0,_0x597176,_0x45b557,_0x52f6e3,_0x8cd7a4,_0x3c65c2){var _0x34c5fd,_0x5b690d;_0x3c65c2[_0xaad9('0x1a')]=intUtil[_0xaad9('0x4b')](_0x3c65c2['remoteUri']);_0x3c65c2[_0xaad9('0x4c')]=intUtil[_0xaad9('0x4b')](_0x3c65c2[_0xaad9('0x4c')]);if(_0x8cd7a4&&_0x8cd7a4[_0xaad9('0x4d')]){logger['info']('['+_0x597176[_0xaad9('0x6d')][_0xaad9('0x6e')]()+']','Recording\x20is\x20enabled!');_0x597176[_0xaad9('0x50')]=util[_0xaad9('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3c65c2[_0xaad9('0x4c')],_0x597176[_0xaad9('0x51')],md5(_0x597176[_0xaad9('0x51')]));}else{_0x597176[_0xaad9('0x50')]='';}headers[_0xaad9('0x63')]=getAuth(_0x3c65c2);return getUser(_0x3c65c2)[_0xaad9('0x14')](function(_0x69aea5){_0x34c5fd=_0x69aea5;logger[_0xaad9('0xb')](_0xaad9('0x53'),_0x34c5fd['id']);return getEndUser(_0x3c65c2,_0x597176['calleridname'],_0x597176['calleridnum']);})[_0xaad9('0x14')](function(_0xaecdde){_0x5b690d=_0xaecdde;logger['info']('The\x20Enduser\x20ID\x20is:',_0x5b690d['id']);return getTicket(_0x3c65c2,_0x34c5fd,_0x5b690d,_0x45b557,_0x597176);})['then'](function(_0x274b65){if(_0x274b65){logger[_0xaad9('0xb')]('The\x20Ticket\x20ID\x20is:',_0x274b65['id']);}})[_0xaad9('0x5d')](function(_0x4ec109){logger[_0xaad9('0x5c')]('['+_0x597176[_0xaad9('0x6d')][_0xaad9('0x6e')]()+']'+_0xaad9('0x6f'),util[_0xaad9('0x70')](_0x4ec109,{'showHidden':!![],'depth':null}));});};