Built motion from commit 13c3002c.|2.6.9
[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 _0x3a1d=['ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','emit','application/json','Creating\x20new\x20ticket...','format','remoteUri','POST','merge','getString','Subjects','Descriptions','Fields','info','Ticket\x20created!','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','then','count','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','%s/users.json','Enduser\x20created.','authType','password','%s:%s','username','token','toString','[HTTP]','stringify','defaults','GET','map','includes','string','picklist','type','nameField','toLowerCase','customField','custom_fields','push','idField','content','variable','variableName','customVariable','Variable','name','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','none','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','newTab','[OUTBOUND]','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util'];(function(_0x3625d6,_0x57f4c4){var _0x8df4d8=function(_0x7ba668){while(--_0x7ba668){_0x3625d6['push'](_0x3625d6['shift']());}};_0x8df4d8(++_0x57f4c4);}(_0x3a1d,0xd6));var _0xd3a1=function(_0x450076,_0x10983b){_0x450076=_0x450076-0x0;var _0x2029cc=_0x3a1d[_0x450076];return _0x2029cc;};'use strict';var _=require(_0xd3a1('0x0'));var rp=require(_0xd3a1('0x1'));var md5=require(_0xd3a1('0x2'));var util=require(_0xd3a1('0x3'));var Redis=require(_0xd3a1('0x4'));var intUtil=require(_0xd3a1('0x5'));var config=require(_0xd3a1('0x6'));var logger=require(_0xd3a1('0x7'))(_0xd3a1('0x8'));config[_0xd3a1('0x9')]=_['defaults'](config[_0xd3a1('0x9')],{'host':_0xd3a1('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x25d8d1,_0x13bf5b,_0x9b1781){io['to'](_0x25d8d1)[_0xd3a1('0xb')](_0x13bf5b,_0x9b1781);}var headers={'Content-Type':_0xd3a1('0xc'),'Accept':_0xd3a1('0xc')};function getTicket(_0x1f34eb,_0x21b0a7,_0x78369b,_0x39e4ba,_0x365875){logger['info'](_0xd3a1('0xd'));return request({'uri':util[_0xd3a1('0xe')]('%s/tickets.json',_0x1f34eb[_0xd3a1('0xf')]),'method':_0xd3a1('0x10'),'body':{'ticket':_[_0xd3a1('0x11')]({'requester_id':_0x78369b['id'],'submitter_id':_0x21b0a7?_0x21b0a7['id']:undefined,'assignee_id':_0x21b0a7?_0x21b0a7['id']:undefined,'tags':getTags(_0x39e4ba['Tags'],'name'),'subject':intUtil[_0xd3a1('0x12')](_0x39e4ba[_0xd3a1('0x13')],_0x365875,'\x20'),'description':intUtil['getString'](_0x39e4ba[_0xd3a1('0x14')],_0x365875,'\x0a'),'comment':{'public':![],'body':intUtil[_0xd3a1('0x12')](_0x39e4ba[_0xd3a1('0x14')],_0x365875,'\x0a')}},getCustomFields(_0x39e4ba[_0xd3a1('0x15')],_0x365875))}})['then'](function(_0xcf0419){logger[_0xd3a1('0x16')](_0xd3a1('0x17'));return _0xcf0419[_0xd3a1('0x18')];});}function getUser(_0x154ba8,_0x3857ba){if(intUtil[_0xd3a1('0x19')](_0x3857ba)){logger['info']('Getting\x20agent\x20with\x20email',_0x3857ba);return request({'uri':util[_0xd3a1('0xe')](_0xd3a1('0x1a'),_0x154ba8['remoteUri']),'qs':{'query':util[_0xd3a1('0xe')](_0xd3a1('0x1b'),_0x3857ba)}})[_0xd3a1('0x1c')](function(_0x1d9d06){if(_0x1d9d06[_0xd3a1('0x1d')]){logger[_0xd3a1('0x16')]('Agent\x20found!');return _[_0xd3a1('0x1e')](_0x1d9d06[_0xd3a1('0x1f')],{'email':_0x3857ba,'role':_0xd3a1('0x20')});}else{logger['info'](_0xd3a1('0x21'));return request({'uri':util[_0xd3a1('0xe')](_0xd3a1('0x22'),_0x154ba8[_0xd3a1('0xf')])})[_0xd3a1('0x1c')](function(_0x528040){logger['info'](_0xd3a1('0x23'));return _0x528040['user'];});}});}else{logger['info'](_0xd3a1('0x21'));return request({'uri':util[_0xd3a1('0xe')](_0xd3a1('0x22'),_0x154ba8[_0xd3a1('0xf')])})[_0xd3a1('0x1c')](function(_0x4b8e39){logger['info'](_0xd3a1('0x23'));return _0x4b8e39[_0xd3a1('0x24')];});}}function getEndUser(_0x4b0fe9,_0x25703e,_0x50c8d5){logger[_0xd3a1('0x16')]('Searching\x20enduser\x20with\x20phone',_0x50c8d5);return request({'uri':util[_0xd3a1('0xe')](_0xd3a1('0x1a'),_0x4b0fe9['remoteUri']),'qs':{'query':util['format'](_0xd3a1('0x25'),_0x50c8d5)}})[_0xd3a1('0x1c')](function(_0x219d49){var _0x7d0321;if(_0x219d49[_0xd3a1('0x1f')][_0xd3a1('0x26')]){_0x219d49['results']=_[_0xd3a1('0x27')](_0x219d49[_0xd3a1('0x1f')],{'suspended':![],'role':_0xd3a1('0x28')});if(_0x219d49[_0xd3a1('0x1f')][_0xd3a1('0x26')]){_0x7d0321=_[_0xd3a1('0x29')](_0x219d49[_0xd3a1('0x1f')]);}}if(_0x7d0321){logger[_0xd3a1('0x16')](_0xd3a1('0x2a'));return _0x7d0321;}else{logger[_0xd3a1('0x16')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xd3a1('0xe')](_0xd3a1('0x2b'),_0x4b0fe9[_0xd3a1('0xf')]),'method':_0xd3a1('0x10'),'body':{'user':{'role':_0xd3a1('0x28'),'name':util[_0xd3a1('0xe')]('Caller\x20-\x20%s',_0x25703e||_0x50c8d5),'phone':_0x50c8d5}}})[_0xd3a1('0x1c')](function(_0x1eff36){logger[_0xd3a1('0x16')](_0xd3a1('0x2c'));return _0x1eff36['user'];});}});}function getAuth(_0x307c4a){var _0x1cdb29;if(_0x307c4a[_0xd3a1('0x2d')]===_0xd3a1('0x2e')){_0x1cdb29=util[_0xd3a1('0xe')](_0xd3a1('0x2f'),_0x307c4a[_0xd3a1('0x30')],_0x307c4a[_0xd3a1('0x2e')]);}else if(_0x307c4a[_0xd3a1('0x2d')]===_0xd3a1('0x31')){_0x1cdb29=util[_0xd3a1('0xe')]('%s/token:%s',_0x307c4a[_0xd3a1('0x30')],_0x307c4a['token']);}return util['format']('Basic\x20%s',new Buffer(_0x1cdb29)[_0xd3a1('0x32')]('base64'));}function request(_0x30c972){logger['debug'](_0xd3a1('0x33'),JSON[_0xd3a1('0x34')](_0x30c972));return rp(_[_0xd3a1('0x35')](_0x30c972,{'method':_0xd3a1('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x26456d,_0x26d401){var _0x1cda67=[];if(_0x26456d&&_0x26456d['length']>0x0){_0x1cda67=_[_0xd3a1('0x37')](_0x26456d,_0x26d401);}return _0x1cda67;}function getCustomFields(_0x276b9b,_0x4d782e){var _0x554732=[];var _0x179e8d={'custom_fields':[]};if(_0x276b9b['length']>0x0){_['forEach'](_0x276b9b,function(_0x15f0f6){if(_[_0xd3a1('0x38')]([_0xd3a1('0x39'),_0xd3a1('0x3a')],_0x15f0f6[_0xd3a1('0x3b')])&&_0x15f0f6[_0xd3a1('0x3c')]&&!_0x15f0f6['customField']){_0x179e8d[_0x15f0f6['nameField'][_0xd3a1('0x3d')]()]=_0x15f0f6['content']['toString']();}else if(_[_0xd3a1('0x38')]([_0xd3a1('0x39'),_0xd3a1('0x3a')],_0x15f0f6[_0xd3a1('0x3b')])&&_0x15f0f6['idField']&&_0x15f0f6[_0xd3a1('0x3e')]){_0x179e8d[_0xd3a1('0x3f')][_0xd3a1('0x40')]({'id':_0x15f0f6[_0xd3a1('0x41')],'value':_0x15f0f6[_0xd3a1('0x42')][_0xd3a1('0x32')]()});}else if(_0x15f0f6[_0xd3a1('0x3b')]===_0xd3a1('0x43')&&_0x15f0f6[_0xd3a1('0x44')]&&_0x15f0f6[_0xd3a1('0x41')]&&_0x15f0f6[_0xd3a1('0x3e')]){_0x4d782e[_0x15f0f6[_0xd3a1('0x44')]]&&_0x179e8d[_0xd3a1('0x3f')][_0xd3a1('0x40')]({'id':_0x15f0f6['idField'],'value':_0x4d782e[_0x15f0f6[_0xd3a1('0x44')]]['toString']()});}else if(_0x15f0f6[_0xd3a1('0x3b')]===_0xd3a1('0x45')&&_0x15f0f6[_0xd3a1('0x46')]&&_0x15f0f6['Variable'][_0xd3a1('0x47')]&&_0x15f0f6[_0xd3a1('0x41')]&&_0x15f0f6['customField']){_0x4d782e[_0x15f0f6[_0xd3a1('0x46')]['name'][_0xd3a1('0x3d')]()]&&_0x179e8d['custom_fields'][_0xd3a1('0x40')]({'id':_0x15f0f6[_0xd3a1('0x41')],'value':_0x4d782e[_0x15f0f6['Variable']['name'][_0xd3a1('0x3d')]()][_0xd3a1('0x32')]()});}});}return _0x179e8d;}exports[_0xd3a1('0x48')]=function(_0x5f2ef1,_0x57f4ad,_0x48f50c,_0x51224b,_0x239968,_0x2c87a6){var _0x34f581,_0x689169;_0x2c87a6['remoteUri']=intUtil['stripTrailingSlash'](_0x2c87a6[_0xd3a1('0xf')]);_0x2c87a6[_0xd3a1('0x49')]=intUtil[_0xd3a1('0x4a')](_0x2c87a6[_0xd3a1('0x49')]);if(_0x239968&&_0x239968[_0xd3a1('0x4b')]){logger[_0xd3a1('0x16')]('[QUEUE]',_0xd3a1('0x4c'));_0x57f4ad[_0xd3a1('0x4d')]=util[_0xd3a1('0xe')](_0xd3a1('0x4e'),_0x2c87a6[_0xd3a1('0x49')],_0x57f4ad['uniqueid'],md5(_0x57f4ad[_0xd3a1('0x4f')]));}else{_0x57f4ad['recordingURL']='';}headers[_0xd3a1('0x50')]=getAuth(_0x2c87a6);return getUser(_0x2c87a6,_0x51224b[_0xd3a1('0x51')])[_0xd3a1('0x1c')](function(_0x5cf511){_0x34f581=_0x5cf511;logger[_0xd3a1('0x16')]('The\x20User\x20ID\x20is:',_0x34f581['id']);return getEndUser(_0x2c87a6,_0x57f4ad['calleridname'],_0x57f4ad[_0xd3a1('0x52')]);})[_0xd3a1('0x1c')](function(_0x459f05){_0x689169=_0x459f05;logger['info'](_0xd3a1('0x53'),_0x689169['id']);return getTicket(_0x2c87a6,_0x34f581,_0x689169,_0x48f50c,_0x57f4ad);})[_0xd3a1('0x1c')](function(_0x4cef94){if(_0x4cef94){logger[_0xd3a1('0x16')](_0xd3a1('0x54'),_0x4cef94['id']);switch(_0x2c87a6[_0xd3a1('0x3b')]){case _0xd3a1('0x55'):logger[_0xd3a1('0x16')](_0xd3a1('0x56'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xd3a1('0xe')](_0xd3a1('0x57'),_0x2c87a6['remoteUri'],_0x34f581['id'],_0x4cef94['id']),'method':_0xd3a1('0x10')});case'newTab':logger[_0xd3a1('0x16')](_0xd3a1('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd3a1('0xe')](_0xd3a1('0x58'),_0x51224b[_0xd3a1('0x47')]),_0xd3a1('0x59'),{'uri':util[_0xd3a1('0xe')](_0xd3a1('0x5a'),_0x2c87a6[_0xd3a1('0xf')][_0xd3a1('0x5b')](_0xd3a1('0x5c'),''),_0x4cef94['id'])});break;default:logger[_0xd3a1('0x5d')](_0xd3a1('0x56'),_0xd3a1('0x5e'));}}})['catch'](function(_0x338f2a){logger[_0xd3a1('0x5d')](_0xd3a1('0x5f'),util[_0xd3a1('0x60')](_0x338f2a,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x189a0c,_0x4e5d63,_0x529868,_0x2238f3,_0x36aa62,_0x513ebd,_0x47f64d){var _0x7efdb7,_0x1fd557;_0x513ebd['remoteUri']=intUtil['stripTrailingSlash'](_0x513ebd[_0xd3a1('0xf')]);_0x513ebd['serverUrl']=intUtil[_0xd3a1('0x4a')](_0x513ebd[_0xd3a1('0x49')]);if(_0x47f64d&&_0x47f64d['recordingFormat']&&_0x47f64d['recordingFormat']!==_0xd3a1('0x61')){logger[_0xd3a1('0x16')]('[OUTBOUND]',_0xd3a1('0x4c'));_0x4e5d63[_0xd3a1('0x4d')]=util[_0xd3a1('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513ebd[_0xd3a1('0x49')],_0x4e5d63['uniqueid'],md5(_0x4e5d63[_0xd3a1('0x4f')]));}headers['Authorization']=getAuth(_0x513ebd);return getUser(_0x513ebd,_0x2238f3['email'])['then'](function(_0x26be3f){_0x7efdb7=_0x26be3f;logger[_0xd3a1('0x16')](_0xd3a1('0x62'),_0x7efdb7['id']);return getEndUser(_0x513ebd,_0x4e5d63[_0xd3a1('0x63')],_0x4e5d63[_0xd3a1('0x64')]);})['then'](function(_0x57db05){_0x1fd557=_0x57db05;logger[_0xd3a1('0x16')](_0xd3a1('0x53'),_0x1fd557['id']);return getTicket(_0x513ebd,_0x7efdb7,_0x1fd557,_0x529868,_0x4e5d63);})[_0xd3a1('0x1c')](function(_0xc80e56){if(_0xc80e56){logger[_0xd3a1('0x16')](_0xd3a1('0x54'),_0xc80e56['id']);switch(_0x513ebd[_0xd3a1('0x3b')]){case _0xd3a1('0x55'):logger[_0xd3a1('0x16')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xd3a1('0xe')](_0xd3a1('0x57'),_0x513ebd[_0xd3a1('0xf')],_0x7efdb7['id'],_0xc80e56['id']),'method':'POST'});case _0xd3a1('0x65'):logger[_0xd3a1('0x16')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd3a1('0xe')](_0xd3a1('0x58'),_0x2238f3[_0xd3a1('0x47')]),_0xd3a1('0x59'),{'uri':util['format']('%s/agent/tickets/%s',_0x513ebd[_0xd3a1('0xf')][_0xd3a1('0x5b')](_0xd3a1('0x5c'),''),_0xc80e56['id'])});break;default:logger[_0xd3a1('0x5d')](_0xd3a1('0x66'),_0xd3a1('0x5e'));}}})[_0xd3a1('0x67')](function(_0x3fcf45){logger[_0xd3a1('0x5d')](_0xd3a1('0x68'),util[_0xd3a1('0x60')](_0x3fcf45,{'showHidden':!![],'depth':null}));});};exports[_0xd3a1('0x69')]=function(_0x5e61de,_0x3fcc56,_0x47497e,_0x644367,_0x418566,_0x211982){var _0x346324,_0x311307;_0x211982[_0xd3a1('0xf')]=intUtil[_0xd3a1('0x4a')](_0x211982[_0xd3a1('0xf')]);_0x211982[_0xd3a1('0x49')]=intUtil[_0xd3a1('0x4a')](_0x211982[_0xd3a1('0x49')]);if(_0x418566&&_0x418566[_0xd3a1('0x4b')]){logger[_0xd3a1('0x16')]('['+_0x3fcc56[_0xd3a1('0x6a')][_0xd3a1('0x6b')]()+']',_0xd3a1('0x4c'));_0x3fcc56[_0xd3a1('0x4d')]=util[_0xd3a1('0xe')](_0xd3a1('0x4e'),_0x211982[_0xd3a1('0x49')],_0x3fcc56['uniqueid'],md5(_0x3fcc56[_0xd3a1('0x4f')]));}else{_0x3fcc56[_0xd3a1('0x4d')]='';}headers['Authorization']=getAuth(_0x211982);return getUser(_0x211982)[_0xd3a1('0x1c')](function(_0x1c651c){_0x346324=_0x1c651c;logger[_0xd3a1('0x16')](_0xd3a1('0x62'),_0x346324['id']);return getEndUser(_0x211982,_0x3fcc56['calleridname'],_0x3fcc56[_0xd3a1('0x52')]);})['then'](function(_0x24852){_0x311307=_0x24852;logger['info'](_0xd3a1('0x53'),_0x311307['id']);return getTicket(_0x211982,_0x346324,_0x311307,_0x47497e,_0x3fcc56);})[_0xd3a1('0x1c')](function(_0x1f0e9b){if(_0x1f0e9b){logger['info']('The\x20Ticket\x20ID\x20is:',_0x1f0e9b['id']);}})[_0xd3a1('0x67')](function(_0x3f1d9a){logger['error']('['+_0x3fcc56[_0xd3a1('0x6a')][_0xd3a1('0x6b')]()+']'+_0xd3a1('0x6c'),util[_0xd3a1('0x60')](_0x3f1d9a,{'showHidden':!![],'depth':null}));});};