dff86e51b30a8950b411181ff1f207397fc307c9
[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 _0x00e1=['Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Descriptions','Fields','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','format','type:user\x20role:agent\x20email:%s','then','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','results','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','authType','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','toString','[HTTP]','stringify','GET','length','forEach','string','nameField','content','type','idField','customField','custom_fields','push','variable','variableName','Variable','toLowerCase','queue','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','trigger:browser:url','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','stripTrailingSlash','recordingFormat','none','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','integrationTab','[OUTBOUND]','newTab'];(function(_0x146718,_0x5a626d){var _0x127c92=function(_0x53094c){while(--_0x53094c){_0x146718['push'](_0x146718['shift']());}};_0x127c92(++_0x5a626d);}(_0x00e1,0x151));var _0x100e=function(_0x18c671,_0x303d80){_0x18c671=_0x18c671-0x0;var _0x1df021=_0x00e1[_0x18c671];return _0x1df021;};'use strict';var _=require('lodash');var rp=require(_0x100e('0x0'));var md5=require(_0x100e('0x1'));var util=require(_0x100e('0x2'));var Redis=require(_0x100e('0x3'));var intUtil=require(_0x100e('0x4'));var config=require(_0x100e('0x5'));var logger=require(_0x100e('0x6'))(_0x100e('0x7'));config[_0x100e('0x8')]=_[_0x100e('0x9')](config[_0x100e('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x100e('0xa'))(new Redis(config['redis']));function emit(_0x474b47,_0x9eea2,_0x4c4787){io['to'](_0x474b47)[_0x100e('0xb')](_0x9eea2,_0x4c4787);}var headers={'Content-Type':_0x100e('0xc'),'Accept':_0x100e('0xc')};function getTicket(_0x2a2fd0,_0x252350,_0x351495,_0x12b744,_0x34d294){logger[_0x100e('0xd')](_0x100e('0xe'));return request({'uri':util['format'](_0x100e('0xf'),_0x2a2fd0[_0x100e('0x10')]),'method':_0x100e('0x11'),'body':{'ticket':_[_0x100e('0x12')]({'requester_id':_0x351495['id'],'submitter_id':_0x252350?_0x252350['id']:undefined,'assignee_id':_0x252350?_0x252350['id']:undefined,'tags':getTags(_0x12b744[_0x100e('0x13')],_0x100e('0x14')),'subject':intUtil[_0x100e('0x15')](_0x12b744['Subjects'],_0x34d294,'\x20'),'description':intUtil['getString'](_0x12b744['Descriptions'],_0x34d294,'\x0a'),'comment':{'public':![],'body':intUtil[_0x100e('0x15')](_0x12b744[_0x100e('0x16')],_0x34d294,'\x0a')}},getCustomFields(_0x12b744[_0x100e('0x17')],_0x34d294))}})['then'](function(_0x47449f){logger[_0x100e('0xd')](_0x100e('0x18'));return _0x47449f[_0x100e('0x19')];});}function getUser(_0x161927,_0x545f51){if(intUtil[_0x100e('0x1a')](_0x545f51)){logger[_0x100e('0xd')](_0x100e('0x1b'),_0x545f51);return request({'uri':util['format'](_0x100e('0x1c'),_0x161927[_0x100e('0x10')]),'qs':{'query':util[_0x100e('0x1d')](_0x100e('0x1e'),_0x545f51)}})[_0x100e('0x1f')](function(_0x421c7e){if(_0x421c7e['count']){logger[_0x100e('0xd')]('Agent\x20found!');return _['find'](_0x421c7e['results'],{'email':_0x545f51,'role':_0x100e('0x20')});}else{logger[_0x100e('0xd')](_0x100e('0x21'));return request({'uri':util['format'](_0x100e('0x22'),_0x161927[_0x100e('0x10')])})[_0x100e('0x1f')](function(_0x18de3f){logger[_0x100e('0xd')](_0x100e('0x23'));return _0x18de3f[_0x100e('0x24')];});}});}else{logger[_0x100e('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x100e('0x1d')](_0x100e('0x22'),_0x161927['remoteUri'])})[_0x100e('0x1f')](function(_0x557e39){logger[_0x100e('0xd')]('Admin\x20account\x20selected.');return _0x557e39[_0x100e('0x24')];});}}function getEndUser(_0x1224cc,_0x18c404,_0x1362b0){logger[_0x100e('0xd')](_0x100e('0x25'),_0x1362b0);return request({'uri':util[_0x100e('0x1d')](_0x100e('0x1c'),_0x1224cc['remoteUri']),'qs':{'query':util[_0x100e('0x1d')]('type:user\x20role:end-user\x20phone:%s',_0x1362b0)}})[_0x100e('0x1f')](function(_0x2f1ca1){var _0xd598f9;if(_0x2f1ca1[_0x100e('0x26')]['length']){_0x2f1ca1['results']=_[_0x100e('0x27')](_0x2f1ca1[_0x100e('0x26')],{'suspended':![],'role':_0x100e('0x28')});if(_0x2f1ca1['results']['length']){_0xd598f9=_[_0x100e('0x29')](_0x2f1ca1[_0x100e('0x26')]);}}if(_0xd598f9){logger['info']('Enduser\x20found!');return _0xd598f9;}else{logger[_0x100e('0xd')](_0x100e('0x2a'));return request({'uri':util[_0x100e('0x1d')]('%s/users.json',_0x1224cc[_0x100e('0x10')]),'method':'POST','body':{'user':{'role':_0x100e('0x28'),'name':util[_0x100e('0x1d')]('Caller\x20-\x20%s',_0x18c404||_0x1362b0),'phone':_0x1362b0}}})[_0x100e('0x1f')](function(_0x1c08e4){logger[_0x100e('0xd')](_0x100e('0x2b'));return _0x1c08e4[_0x100e('0x24')];});}});}function getAuth(_0x14148d){var _0x543aa0;if(_0x14148d[_0x100e('0x2c')]==='password'){_0x543aa0=util[_0x100e('0x1d')](_0x100e('0x2d'),_0x14148d[_0x100e('0x2e')],_0x14148d[_0x100e('0x2f')]);}else if(_0x14148d[_0x100e('0x2c')]===_0x100e('0x30')){_0x543aa0=util[_0x100e('0x1d')](_0x100e('0x31'),_0x14148d[_0x100e('0x2e')],_0x14148d[_0x100e('0x30')]);}return util['format'](_0x100e('0x32'),new Buffer(_0x543aa0)[_0x100e('0x33')]('base64'));}function request(_0x128310){logger['debug'](_0x100e('0x34'),JSON[_0x100e('0x35')](_0x128310));return rp(_[_0x100e('0x9')](_0x128310,{'method':_0x100e('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x31d0d2,_0x45d6e3){var _0x17017c=[];if(_0x31d0d2&&_0x31d0d2['length']>0x0){_0x17017c=_['map'](_0x31d0d2,_0x45d6e3);}return _0x17017c;}function getCustomFields(_0x19f652,_0x2008e5){var _0x246f7b=[];var _0x5216d7={'custom_fields':[]};if(_0x19f652[_0x100e('0x37')]>0x0){_[_0x100e('0x38')](_0x19f652,function(_0x24d518){if(_0x24d518['type']===_0x100e('0x39')&&_0x24d518[_0x100e('0x3a')]&&!_0x24d518['customField']){_0x5216d7[_0x24d518[_0x100e('0x3a')]['toLowerCase']()]=_0x24d518[_0x100e('0x3b')][_0x100e('0x33')]();}else if(_0x24d518[_0x100e('0x3c')]===_0x100e('0x39')&&_0x24d518[_0x100e('0x3d')]&&_0x24d518[_0x100e('0x3e')]){_0x5216d7[_0x100e('0x3f')][_0x100e('0x40')]({'id':_0x24d518[_0x100e('0x3d')],'value':_0x24d518[_0x100e('0x3b')]['toString']()});}else if(_0x24d518['type']===_0x100e('0x41')&&_0x24d518[_0x100e('0x42')]&&_0x24d518['idField']&&_0x24d518['customField']){_0x2008e5[_0x24d518[_0x100e('0x42')]]&&_0x5216d7[_0x100e('0x3f')]['push']({'id':_0x24d518['idField'],'value':_0x2008e5[_0x24d518['variableName']]['toString']()});}else if(_0x24d518[_0x100e('0x3c')]==='customVariable'&&_0x24d518['Variable']&&_0x24d518[_0x100e('0x43')][_0x100e('0x14')]&&_0x24d518[_0x100e('0x3d')]&&_0x24d518[_0x100e('0x3e')]){_0x2008e5[_0x24d518['Variable'][_0x100e('0x14')][_0x100e('0x44')]()]&&_0x5216d7['custom_fields']['push']({'id':_0x24d518[_0x100e('0x3d')],'value':_0x2008e5[_0x24d518[_0x100e('0x43')][_0x100e('0x14')]['toLowerCase']()][_0x100e('0x33')]()});}});}return _0x5216d7;}exports[_0x100e('0x45')]=function(_0x5a8921,_0x1d1174,_0x1958de,_0x2ab014,_0x5783fd,_0x15a763){var _0x48ed9d,_0x33d839;_0x15a763[_0x100e('0x10')]=intUtil['stripTrailingSlash'](_0x15a763[_0x100e('0x10')]);_0x15a763[_0x100e('0x46')]=intUtil['stripTrailingSlash'](_0x15a763['serverUrl']);if(_0x5783fd&&_0x5783fd[_0x100e('0x47')]){logger[_0x100e('0xd')](_0x100e('0x48'),_0x100e('0x49'));_0x1d1174[_0x100e('0x4a')]=util[_0x100e('0x1d')](_0x100e('0x4b'),_0x15a763[_0x100e('0x46')],_0x1d1174[_0x100e('0x4c')],md5(_0x1d1174['uniqueid']));}else{_0x1d1174[_0x100e('0x4a')]='';}headers[_0x100e('0x4d')]=getAuth(_0x15a763);return getUser(_0x15a763,_0x2ab014[_0x100e('0x4e')])[_0x100e('0x1f')](function(_0x5a829f){_0x48ed9d=_0x5a829f;logger[_0x100e('0xd')]('The\x20User\x20ID\x20is:',_0x48ed9d['id']);return getEndUser(_0x15a763,_0x1d1174[_0x100e('0x4f')],_0x1d1174[_0x100e('0x50')]);})['then'](function(_0x2ecd04){_0x33d839=_0x2ecd04;logger['info'](_0x100e('0x51'),_0x33d839['id']);return getTicket(_0x15a763,_0x48ed9d,_0x33d839,_0x1958de,_0x1d1174);})[_0x100e('0x1f')](function(_0x463730){if(_0x463730){logger[_0x100e('0xd')](_0x100e('0x52'),_0x463730['id']);switch(_0x15a763[_0x100e('0x3c')]){case'integrationTab':logger[_0x100e('0xd')]('[QUEUE]',_0x100e('0x53'));return request({'uri':util[_0x100e('0x1d')](_0x100e('0x54'),_0x15a763[_0x100e('0x10')],_0x48ed9d['id'],_0x463730['id']),'method':'POST'});case'newTab':logger[_0x100e('0xd')](_0x100e('0x48'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x100e('0x1d')](_0x100e('0x55'),_0x2ab014[_0x100e('0x14')]),_0x100e('0x56'),{'uri':util[_0x100e('0x1d')]('%s/agent/tickets/%s',_0x15a763['remoteUri']['replace'](_0x100e('0x57'),''),_0x463730['id'])});break;default:logger[_0x100e('0x58')](_0x100e('0x48'),_0x100e('0x59'));}}})[_0x100e('0x5a')](function(_0x383b10){logger['error'](_0x100e('0x5b'),util[_0x100e('0x5c')](_0x383b10,{'showHidden':!![],'depth':null}));});};exports[_0x100e('0x5d')]=function(_0x9d689e,_0x13cd79,_0x16241e,_0x4d6dea,_0x322654,_0xde9a21,_0x2f42da){var _0x3232b5,_0x22a7e8;_0xde9a21[_0x100e('0x10')]=intUtil['stripTrailingSlash'](_0xde9a21[_0x100e('0x10')]);_0xde9a21[_0x100e('0x46')]=intUtil[_0x100e('0x5e')](_0xde9a21[_0x100e('0x46')]);if(_0x2f42da&&_0x2f42da[_0x100e('0x5f')]&&_0x2f42da[_0x100e('0x5f')]!==_0x100e('0x60')){logger[_0x100e('0xd')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x13cd79[_0x100e('0x4a')]=util[_0x100e('0x1d')](_0x100e('0x4b'),_0xde9a21[_0x100e('0x46')],_0x13cd79[_0x100e('0x4c')],md5(_0x13cd79[_0x100e('0x4c')]));}headers[_0x100e('0x4d')]=getAuth(_0xde9a21);return getUser(_0xde9a21,_0x4d6dea[_0x100e('0x4e')])[_0x100e('0x1f')](function(_0x43336b){_0x3232b5=_0x43336b;logger[_0x100e('0xd')](_0x100e('0x61'),_0x3232b5['id']);return getEndUser(_0xde9a21,_0x13cd79[_0x100e('0x62')],_0x13cd79[_0x100e('0x63')]);})['then'](function(_0x8e69a8){_0x22a7e8=_0x8e69a8;logger[_0x100e('0xd')](_0x100e('0x51'),_0x22a7e8['id']);return getTicket(_0xde9a21,_0x3232b5,_0x22a7e8,_0x16241e,_0x13cd79);})[_0x100e('0x1f')](function(_0x4f353c){if(_0x4f353c){logger[_0x100e('0xd')](_0x100e('0x52'),_0x4f353c['id']);switch(_0xde9a21[_0x100e('0x3c')]){case _0x100e('0x64'):logger[_0x100e('0xd')](_0x100e('0x65'),_0x100e('0x53'));return request({'uri':util[_0x100e('0x1d')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0xde9a21[_0x100e('0x10')],_0x3232b5['id'],_0x4f353c['id']),'method':'POST'});case _0x100e('0x66'):logger[_0x100e('0xd')]('[OUTBOUND]',_0x100e('0x67'));emit(util[_0x100e('0x1d')]('user:%s',_0x4d6dea[_0x100e('0x14')]),_0x100e('0x56'),{'uri':util['format'](_0x100e('0x68'),_0xde9a21['remoteUri'][_0x100e('0x69')](_0x100e('0x57'),''),_0x4f353c['id'])});break;default:logger[_0x100e('0x58')](_0x100e('0x65'),_0x100e('0x59'));}}})[_0x100e('0x5a')](function(_0x72e268){logger[_0x100e('0x58')](_0x100e('0x6a'),util[_0x100e('0x5c')](_0x72e268,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x151c12,_0x3722f1,_0x4729b5,_0x285b8a,_0x1db98e,_0x4f3697){var _0x5a17e1,_0x48c6a5;_0x4f3697[_0x100e('0x10')]=intUtil[_0x100e('0x5e')](_0x4f3697[_0x100e('0x10')]);_0x4f3697[_0x100e('0x46')]=intUtil[_0x100e('0x5e')](_0x4f3697[_0x100e('0x46')]);if(_0x1db98e&&_0x1db98e['monitor_format']){logger['info']('['+_0x3722f1[_0x100e('0x6b')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x3722f1[_0x100e('0x4a')]=util[_0x100e('0x1d')](_0x100e('0x4b'),_0x4f3697[_0x100e('0x46')],_0x3722f1[_0x100e('0x4c')],md5(_0x3722f1[_0x100e('0x4c')]));}else{_0x3722f1[_0x100e('0x4a')]='';}headers[_0x100e('0x4d')]=getAuth(_0x4f3697);return getUser(_0x4f3697)[_0x100e('0x1f')](function(_0x40d32c){_0x5a17e1=_0x40d32c;logger[_0x100e('0xd')](_0x100e('0x61'),_0x5a17e1['id']);return getEndUser(_0x4f3697,_0x3722f1[_0x100e('0x4f')],_0x3722f1[_0x100e('0x50')]);})['then'](function(_0x32d79e){_0x48c6a5=_0x32d79e;logger[_0x100e('0xd')](_0x100e('0x51'),_0x48c6a5['id']);return getTicket(_0x4f3697,_0x5a17e1,_0x48c6a5,_0x4729b5,_0x3722f1);})['then'](function(_0x1e5bc5){if(_0x1e5bc5){logger[_0x100e('0xd')]('The\x20Ticket\x20ID\x20is:',_0x1e5bc5['id']);}})[_0x100e('0x5a')](function(_0x2193db){logger[_0x100e('0x58')]('['+_0x3722f1[_0x100e('0x6b')][_0x100e('0x6c')]()+']'+_0x100e('0x6d'),util['inspect'](_0x2193db,{'showHidden':!![],'depth':null}));});};