4086f08c9559dad26f005f18b584f94d66e3a354
[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 _0x9567=['getString','Subjects','Descriptions','Fields','Ticket\x20created!','ticket','validateEmail','info','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','results','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','filter','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','password','%s:%s','username','authType','token','toString','base64','debug','[HTTP]','stringify','GET','forEach','string','type','nameField','customField','toLowerCase','content','includes','idField','custom_fields','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','%s/agent/tickets/%s','catch','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','[OUTBOUND]','Authorization','email','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','./util','../../../../config/environment','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','format','remoteUri','POST','merge','name'];(function(_0x2cdff1,_0x1b246a){var _0x56f3b4=function(_0x428fb9){while(--_0x428fb9){_0x2cdff1['push'](_0x2cdff1['shift']());}};_0x56f3b4(++_0x1b246a);}(_0x9567,0xca));var _0x7956=function(_0x27f103,_0x1bb035){_0x27f103=_0x27f103-0x0;var _0x28c084=_0x9567[_0x27f103];return _0x28c084;};'use strict';var _=require(_0x7956('0x0'));var rp=require(_0x7956('0x1'));var md5=require(_0x7956('0x2'));var util=require(_0x7956('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7956('0x4'));var config=require(_0x7956('0x5'));var logger=require('../../../../config/logger')(_0x7956('0x6'));config[_0x7956('0x7')]=_[_0x7956('0x8')](config[_0x7956('0x7')],{'host':_0x7956('0x9'),'port':0x18eb});var io=require(_0x7956('0xa'))(new Redis(config[_0x7956('0x7')]));function emit(_0x5cc6a6,_0x55bb99,_0xc70588){io['to'](_0x5cc6a6)['emit'](_0x55bb99,_0xc70588);}var headers={'Content-Type':_0x7956('0xb'),'Accept':_0x7956('0xb')};function getTicket(_0x4ec2c0,_0x4c6690,_0x1d51d4,_0x15f310,_0x59a97e){logger['info'](_0x7956('0xc'));return request({'uri':util[_0x7956('0xd')]('%s/tickets.json',_0x4ec2c0[_0x7956('0xe')]),'method':_0x7956('0xf'),'body':{'ticket':_[_0x7956('0x10')]({'requester_id':_0x1d51d4['id'],'submitter_id':_0x4c6690?_0x4c6690['id']:undefined,'assignee_id':_0x4c6690?_0x4c6690['id']:undefined,'tags':getTags(_0x15f310['Tags'],_0x7956('0x11')),'subject':intUtil[_0x7956('0x12')](_0x15f310[_0x7956('0x13')],_0x59a97e,'\x20'),'description':intUtil[_0x7956('0x12')](_0x15f310['Descriptions'],_0x59a97e,'\x0a'),'comment':{'public':![],'body':intUtil[_0x7956('0x12')](_0x15f310[_0x7956('0x14')],_0x59a97e,'\x0a')}},getCustomFields(_0x15f310[_0x7956('0x15')],_0x59a97e))}})['then'](function(_0x35ece7){logger['info'](_0x7956('0x16'));return _0x35ece7[_0x7956('0x17')];});}function getUser(_0x2f62ee,_0x37bd40){if(intUtil[_0x7956('0x18')](_0x37bd40)){logger[_0x7956('0x19')](_0x7956('0x1a'),_0x37bd40);return request({'uri':util[_0x7956('0xd')](_0x7956('0x1b'),_0x2f62ee['remoteUri']),'qs':{'query':util[_0x7956('0xd')](_0x7956('0x1c'),_0x37bd40)}})[_0x7956('0x1d')](function(_0x3c88f2){if(_0x3c88f2[_0x7956('0x1e')]){logger[_0x7956('0x19')](_0x7956('0x1f'));return _[_0x7956('0x20')](_0x3c88f2[_0x7956('0x21')],{'email':_0x37bd40,'role':'agent'});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x7956('0xd')](_0x7956('0x22'),_0x2f62ee[_0x7956('0xe')])})[_0x7956('0x1d')](function(_0x490ecf){logger['info'](_0x7956('0x23'));return _0x490ecf[_0x7956('0x24')];});}});}else{logger[_0x7956('0x19')](_0x7956('0x25'));return request({'uri':util[_0x7956('0xd')](_0x7956('0x22'),_0x2f62ee[_0x7956('0xe')])})['then'](function(_0x5bac57){logger[_0x7956('0x19')](_0x7956('0x23'));return _0x5bac57[_0x7956('0x24')];});}}function getEndUser(_0x527df9,_0xfa25b7,_0x3866a7){logger['info'](_0x7956('0x26'),_0x3866a7);return request({'uri':util[_0x7956('0xd')]('%s/search.json',_0x527df9['remoteUri']),'qs':{'query':util[_0x7956('0xd')]('type:user\x20role:end-user\x20phone:%s',_0x3866a7)}})['then'](function(_0x524b08){var _0xe9ad53;if(_0x524b08[_0x7956('0x21')]['length']){_0x524b08[_0x7956('0x21')]=_[_0x7956('0x27')](_0x524b08[_0x7956('0x21')],{'suspended':![],'role':'end-user'});if(_0x524b08[_0x7956('0x21')][_0x7956('0x28')]){_0xe9ad53=_['first'](_0x524b08[_0x7956('0x21')]);}}if(_0xe9ad53){logger[_0x7956('0x19')](_0x7956('0x29'));return _0xe9ad53;}else{logger[_0x7956('0x19')](_0x7956('0x2a'));return request({'uri':util[_0x7956('0xd')](_0x7956('0x2b'),_0x527df9['remoteUri']),'method':'POST','body':{'user':{'role':_0x7956('0x2c'),'name':util['format'](_0x7956('0x2d'),_0xfa25b7||_0x3866a7),'phone':_0x3866a7}}})['then'](function(_0x113949){logger['info']('Enduser\x20created.');return _0x113949[_0x7956('0x24')];});}});}function getAuth(_0x2e728e){var _0x5aa604;if(_0x2e728e['authType']===_0x7956('0x2e')){_0x5aa604=util[_0x7956('0xd')](_0x7956('0x2f'),_0x2e728e[_0x7956('0x30')],_0x2e728e[_0x7956('0x2e')]);}else if(_0x2e728e[_0x7956('0x31')]===_0x7956('0x32')){_0x5aa604=util[_0x7956('0xd')]('%s/token:%s',_0x2e728e['username'],_0x2e728e[_0x7956('0x32')]);}return util[_0x7956('0xd')]('Basic\x20%s',new Buffer(_0x5aa604)[_0x7956('0x33')](_0x7956('0x34')));}function request(_0x174981){logger[_0x7956('0x35')](_0x7956('0x36'),JSON[_0x7956('0x37')](_0x174981));return rp(_[_0x7956('0x8')](_0x174981,{'method':_0x7956('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x86966c,_0x2b8c94){var _0xb3a4=[];if(_0x86966c&&_0x86966c[_0x7956('0x28')]>0x0){_0xb3a4=_['map'](_0x86966c,_0x2b8c94);}return _0xb3a4;}function getCustomFields(_0x4be86d,_0x2b364b){var _0x2eaa4f=[];var _0x4ce65b={'custom_fields':[]};if(_0x4be86d[_0x7956('0x28')]>0x0){_[_0x7956('0x39')](_0x4be86d,function(_0x4a2324){if(_['includes']([_0x7956('0x3a'),'picklist'],_0x4a2324[_0x7956('0x3b')])&&_0x4a2324[_0x7956('0x3c')]&&!_0x4a2324[_0x7956('0x3d')]){_0x4ce65b[_0x4a2324['nameField'][_0x7956('0x3e')]()]=_0x4a2324[_0x7956('0x3f')][_0x7956('0x33')]();}else if(_[_0x7956('0x40')]([_0x7956('0x3a'),'picklist'],_0x4a2324['type'])&&_0x4a2324[_0x7956('0x41')]&&_0x4a2324[_0x7956('0x3d')]){_0x4ce65b[_0x7956('0x42')][_0x7956('0x43')]({'id':_0x4a2324[_0x7956('0x41')],'value':_0x4a2324[_0x7956('0x3f')]['toString']()});}else if(_0x4a2324['type']===_0x7956('0x44')&&_0x4a2324[_0x7956('0x45')]&&_0x4a2324[_0x7956('0x41')]&&_0x4a2324[_0x7956('0x3d')]){_0x2b364b[_0x4a2324['variableName']]&&_0x4ce65b[_0x7956('0x42')][_0x7956('0x43')]({'id':_0x4a2324[_0x7956('0x41')],'value':_0x2b364b[_0x4a2324[_0x7956('0x45')]]['toString']()});}else if(_0x4a2324['type']===_0x7956('0x46')&&_0x4a2324[_0x7956('0x47')]&&_0x4a2324[_0x7956('0x47')][_0x7956('0x11')]&&_0x4a2324[_0x7956('0x41')]&&_0x4a2324[_0x7956('0x3d')]){_0x2b364b[_0x4a2324[_0x7956('0x47')][_0x7956('0x11')][_0x7956('0x3e')]()]&&_0x4ce65b[_0x7956('0x42')][_0x7956('0x43')]({'id':_0x4a2324[_0x7956('0x41')],'value':_0x2b364b[_0x4a2324['Variable'][_0x7956('0x11')][_0x7956('0x3e')]()][_0x7956('0x33')]()});}});}return _0x4ce65b;}exports[_0x7956('0x48')]=function(_0x34e4bf,_0x405ef3,_0x4f1af3,_0x6835ae,_0x178c2f,_0x5a1aba){var _0xe7f8e,_0x7f954b;_0x5a1aba[_0x7956('0xe')]=intUtil[_0x7956('0x49')](_0x5a1aba[_0x7956('0xe')]);_0x5a1aba['serverUrl']=intUtil[_0x7956('0x49')](_0x5a1aba[_0x7956('0x4a')]);if(_0x178c2f&&_0x178c2f[_0x7956('0x4b')]){logger[_0x7956('0x19')](_0x7956('0x4c'),_0x7956('0x4d'));_0x405ef3[_0x7956('0x4e')]=util[_0x7956('0xd')](_0x7956('0x4f'),_0x5a1aba[_0x7956('0x4a')],_0x405ef3['uniqueid'],md5(_0x405ef3[_0x7956('0x50')]));}else{_0x405ef3[_0x7956('0x4e')]='';}headers['Authorization']=getAuth(_0x5a1aba);return getUser(_0x5a1aba,_0x6835ae['email'])[_0x7956('0x1d')](function(_0x435292){_0xe7f8e=_0x435292;logger[_0x7956('0x19')]('The\x20User\x20ID\x20is:',_0xe7f8e['id']);return getEndUser(_0x5a1aba,_0x405ef3['calleridname'],_0x405ef3[_0x7956('0x51')]);})['then'](function(_0x10b92f){_0x7f954b=_0x10b92f;logger[_0x7956('0x19')](_0x7956('0x52'),_0x7f954b['id']);return getTicket(_0x5a1aba,_0xe7f8e,_0x7f954b,_0x4f1af3,_0x405ef3);})[_0x7956('0x1d')](function(_0x5306a1){if(_0x5306a1){logger[_0x7956('0x19')](_0x7956('0x53'),_0x5306a1['id']);switch(_0x5a1aba[_0x7956('0x3b')]){case _0x7956('0x54'):logger[_0x7956('0x19')](_0x7956('0x4c'),_0x7956('0x55'));return request({'uri':util['format'](_0x7956('0x56'),_0x5a1aba['remoteUri'],_0xe7f8e['id'],_0x5306a1['id']),'method':_0x7956('0xf')});case _0x7956('0x57'):logger[_0x7956('0x19')](_0x7956('0x4c'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x7956('0x58'),_0x6835ae['name']),'trigger:browser:url',{'uri':util[_0x7956('0xd')](_0x7956('0x59'),_0x5a1aba['remoteUri']['replace']('/api/v2',''),_0x5306a1['id'])});break;default:logger['error'](_0x7956('0x4c'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x7956('0x5a')](function(_0x145d07){logger[_0x7956('0x5b')](_0x7956('0x5c'),util[_0x7956('0x5d')](_0x145d07,{'showHidden':!![],'depth':null}));});};exports[_0x7956('0x5e')]=function(_0x3876cd,_0x1d0773,_0x23af38,_0x4e2bb4,_0x5c6831,_0x118643,_0x299269){var _0x278880,_0x38c714;_0x118643[_0x7956('0xe')]=intUtil[_0x7956('0x49')](_0x118643['remoteUri']);_0x118643[_0x7956('0x4a')]=intUtil['stripTrailingSlash'](_0x118643[_0x7956('0x4a')]);if(_0x299269&&_0x299269[_0x7956('0x5f')]&&_0x299269[_0x7956('0x5f')]!=='none'){logger[_0x7956('0x19')](_0x7956('0x60'),_0x7956('0x4d'));_0x1d0773[_0x7956('0x4e')]=util[_0x7956('0xd')](_0x7956('0x4f'),_0x118643[_0x7956('0x4a')],_0x1d0773[_0x7956('0x50')],md5(_0x1d0773[_0x7956('0x50')]));}headers[_0x7956('0x61')]=getAuth(_0x118643);return getUser(_0x118643,_0x4e2bb4[_0x7956('0x62')])[_0x7956('0x1d')](function(_0x260d66){_0x278880=_0x260d66;logger['info'](_0x7956('0x63'),_0x278880['id']);return getEndUser(_0x118643,_0x1d0773[_0x7956('0x64')],_0x1d0773[_0x7956('0x65')]);})['then'](function(_0x579d37){_0x38c714=_0x579d37;logger[_0x7956('0x19')]('The\x20Enduser\x20ID\x20is:',_0x38c714['id']);return getTicket(_0x118643,_0x278880,_0x38c714,_0x23af38,_0x1d0773);})[_0x7956('0x1d')](function(_0x2e4eac){if(_0x2e4eac){logger['info']('The\x20Ticket\x20ID\x20is:',_0x2e4eac['id']);switch(_0x118643[_0x7956('0x3b')]){case _0x7956('0x54'):logger['info']('[OUTBOUND]',_0x7956('0x55'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x118643['remoteUri'],_0x278880['id'],_0x2e4eac['id']),'method':'POST'});case _0x7956('0x57'):logger[_0x7956('0x19')](_0x7956('0x60'),_0x7956('0x66'));emit(util['format'](_0x7956('0x58'),_0x4e2bb4[_0x7956('0x11')]),_0x7956('0x67'),{'uri':util['format'](_0x7956('0x59'),_0x118643[_0x7956('0xe')][_0x7956('0x68')]('/api/v2',''),_0x2e4eac['id'])});break;default:logger[_0x7956('0x5b')](_0x7956('0x60'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x7956('0x5a')](function(_0x212177){logger['error'](_0x7956('0x69'),util['inspect'](_0x212177,{'showHidden':!![],'depth':null}));});};exports[_0x7956('0x6a')]=function(_0x5d78bd,_0x5d107c,_0x45521c,_0x4b2a80,_0x3eecb1,_0x466f84){var _0x42d7cb,_0x1bee5d;_0x466f84[_0x7956('0xe')]=intUtil['stripTrailingSlash'](_0x466f84[_0x7956('0xe')]);_0x466f84['serverUrl']=intUtil[_0x7956('0x49')](_0x466f84['serverUrl']);if(_0x3eecb1&&_0x3eecb1['monitor_format']){logger[_0x7956('0x19')]('['+_0x5d107c[_0x7956('0x6b')]['toUpperCase']()+']',_0x7956('0x4d'));_0x5d107c[_0x7956('0x4e')]=util[_0x7956('0xd')](_0x7956('0x4f'),_0x466f84['serverUrl'],_0x5d107c['uniqueid'],md5(_0x5d107c['uniqueid']));}else{_0x5d107c[_0x7956('0x4e')]='';}headers[_0x7956('0x61')]=getAuth(_0x466f84);return getUser(_0x466f84)[_0x7956('0x1d')](function(_0x45880d){_0x42d7cb=_0x45880d;logger[_0x7956('0x19')]('The\x20User\x20ID\x20is:',_0x42d7cb['id']);return getEndUser(_0x466f84,_0x5d107c['calleridname'],_0x5d107c[_0x7956('0x51')]);})['then'](function(_0x5988a3){_0x1bee5d=_0x5988a3;logger[_0x7956('0x19')]('The\x20Enduser\x20ID\x20is:',_0x1bee5d['id']);return getTicket(_0x466f84,_0x42d7cb,_0x1bee5d,_0x45521c,_0x5d107c);})[_0x7956('0x1d')](function(_0x82a51b){if(_0x82a51b){logger['info'](_0x7956('0x53'),_0x82a51b['id']);}})[_0x7956('0x5a')](function(_0x1ebff8){logger['error']('['+_0x5d107c[_0x7956('0x6b')][_0x7956('0x6c')]()+']'+_0x7956('0x6d'),util[_0x7956('0x5d')](_0x1ebff8,{'showHidden':!![],'depth':null}));});};