Built motion from commit 10af8726.|2.6.34
[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 _0x35e5=['Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','destcalleridname','destcalleridnum','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','monitor_format','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','util','ioredis','./util','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','format','%s/tickets.json','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','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','type:user\x20role:end-user\x20phone:%s','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','authType','password','%s:%s','username','%s/token:%s','token','toString','base64','debug','[HTTP]','stringify','GET','length','map','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','variable','variableName','push','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','replace','error'];(function(_0x3b1b23,_0x21bccd){var _0x1efc85=function(_0x102a95){while(--_0x102a95){_0x3b1b23['push'](_0x3b1b23['shift']());}};_0x1efc85(++_0x21bccd);}(_0x35e5,0xf4));var _0x535e=function(_0x2adf48,_0x2ecb51){_0x2adf48=_0x2adf48-0x0;var _0x7d060f=_0x35e5[_0x2adf48];return _0x7d060f;};'use strict';var _=require(_0x535e('0x0'));var rp=require('request-promise');var md5=require(_0x535e('0x1'));var util=require(_0x535e('0x2'));var Redis=require(_0x535e('0x3'));var intUtil=require(_0x535e('0x4'));var config=require('../../../../config/environment');var logger=require(_0x535e('0x5'))(_0x535e('0x6'));config[_0x535e('0x7')]=_[_0x535e('0x8')](config[_0x535e('0x7')],{'host':_0x535e('0x9'),'port':0x18eb});var io=require(_0x535e('0xa'))(new Redis(config[_0x535e('0x7')]));function emit(_0x43eae8,_0x2ce0c2,_0xac16cd){io['to'](_0x43eae8)['emit'](_0x2ce0c2,_0xac16cd);}var headers={'Content-Type':_0x535e('0xb'),'Accept':_0x535e('0xb')};function getTicket(_0x4ed2d5,_0x48d39b,_0x5e3d9f,_0x2bec5a,_0x1e0af5){logger[_0x535e('0xc')]('Creating\x20new\x20ticket...');return request({'uri':util[_0x535e('0xd')](_0x535e('0xe'),_0x4ed2d5[_0x535e('0xf')]),'method':_0x535e('0x10'),'body':{'ticket':_['merge']({'requester_id':_0x5e3d9f['id'],'submitter_id':_0x48d39b?_0x48d39b['id']:undefined,'assignee_id':_0x48d39b?_0x48d39b['id']:undefined,'tags':getTags(_0x2bec5a[_0x535e('0x11')],_0x535e('0x12')),'subject':intUtil[_0x535e('0x13')](_0x2bec5a[_0x535e('0x14')],_0x1e0af5,'\x20'),'description':intUtil[_0x535e('0x13')](_0x2bec5a[_0x535e('0x15')],_0x1e0af5,'\x0a'),'comment':{'public':![],'body':intUtil[_0x535e('0x13')](_0x2bec5a['Descriptions'],_0x1e0af5,'\x0a')}},getCustomFields(_0x2bec5a[_0x535e('0x16')],_0x1e0af5))}})[_0x535e('0x17')](function(_0x3bf666){logger['info']('Ticket\x20created!');return _0x3bf666[_0x535e('0x18')];});}function getUser(_0x508db2,_0x3cf026){if(intUtil[_0x535e('0x19')](_0x3cf026)){logger[_0x535e('0xc')](_0x535e('0x1a'),_0x3cf026);return request({'uri':util['format'](_0x535e('0x1b'),_0x508db2['remoteUri']),'qs':{'query':util[_0x535e('0xd')](_0x535e('0x1c'),_0x3cf026)}})[_0x535e('0x17')](function(_0x29d0d2){if(_0x29d0d2[_0x535e('0x1d')]){logger[_0x535e('0xc')](_0x535e('0x1e'));return _[_0x535e('0x1f')](_0x29d0d2[_0x535e('0x20')],{'email':_0x3cf026,'role':_0x535e('0x21')});}else{logger[_0x535e('0xc')](_0x535e('0x22'));return request({'uri':util[_0x535e('0xd')](_0x535e('0x23'),_0x508db2[_0x535e('0xf')])})[_0x535e('0x17')](function(_0x1e563d){logger[_0x535e('0xc')](_0x535e('0x24'));return _0x1e563d[_0x535e('0x25')];});}});}else{logger[_0x535e('0xc')](_0x535e('0x22'));return request({'uri':util[_0x535e('0xd')](_0x535e('0x23'),_0x508db2[_0x535e('0xf')])})['then'](function(_0x2716be){logger['info'](_0x535e('0x24'));return _0x2716be['user'];});}}function getEndUser(_0x5496de,_0x43d0a7,_0x54e2f8){logger[_0x535e('0xc')](_0x535e('0x26'),_0x54e2f8);return request({'uri':util[_0x535e('0xd')](_0x535e('0x1b'),_0x5496de[_0x535e('0xf')]),'qs':{'query':util[_0x535e('0xd')](_0x535e('0x27'),_0x54e2f8)}})[_0x535e('0x17')](function(_0x1f7386){var _0x226f61;if(_0x1f7386[_0x535e('0x20')]['length']){_0x1f7386[_0x535e('0x20')]=_[_0x535e('0x28')](_0x1f7386[_0x535e('0x20')],{'suspended':![],'role':_0x535e('0x29')});if(_0x1f7386[_0x535e('0x20')]['length']){_0x226f61=_['first'](_0x1f7386[_0x535e('0x20')]);}}if(_0x226f61){logger['info'](_0x535e('0x2a'));return _0x226f61;}else{logger[_0x535e('0xc')](_0x535e('0x2b'));return request({'uri':util[_0x535e('0xd')](_0x535e('0x2c'),_0x5496de[_0x535e('0xf')]),'method':'POST','body':{'user':{'role':_0x535e('0x29'),'name':util[_0x535e('0xd')](_0x535e('0x2d'),_0x43d0a7||_0x54e2f8),'phone':_0x54e2f8}}})[_0x535e('0x17')](function(_0x18300a){logger[_0x535e('0xc')]('Enduser\x20created.');return _0x18300a['user'];});}});}function getAuth(_0x457a34){var _0x178a1d;if(_0x457a34[_0x535e('0x2e')]===_0x535e('0x2f')){_0x178a1d=util[_0x535e('0xd')](_0x535e('0x30'),_0x457a34[_0x535e('0x31')],_0x457a34['password']);}else if(_0x457a34[_0x535e('0x2e')]==='token'){_0x178a1d=util[_0x535e('0xd')](_0x535e('0x32'),_0x457a34[_0x535e('0x31')],_0x457a34[_0x535e('0x33')]);}return util[_0x535e('0xd')]('Basic\x20%s',new Buffer(_0x178a1d)[_0x535e('0x34')](_0x535e('0x35')));}function request(_0x9a5869){logger[_0x535e('0x36')](_0x535e('0x37'),JSON[_0x535e('0x38')](_0x9a5869));return rp(_[_0x535e('0x8')](_0x9a5869,{'method':_0x535e('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x549197,_0x34773e){var _0x3c3707=[];if(_0x549197&&_0x549197[_0x535e('0x3a')]>0x0){_0x3c3707=_[_0x535e('0x3b')](_0x549197,_0x34773e);}return _0x3c3707;}function getCustomFields(_0x2dceef,_0x2acc47){var _0xbea6ec=[];var _0x592654={'custom_fields':[]};if(_0x2dceef['length']>0x0){_['forEach'](_0x2dceef,function(_0x534346){if(_[_0x535e('0x3c')]([_0x535e('0x3d'),_0x535e('0x3e')],_0x534346[_0x535e('0x3f')])&&_0x534346[_0x535e('0x40')]&&!_0x534346[_0x535e('0x41')]){_0x592654[_0x534346[_0x535e('0x40')][_0x535e('0x42')]()]=_0x534346[_0x535e('0x43')]['toString']();}else if(_['includes']([_0x535e('0x3d'),_0x535e('0x3e')],_0x534346['type'])&&_0x534346[_0x535e('0x44')]&&_0x534346[_0x535e('0x41')]){_0x592654[_0x535e('0x45')]['push']({'id':_0x534346[_0x535e('0x44')],'value':_0x534346[_0x535e('0x43')][_0x535e('0x34')]()});}else if(_0x534346['type']===_0x535e('0x46')&&_0x534346[_0x535e('0x47')]&&_0x534346[_0x535e('0x44')]&&_0x534346[_0x535e('0x41')]){_0x2acc47[_0x534346[_0x535e('0x47')]]&&_0x592654[_0x535e('0x45')][_0x535e('0x48')]({'id':_0x534346[_0x535e('0x44')],'value':_0x2acc47[_0x534346['variableName']][_0x535e('0x34')]()});}else if(_0x534346[_0x535e('0x3f')]==='customVariable'&&_0x534346[_0x535e('0x49')]&&_0x534346[_0x535e('0x49')][_0x535e('0x12')]&&_0x534346[_0x535e('0x44')]&&_0x534346[_0x535e('0x41')]){_0x2acc47[_0x534346[_0x535e('0x49')][_0x535e('0x12')][_0x535e('0x42')]()]&&_0x592654[_0x535e('0x45')][_0x535e('0x48')]({'id':_0x534346[_0x535e('0x44')],'value':_0x2acc47[_0x534346['Variable'][_0x535e('0x12')]['toLowerCase']()][_0x535e('0x34')]()});}});}return _0x592654;}exports[_0x535e('0x4a')]=function(_0x3a2eba,_0x24e97f,_0x3aac49,_0x1a37f4,_0x4c4713,_0x2cf00c){var _0x47662b,_0x2270a1;_0x2cf00c[_0x535e('0xf')]=intUtil[_0x535e('0x4b')](_0x2cf00c[_0x535e('0xf')]);_0x2cf00c[_0x535e('0x4c')]=intUtil['stripTrailingSlash'](_0x2cf00c['serverUrl']);if(_0x4c4713&&_0x4c4713['monitor_format']){logger[_0x535e('0xc')](_0x535e('0x4d'),_0x535e('0x4e'));_0x24e97f[_0x535e('0x4f')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2cf00c[_0x535e('0x4c')],_0x24e97f[_0x535e('0x50')],md5(_0x24e97f[_0x535e('0x50')]));}else{_0x24e97f[_0x535e('0x4f')]='';}headers['Authorization']=getAuth(_0x2cf00c);return getUser(_0x2cf00c,_0x1a37f4['email'])[_0x535e('0x17')](function(_0x100a8b){_0x47662b=_0x100a8b;logger[_0x535e('0xc')](_0x535e('0x51'),_0x47662b['id']);return getEndUser(_0x2cf00c,_0x24e97f['calleridname'],_0x24e97f[_0x535e('0x52')]);})[_0x535e('0x17')](function(_0x213a48){_0x2270a1=_0x213a48;logger['info'](_0x535e('0x53'),_0x2270a1['id']);return getTicket(_0x2cf00c,_0x47662b,_0x2270a1,_0x3aac49,_0x24e97f);})[_0x535e('0x17')](function(_0x408161){if(_0x408161){logger[_0x535e('0xc')](_0x535e('0x54'),_0x408161['id']);switch(_0x2cf00c[_0x535e('0x3f')]){case _0x535e('0x55'):logger['info']('[QUEUE]',_0x535e('0x56'));return request({'uri':util[_0x535e('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x2cf00c[_0x535e('0xf')],_0x47662b['id'],_0x408161['id']),'method':_0x535e('0x10')});case _0x535e('0x57'):logger['info'](_0x535e('0x4d'),_0x535e('0x58'));emit(util[_0x535e('0xd')]('user:%s',_0x1a37f4['name']),'trigger:browser:url',{'uri':util[_0x535e('0xd')](_0x535e('0x59'),_0x2cf00c[_0x535e('0xf')][_0x535e('0x5a')]('/api/v2',''),_0x408161['id'])});break;default:logger[_0x535e('0x5b')](_0x535e('0x4d'),_0x535e('0x5c'));}}})[_0x535e('0x5d')](function(_0x319ba9){logger[_0x535e('0x5b')](_0x535e('0x5e'),util[_0x535e('0x5f')](_0x319ba9,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x2b18d7,_0x3c7b6d,_0x56761c,_0x32155d,_0x592d53,_0x2b82e4,_0x370362){var _0x8f3a10,_0x3a422d;_0x2b82e4[_0x535e('0xf')]=intUtil[_0x535e('0x4b')](_0x2b82e4['remoteUri']);_0x2b82e4['serverUrl']=intUtil['stripTrailingSlash'](_0x2b82e4[_0x535e('0x4c')]);if(_0x370362&&_0x370362[_0x535e('0x60')]&&_0x370362[_0x535e('0x60')]!==_0x535e('0x61')){logger[_0x535e('0xc')](_0x535e('0x62'),_0x535e('0x4e'));_0x3c7b6d[_0x535e('0x4f')]=util['format'](_0x535e('0x63'),_0x2b82e4[_0x535e('0x4c')],_0x3c7b6d[_0x535e('0x50')],md5(_0x3c7b6d['uniqueid']));}headers['Authorization']=getAuth(_0x2b82e4);return getUser(_0x2b82e4,_0x32155d[_0x535e('0x64')])[_0x535e('0x17')](function(_0x4b4eb2){_0x8f3a10=_0x4b4eb2;logger[_0x535e('0xc')](_0x535e('0x51'),_0x8f3a10['id']);return getEndUser(_0x2b82e4,_0x3c7b6d[_0x535e('0x65')],_0x3c7b6d[_0x535e('0x66')]);})[_0x535e('0x17')](function(_0x91e7ce){_0x3a422d=_0x91e7ce;logger[_0x535e('0xc')]('The\x20Enduser\x20ID\x20is:',_0x3a422d['id']);return getTicket(_0x2b82e4,_0x8f3a10,_0x3a422d,_0x56761c,_0x3c7b6d);})[_0x535e('0x17')](function(_0x2f5bfe){if(_0x2f5bfe){logger['info']('The\x20Ticket\x20ID\x20is:',_0x2f5bfe['id']);switch(_0x2b82e4[_0x535e('0x3f')]){case'integrationTab':logger[_0x535e('0xc')]('[OUTBOUND]',_0x535e('0x56'));return request({'uri':util[_0x535e('0xd')](_0x535e('0x67'),_0x2b82e4[_0x535e('0xf')],_0x8f3a10['id'],_0x2f5bfe['id']),'method':_0x535e('0x10')});case _0x535e('0x57'):logger[_0x535e('0xc')](_0x535e('0x62'),_0x535e('0x58'));emit(util[_0x535e('0xd')](_0x535e('0x68'),_0x32155d['name']),'trigger:browser:url',{'uri':util['format'](_0x535e('0x59'),_0x2b82e4[_0x535e('0xf')][_0x535e('0x5a')]('/api/v2',''),_0x2f5bfe['id'])});break;default:logger['error'](_0x535e('0x62'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x535e('0x5d')](function(_0x5a3393){logger[_0x535e('0x5b')](_0x535e('0x69'),util['inspect'](_0x5a3393,{'showHidden':!![],'depth':null}));});};exports[_0x535e('0x6a')]=function(_0x470f18,_0xc252b0,_0x5a84da,_0x4d0319,_0x57e0ac,_0x5b064b){var _0x2a0f31,_0xffde1e;_0x5b064b[_0x535e('0xf')]=intUtil[_0x535e('0x4b')](_0x5b064b[_0x535e('0xf')]);_0x5b064b[_0x535e('0x4c')]=intUtil['stripTrailingSlash'](_0x5b064b[_0x535e('0x4c')]);if(_0x57e0ac&&_0x57e0ac[_0x535e('0x6b')]){logger[_0x535e('0xc')]('['+_0xc252b0[_0x535e('0x6c')][_0x535e('0x6d')]()+']','Recording\x20is\x20enabled!');_0xc252b0[_0x535e('0x4f')]=util[_0x535e('0xd')](_0x535e('0x63'),_0x5b064b[_0x535e('0x4c')],_0xc252b0[_0x535e('0x50')],md5(_0xc252b0[_0x535e('0x50')]));}else{_0xc252b0[_0x535e('0x4f')]='';}headers['Authorization']=getAuth(_0x5b064b);return getUser(_0x5b064b)[_0x535e('0x17')](function(_0x1b790b){_0x2a0f31=_0x1b790b;logger[_0x535e('0xc')]('The\x20User\x20ID\x20is:',_0x2a0f31['id']);return getEndUser(_0x5b064b,_0xc252b0[_0x535e('0x6e')],_0xc252b0['calleridnum']);})['then'](function(_0x39e16f){_0xffde1e=_0x39e16f;logger[_0x535e('0xc')](_0x535e('0x53'),_0xffde1e['id']);return getTicket(_0x5b064b,_0x2a0f31,_0xffde1e,_0x5a84da,_0xc252b0);})[_0x535e('0x17')](function(_0x160938){if(_0x160938){logger[_0x535e('0xc')](_0x535e('0x54'),_0x160938['id']);}})[_0x535e('0x5d')](function(_0x7b350d){logger['error']('['+_0xc252b0[_0x535e('0x6c')][_0x535e('0x6d')]()+']'+_0x535e('0x6f'),util[_0x535e('0x5f')](_0x7b350d,{'showHidden':!![],'depth':null}));});};