eede922a63ba6ef83a85cdc13f7477852cbe6515
[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 _0x1dca=['type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','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','end-user','length','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','authType','password','token','%s/token:%s','Basic\x20%s','base64','debug','[HTTP]','GET','map','forEach','includes','string','picklist','type','nameField','customField','toString','idField','push','variableName','custom_fields','customVariable','Variable','name','toLowerCase','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%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','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','/api/v2','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','application/json','info','%s/tickets.json','remoteUri','POST','Tags','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json'];(function(_0x233712,_0x242257){var _0x3eb42b=function(_0x262cb9){while(--_0x262cb9){_0x233712['push'](_0x233712['shift']());}};_0x3eb42b(++_0x242257);}(_0x1dca,0x120));var _0xa1dc=function(_0x402c8f,_0x30cc1d){_0x402c8f=_0x402c8f-0x0;var _0x11e809=_0x1dca[_0x402c8f];return _0x11e809;};'use strict';var _=require('lodash');var rp=require(_0xa1dc('0x0'));var md5=require(_0xa1dc('0x1'));var util=require(_0xa1dc('0x2'));var Redis=require(_0xa1dc('0x3'));var intUtil=require(_0xa1dc('0x4'));var config=require(_0xa1dc('0x5'));var logger=require(_0xa1dc('0x6'))(_0xa1dc('0x7'));config[_0xa1dc('0x8')]=_[_0xa1dc('0x9')](config[_0xa1dc('0x8')],{'host':_0xa1dc('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x52da8e,_0x108d1c,_0xd02864){io['to'](_0x52da8e)['emit'](_0x108d1c,_0xd02864);}var headers={'Content-Type':_0xa1dc('0xb'),'Accept':'application/json'};function getTicket(_0x47c5d4,_0x466f22,_0x51f139,_0x104bb0,_0xaac800){logger[_0xa1dc('0xc')]('Creating\x20new\x20ticket...');return request({'uri':util['format'](_0xa1dc('0xd'),_0x47c5d4[_0xa1dc('0xe')]),'method':_0xa1dc('0xf'),'body':{'ticket':_['merge']({'requester_id':_0x51f139['id'],'submitter_id':_0x466f22?_0x466f22['id']:undefined,'assignee_id':_0x466f22?_0x466f22['id']:undefined,'tags':getTags(_0x104bb0[_0xa1dc('0x10')],'name'),'subject':intUtil[_0xa1dc('0x11')](_0x104bb0['Subjects'],_0xaac800,'\x20'),'description':intUtil[_0xa1dc('0x11')](_0x104bb0[_0xa1dc('0x12')],_0xaac800,'\x0a'),'comment':{'public':![],'body':intUtil[_0xa1dc('0x11')](_0x104bb0[_0xa1dc('0x12')],_0xaac800,'\x0a')}},getCustomFields(_0x104bb0[_0xa1dc('0x13')],_0xaac800))}})[_0xa1dc('0x14')](function(_0x428914){logger['info'](_0xa1dc('0x15'));return _0x428914[_0xa1dc('0x16')];});}function getUser(_0x20e5b0,_0x6eb387){if(intUtil[_0xa1dc('0x17')](_0x6eb387)){logger['info'](_0xa1dc('0x18'),_0x6eb387);return request({'uri':util[_0xa1dc('0x19')](_0xa1dc('0x1a'),_0x20e5b0[_0xa1dc('0xe')]),'qs':{'query':util[_0xa1dc('0x19')](_0xa1dc('0x1b'),_0x6eb387)}})[_0xa1dc('0x14')](function(_0x182027){if(_0x182027['count']){logger[_0xa1dc('0xc')](_0xa1dc('0x1c'));return _[_0xa1dc('0x1d')](_0x182027[_0xa1dc('0x1e')],{'email':_0x6eb387,'role':'agent'});}else{logger['info'](_0xa1dc('0x1f'));return request({'uri':util[_0xa1dc('0x19')](_0xa1dc('0x20'),_0x20e5b0[_0xa1dc('0xe')])})[_0xa1dc('0x14')](function(_0x42ca2a){logger[_0xa1dc('0xc')](_0xa1dc('0x21'));return _0x42ca2a[_0xa1dc('0x22')];});}});}else{logger[_0xa1dc('0xc')](_0xa1dc('0x1f'));return request({'uri':util[_0xa1dc('0x19')](_0xa1dc('0x20'),_0x20e5b0['remoteUri'])})[_0xa1dc('0x14')](function(_0xf3ee4f){logger[_0xa1dc('0xc')](_0xa1dc('0x21'));return _0xf3ee4f['user'];});}}function getEndUser(_0x4b1962,_0x40585c,_0x1e4072){logger[_0xa1dc('0xc')](_0xa1dc('0x23'),_0x1e4072);return request({'uri':util[_0xa1dc('0x19')](_0xa1dc('0x1a'),_0x4b1962[_0xa1dc('0xe')]),'qs':{'query':util[_0xa1dc('0x19')](_0xa1dc('0x24'),_0x1e4072)}})[_0xa1dc('0x14')](function(_0x5abfc6){var _0x1e4d1c;if(_0x5abfc6['results']['length']){_0x5abfc6[_0xa1dc('0x1e')]=_['filter'](_0x5abfc6[_0xa1dc('0x1e')],{'suspended':![],'role':_0xa1dc('0x25')});if(_0x5abfc6[_0xa1dc('0x1e')][_0xa1dc('0x26')]){_0x1e4d1c=_[_0xa1dc('0x27')](_0x5abfc6[_0xa1dc('0x1e')]);}}if(_0x1e4d1c){logger[_0xa1dc('0xc')]('Enduser\x20found!');return _0x1e4d1c;}else{logger[_0xa1dc('0xc')](_0xa1dc('0x28'));return request({'uri':util[_0xa1dc('0x19')](_0xa1dc('0x29'),_0x4b1962[_0xa1dc('0xe')]),'method':'POST','body':{'user':{'role':_0xa1dc('0x25'),'name':util['format'](_0xa1dc('0x2a'),_0x40585c||_0x1e4072),'phone':_0x1e4072}}})['then'](function(_0x3a2943){logger[_0xa1dc('0xc')]('Enduser\x20created.');return _0x3a2943[_0xa1dc('0x22')];});}});}function getAuth(_0x1bfb73){var _0x210754;if(_0x1bfb73[_0xa1dc('0x2b')]===_0xa1dc('0x2c')){_0x210754=util['format']('%s:%s',_0x1bfb73['username'],_0x1bfb73[_0xa1dc('0x2c')]);}else if(_0x1bfb73[_0xa1dc('0x2b')]===_0xa1dc('0x2d')){_0x210754=util[_0xa1dc('0x19')](_0xa1dc('0x2e'),_0x1bfb73['username'],_0x1bfb73[_0xa1dc('0x2d')]);}return util[_0xa1dc('0x19')](_0xa1dc('0x2f'),new Buffer(_0x210754)['toString'](_0xa1dc('0x30')));}function request(_0x30cd00){logger[_0xa1dc('0x31')](_0xa1dc('0x32'),JSON['stringify'](_0x30cd00));return rp(_[_0xa1dc('0x9')](_0x30cd00,{'method':_0xa1dc('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x2784b0,_0x1e6794){var _0x4544e0=[];if(_0x2784b0&&_0x2784b0['length']>0x0){_0x4544e0=_[_0xa1dc('0x34')](_0x2784b0,_0x1e6794);}return _0x4544e0;}function getCustomFields(_0x1b79d0,_0x597034){var _0x3fa60a=[];var _0x4f48bf={'custom_fields':[]};if(_0x1b79d0[_0xa1dc('0x26')]>0x0){_[_0xa1dc('0x35')](_0x1b79d0,function(_0x37605a){if(_[_0xa1dc('0x36')]([_0xa1dc('0x37'),_0xa1dc('0x38')],_0x37605a[_0xa1dc('0x39')])&&_0x37605a[_0xa1dc('0x3a')]&&!_0x37605a[_0xa1dc('0x3b')]){_0x4f48bf[_0x37605a[_0xa1dc('0x3a')]['toLowerCase']()]=_0x37605a['content'][_0xa1dc('0x3c')]();}else if(_['includes'](['string','picklist'],_0x37605a['type'])&&_0x37605a[_0xa1dc('0x3d')]&&_0x37605a[_0xa1dc('0x3b')]){_0x4f48bf['custom_fields'][_0xa1dc('0x3e')]({'id':_0x37605a[_0xa1dc('0x3d')],'value':_0x37605a['content']['toString']()});}else if(_0x37605a[_0xa1dc('0x39')]==='variable'&&_0x37605a[_0xa1dc('0x3f')]&&_0x37605a[_0xa1dc('0x3d')]&&_0x37605a['customField']){_0x597034[_0x37605a[_0xa1dc('0x3f')]]&&_0x4f48bf[_0xa1dc('0x40')]['push']({'id':_0x37605a[_0xa1dc('0x3d')],'value':_0x597034[_0x37605a['variableName']][_0xa1dc('0x3c')]()});}else if(_0x37605a[_0xa1dc('0x39')]===_0xa1dc('0x41')&&_0x37605a[_0xa1dc('0x42')]&&_0x37605a[_0xa1dc('0x42')]['name']&&_0x37605a[_0xa1dc('0x3d')]&&_0x37605a[_0xa1dc('0x3b')]){_0x597034[_0x37605a['Variable'][_0xa1dc('0x43')][_0xa1dc('0x44')]()]&&_0x4f48bf[_0xa1dc('0x40')][_0xa1dc('0x3e')]({'id':_0x37605a[_0xa1dc('0x3d')],'value':_0x597034[_0x37605a['Variable'][_0xa1dc('0x43')][_0xa1dc('0x44')]()]['toString']()});}});}return _0x4f48bf;}exports['queue']=function(_0x4739e3,_0x170a77,_0x4eeeac,_0x3f0f12,_0x4f94da,_0x42ce30){var _0x49958b,_0x39afa7;_0x42ce30[_0xa1dc('0xe')]=intUtil[_0xa1dc('0x45')](_0x42ce30[_0xa1dc('0xe')]);_0x42ce30['serverUrl']=intUtil[_0xa1dc('0x45')](_0x42ce30['serverUrl']);if(_0x4f94da&&_0x4f94da[_0xa1dc('0x46')]){logger[_0xa1dc('0xc')](_0xa1dc('0x47'),_0xa1dc('0x48'));_0x170a77[_0xa1dc('0x49')]=util['format'](_0xa1dc('0x4a'),_0x42ce30[_0xa1dc('0x4b')],_0x170a77[_0xa1dc('0x4c')],md5(_0x170a77[_0xa1dc('0x4c')]));}else{_0x170a77[_0xa1dc('0x49')]='';}headers[_0xa1dc('0x4d')]=getAuth(_0x42ce30);return getUser(_0x42ce30,_0x3f0f12[_0xa1dc('0x4e')])['then'](function(_0x4bd054){_0x49958b=_0x4bd054;logger[_0xa1dc('0xc')](_0xa1dc('0x4f'),_0x49958b['id']);return getEndUser(_0x42ce30,_0x170a77['calleridname'],_0x170a77['calleridnum']);})[_0xa1dc('0x14')](function(_0x5a94fd){_0x39afa7=_0x5a94fd;logger['info'](_0xa1dc('0x50'),_0x39afa7['id']);return getTicket(_0x42ce30,_0x49958b,_0x39afa7,_0x4eeeac,_0x170a77);})[_0xa1dc('0x14')](function(_0x542b92){if(_0x542b92){logger[_0xa1dc('0xc')](_0xa1dc('0x51'),_0x542b92['id']);switch(_0x42ce30[_0xa1dc('0x39')]){case _0xa1dc('0x52'):logger[_0xa1dc('0xc')](_0xa1dc('0x47'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format'](_0xa1dc('0x53'),_0x42ce30['remoteUri'],_0x49958b['id'],_0x542b92['id']),'method':'POST'});case _0xa1dc('0x54'):logger[_0xa1dc('0xc')](_0xa1dc('0x47'),_0xa1dc('0x55'));emit(util[_0xa1dc('0x19')](_0xa1dc('0x56'),_0x3f0f12[_0xa1dc('0x43')]),_0xa1dc('0x57'),{'uri':util[_0xa1dc('0x19')](_0xa1dc('0x58'),_0x42ce30[_0xa1dc('0xe')][_0xa1dc('0x59')]('/api/v2',''),_0x542b92['id'])});break;default:logger[_0xa1dc('0x5a')](_0xa1dc('0x47'),_0xa1dc('0x5b'));}}})['catch'](function(_0x25e9a9){logger[_0xa1dc('0x5a')](_0xa1dc('0x5c'),util[_0xa1dc('0x5d')](_0x25e9a9,{'showHidden':!![],'depth':null}));});};exports[_0xa1dc('0x5e')]=function(_0x56862c,_0x5759ad,_0x50da9e,_0xf9af64,_0xe6a5c5,_0x4b5264,_0x377264){var _0x5474a2,_0x4854fe;_0x4b5264[_0xa1dc('0xe')]=intUtil['stripTrailingSlash'](_0x4b5264[_0xa1dc('0xe')]);_0x4b5264[_0xa1dc('0x4b')]=intUtil['stripTrailingSlash'](_0x4b5264[_0xa1dc('0x4b')]);if(_0x377264&&_0x377264['recordingFormat']&&_0x377264[_0xa1dc('0x5f')]!==_0xa1dc('0x60')){logger[_0xa1dc('0xc')](_0xa1dc('0x61'),_0xa1dc('0x48'));_0x5759ad['recordingURL']=util[_0xa1dc('0x19')](_0xa1dc('0x4a'),_0x4b5264[_0xa1dc('0x4b')],_0x5759ad[_0xa1dc('0x4c')],md5(_0x5759ad[_0xa1dc('0x4c')]));}headers[_0xa1dc('0x4d')]=getAuth(_0x4b5264);return getUser(_0x4b5264,_0xf9af64['email'])['then'](function(_0x31b6e4){_0x5474a2=_0x31b6e4;logger[_0xa1dc('0xc')](_0xa1dc('0x4f'),_0x5474a2['id']);return getEndUser(_0x4b5264,_0x5759ad['destcalleridname'],_0x5759ad[_0xa1dc('0x62')]);})[_0xa1dc('0x14')](function(_0x3bfd8c){_0x4854fe=_0x3bfd8c;logger[_0xa1dc('0xc')](_0xa1dc('0x50'),_0x4854fe['id']);return getTicket(_0x4b5264,_0x5474a2,_0x4854fe,_0x50da9e,_0x5759ad);})[_0xa1dc('0x14')](function(_0x471f44){if(_0x471f44){logger['info'](_0xa1dc('0x51'),_0x471f44['id']);switch(_0x4b5264[_0xa1dc('0x39')]){case _0xa1dc('0x52'):logger[_0xa1dc('0xc')](_0xa1dc('0x61'),_0xa1dc('0x63'));return request({'uri':util[_0xa1dc('0x19')](_0xa1dc('0x53'),_0x4b5264[_0xa1dc('0xe')],_0x5474a2['id'],_0x471f44['id']),'method':_0xa1dc('0xf')});case'newTab':logger[_0xa1dc('0xc')]('[OUTBOUND]',_0xa1dc('0x55'));emit(util[_0xa1dc('0x19')](_0xa1dc('0x56'),_0xf9af64['name']),'trigger:browser:url',{'uri':util[_0xa1dc('0x19')](_0xa1dc('0x58'),_0x4b5264['remoteUri'][_0xa1dc('0x59')](_0xa1dc('0x64'),''),_0x471f44['id'])});break;default:logger[_0xa1dc('0x5a')]('[OUTBOUND]',_0xa1dc('0x5b'));}}})[_0xa1dc('0x65')](function(_0x7a5910){logger[_0xa1dc('0x5a')](_0xa1dc('0x66'),util['inspect'](_0x7a5910,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x2eb8ef,_0x2144d1,_0x5c5284,_0x168dc8,_0x1d0796,_0x5e1656){var _0x302733,_0x1e37b2;_0x5e1656[_0xa1dc('0xe')]=intUtil[_0xa1dc('0x45')](_0x5e1656['remoteUri']);_0x5e1656[_0xa1dc('0x4b')]=intUtil[_0xa1dc('0x45')](_0x5e1656['serverUrl']);if(_0x1d0796&&_0x1d0796[_0xa1dc('0x46')]){logger['info']('['+_0x2144d1[_0xa1dc('0x67')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x2144d1[_0xa1dc('0x49')]=util[_0xa1dc('0x19')](_0xa1dc('0x4a'),_0x5e1656[_0xa1dc('0x4b')],_0x2144d1[_0xa1dc('0x4c')],md5(_0x2144d1['uniqueid']));}else{_0x2144d1[_0xa1dc('0x49')]='';}headers['Authorization']=getAuth(_0x5e1656);return getUser(_0x5e1656)[_0xa1dc('0x14')](function(_0x508955){_0x302733=_0x508955;logger[_0xa1dc('0xc')](_0xa1dc('0x4f'),_0x302733['id']);return getEndUser(_0x5e1656,_0x2144d1['calleridname'],_0x2144d1['calleridnum']);})[_0xa1dc('0x14')](function(_0x449154){_0x1e37b2=_0x449154;logger[_0xa1dc('0xc')](_0xa1dc('0x50'),_0x1e37b2['id']);return getTicket(_0x5e1656,_0x302733,_0x1e37b2,_0x5c5284,_0x2144d1);})[_0xa1dc('0x14')](function(_0x5f2fff){if(_0x5f2fff){logger[_0xa1dc('0xc')]('The\x20Ticket\x20ID\x20is:',_0x5f2fff['id']);}})[_0xa1dc('0x65')](function(_0x34f86f){logger[_0xa1dc('0x5a')]('['+_0x2144d1[_0xa1dc('0x67')][_0xa1dc('0x68')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0xa1dc('0x5d')](_0x34f86f,{'showHidden':!![],'depth':null}));});};