Built motion from commit (unavailable).|2.5.30
[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 _0xf311=['POST','Caller\x20-\x20%s','Enduser\x20created.','password','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','content','customField','custom_fields','push','idField','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%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','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','Authorization','The\x20User\x20ID\x20is:','destcalleridname','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','remoteUri','merge','Tags','name','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','type:user\x20role:end-user\x20phone:%s','length','results','end-user','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json'];(function(_0x1d408d,_0x2fef27){var _0x112a98=function(_0x5615a8){while(--_0x5615a8){_0x1d408d['push'](_0x1d408d['shift']());}};_0x112a98(++_0x2fef27);}(_0xf311,0xba));var _0x1f31=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xf311[_0x27af45];return _0x18df21;};'use strict';var _=require(_0x1f31('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x1f31('0x1'));var Redis=require(_0x1f31('0x2'));var intUtil=require(_0x1f31('0x3'));var config=require(_0x1f31('0x4'));var logger=require(_0x1f31('0x5'))(_0x1f31('0x6'));config[_0x1f31('0x7')]=_[_0x1f31('0x8')](config[_0x1f31('0x7')],{'host':_0x1f31('0x9'),'port':0x18eb});var io=require(_0x1f31('0xa'))(new Redis(config[_0x1f31('0x7')]));function emit(_0x44aaff,_0x4d8182,_0x58ca8c){io['to'](_0x44aaff)[_0x1f31('0xb')](_0x4d8182,_0x58ca8c);}var headers={'Content-Type':_0x1f31('0xc'),'Accept':'application/json'};function getTicket(_0x4ca533,_0x2cfcc6,_0x286641,_0x313ef5,_0x3c3cfd){logger[_0x1f31('0xd')](_0x1f31('0xe'));return request({'uri':util[_0x1f31('0xf')]('%s/tickets.json',_0x4ca533[_0x1f31('0x10')]),'method':'POST','body':{'ticket':_[_0x1f31('0x11')]({'requester_id':_0x286641['id'],'submitter_id':_0x2cfcc6?_0x2cfcc6['id']:undefined,'assignee_id':_0x2cfcc6?_0x2cfcc6['id']:undefined,'tags':getTags(_0x313ef5[_0x1f31('0x12')],_0x1f31('0x13')),'subject':intUtil['getString'](_0x313ef5['Subjects'],_0x3c3cfd,'\x20'),'description':intUtil[_0x1f31('0x14')](_0x313ef5['Descriptions'],_0x3c3cfd,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x313ef5[_0x1f31('0x15')],_0x3c3cfd,'\x0a')}},getCustomFields(_0x313ef5[_0x1f31('0x16')],_0x3c3cfd))}})[_0x1f31('0x17')](function(_0x5c67b8){logger[_0x1f31('0xd')](_0x1f31('0x18'));return _0x5c67b8[_0x1f31('0x19')];});}function getUser(_0x4b25ed,_0x95d973){if(intUtil[_0x1f31('0x1a')](_0x95d973)){logger[_0x1f31('0xd')](_0x1f31('0x1b'),_0x95d973);return request({'uri':util[_0x1f31('0xf')](_0x1f31('0x1c'),_0x4b25ed['remoteUri']),'qs':{'query':util['format'](_0x1f31('0x1d'),_0x95d973)}})[_0x1f31('0x17')](function(_0x4607ff){if(_0x4607ff[_0x1f31('0x1e')]){logger['info'](_0x1f31('0x1f'));return _[_0x1f31('0x20')](_0x4607ff['results'],{'email':_0x95d973,'role':_0x1f31('0x21')});}else{logger[_0x1f31('0xd')](_0x1f31('0x22'));return request({'uri':util[_0x1f31('0xf')](_0x1f31('0x23'),_0x4b25ed[_0x1f31('0x10')])})[_0x1f31('0x17')](function(_0xaf78c9){logger[_0x1f31('0xd')]('Admin\x20account\x20selected.');return _0xaf78c9[_0x1f31('0x24')];});}});}else{logger[_0x1f31('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1f31('0xf')](_0x1f31('0x23'),_0x4b25ed[_0x1f31('0x10')])})['then'](function(_0xac7689){logger[_0x1f31('0xd')](_0x1f31('0x25'));return _0xac7689['user'];});}}function getEndUser(_0x5e553a,_0x45b50f,_0xe87302){logger[_0x1f31('0xd')]('Searching\x20enduser\x20with\x20phone',_0xe87302);return request({'uri':util[_0x1f31('0xf')]('%s/search.json',_0x5e553a[_0x1f31('0x10')]),'qs':{'query':util['format'](_0x1f31('0x26'),_0xe87302)}})[_0x1f31('0x17')](function(_0x548be3){var _0x1c6c3d;if(_0x548be3['results'][_0x1f31('0x27')]){_0x548be3[_0x1f31('0x28')]=_['filter'](_0x548be3[_0x1f31('0x28')],{'suspended':![],'role':_0x1f31('0x29')});if(_0x548be3['results'][_0x1f31('0x27')]){_0x1c6c3d=_['first'](_0x548be3[_0x1f31('0x28')]);}}if(_0x1c6c3d){logger[_0x1f31('0xd')]('Enduser\x20found!');return _0x1c6c3d;}else{logger['info'](_0x1f31('0x2a'));return request({'uri':util[_0x1f31('0xf')](_0x1f31('0x2b'),_0x5e553a[_0x1f31('0x10')]),'method':_0x1f31('0x2c'),'body':{'user':{'role':_0x1f31('0x29'),'name':util[_0x1f31('0xf')](_0x1f31('0x2d'),_0x45b50f||_0xe87302),'phone':_0xe87302}}})[_0x1f31('0x17')](function(_0x1b5730){logger[_0x1f31('0xd')](_0x1f31('0x2e'));return _0x1b5730[_0x1f31('0x24')];});}});}function getAuth(_0x312f9f){var _0x65671;if(_0x312f9f['authType']===_0x1f31('0x2f')){_0x65671=util[_0x1f31('0xf')]('%s:%s',_0x312f9f[_0x1f31('0x30')],_0x312f9f['password']);}else if(_0x312f9f['authType']===_0x1f31('0x31')){_0x65671=util[_0x1f31('0xf')](_0x1f31('0x32'),_0x312f9f[_0x1f31('0x30')],_0x312f9f[_0x1f31('0x31')]);}return util[_0x1f31('0xf')](_0x1f31('0x33'),new Buffer(_0x65671)[_0x1f31('0x34')](_0x1f31('0x35')));}function request(_0x372a67){logger[_0x1f31('0x36')](_0x1f31('0x37'),JSON[_0x1f31('0x38')](_0x372a67));return rp(_[_0x1f31('0x8')](_0x372a67,{'method':_0x1f31('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x9b403d,_0x194c6b){var _0x374d70=[];if(_0x9b403d&&_0x9b403d[_0x1f31('0x27')]>0x0){_0x374d70=_[_0x1f31('0x3a')](_0x9b403d,_0x194c6b);}return _0x374d70;}function getCustomFields(_0x12d483,_0x5acc94){var _0x534c64=[];var _0x28b652={'custom_fields':[]};if(_0x12d483[_0x1f31('0x27')]>0x0){_[_0x1f31('0x3b')](_0x12d483,function(_0x1f4efe){if(_[_0x1f31('0x3c')]([_0x1f31('0x3d'),_0x1f31('0x3e')],_0x1f4efe[_0x1f31('0x3f')])&&_0x1f4efe[_0x1f31('0x40')]&&!_0x1f4efe['customField']){_0x28b652[_0x1f4efe[_0x1f31('0x40')]['toLowerCase']()]=_0x1f4efe[_0x1f31('0x41')][_0x1f31('0x34')]();}else if(_[_0x1f31('0x3c')](['string','picklist'],_0x1f4efe[_0x1f31('0x3f')])&&_0x1f4efe['idField']&&_0x1f4efe[_0x1f31('0x42')]){_0x28b652[_0x1f31('0x43')][_0x1f31('0x44')]({'id':_0x1f4efe[_0x1f31('0x45')],'value':_0x1f4efe['content']['toString']()});}else if(_0x1f4efe[_0x1f31('0x3f')]===_0x1f31('0x46')&&_0x1f4efe[_0x1f31('0x47')]&&_0x1f4efe[_0x1f31('0x45')]&&_0x1f4efe[_0x1f31('0x42')]){_0x5acc94[_0x1f4efe[_0x1f31('0x47')]]&&_0x28b652[_0x1f31('0x43')]['push']({'id':_0x1f4efe['idField'],'value':_0x5acc94[_0x1f4efe[_0x1f31('0x47')]][_0x1f31('0x34')]()});}else if(_0x1f4efe[_0x1f31('0x3f')]===_0x1f31('0x48')&&_0x1f4efe[_0x1f31('0x49')]&&_0x1f4efe['Variable'][_0x1f31('0x13')]&&_0x1f4efe[_0x1f31('0x45')]&&_0x1f4efe[_0x1f31('0x42')]){_0x5acc94[_0x1f4efe['Variable']['name']['toLowerCase']()]&&_0x28b652[_0x1f31('0x43')][_0x1f31('0x44')]({'id':_0x1f4efe['idField'],'value':_0x5acc94[_0x1f4efe['Variable']['name']['toLowerCase']()][_0x1f31('0x34')]()});}});}return _0x28b652;}exports[_0x1f31('0x4a')]=function(_0x39dc67,_0x1dfa15,_0x10c223,_0xd1f7b4,_0x11f6cd,_0x18175f){var _0x4a21ad,_0x483694;_0x18175f[_0x1f31('0x10')]=intUtil['stripTrailingSlash'](_0x18175f[_0x1f31('0x10')]);_0x18175f['serverUrl']=intUtil[_0x1f31('0x4b')](_0x18175f[_0x1f31('0x4c')]);if(_0x11f6cd&&_0x11f6cd[_0x1f31('0x4d')]){logger[_0x1f31('0xd')](_0x1f31('0x4e'),_0x1f31('0x4f'));_0x1dfa15[_0x1f31('0x50')]=util[_0x1f31('0xf')](_0x1f31('0x51'),_0x18175f[_0x1f31('0x4c')],_0x1dfa15['uniqueid'],md5(_0x1dfa15['uniqueid']));}else{_0x1dfa15[_0x1f31('0x50')]='';}headers['Authorization']=getAuth(_0x18175f);return getUser(_0x18175f,_0xd1f7b4[_0x1f31('0x52')])['then'](function(_0x2772d8){_0x4a21ad=_0x2772d8;logger['info']('The\x20User\x20ID\x20is:',_0x4a21ad['id']);return getEndUser(_0x18175f,_0x1dfa15['calleridname'],_0x1dfa15[_0x1f31('0x53')]);})[_0x1f31('0x17')](function(_0x5c1b4d){_0x483694=_0x5c1b4d;logger[_0x1f31('0xd')](_0x1f31('0x54'),_0x483694['id']);return getTicket(_0x18175f,_0x4a21ad,_0x483694,_0x10c223,_0x1dfa15);})[_0x1f31('0x17')](function(_0x25efa2){if(_0x25efa2){logger[_0x1f31('0xd')](_0x1f31('0x55'),_0x25efa2['id']);switch(_0x18175f[_0x1f31('0x3f')]){case _0x1f31('0x56'):logger[_0x1f31('0xd')](_0x1f31('0x4e'),_0x1f31('0x57'));return request({'uri':util[_0x1f31('0xf')](_0x1f31('0x58'),_0x18175f[_0x1f31('0x10')],_0x4a21ad['id'],_0x25efa2['id']),'method':'POST'});case _0x1f31('0x59'):logger['info'](_0x1f31('0x4e'),_0x1f31('0x5a'));emit(util[_0x1f31('0xf')](_0x1f31('0x5b'),_0xd1f7b4[_0x1f31('0x13')]),_0x1f31('0x5c'),{'uri':util[_0x1f31('0xf')](_0x1f31('0x5d'),_0x18175f[_0x1f31('0x10')][_0x1f31('0x5e')](_0x1f31('0x5f'),''),_0x25efa2['id'])});break;default:logger[_0x1f31('0x60')](_0x1f31('0x4e'),_0x1f31('0x61'));}}})[_0x1f31('0x62')](function(_0x383e1b){logger[_0x1f31('0x60')](_0x1f31('0x63'),util[_0x1f31('0x64')](_0x383e1b,{'showHidden':!![],'depth':null}));});};exports[_0x1f31('0x65')]=function(_0x3fcd77,_0x639bbf,_0x30165f,_0x11307f,_0x533e83,_0x5be1d5,_0x46ebbb){var _0x5ba235,_0x173da9;_0x5be1d5[_0x1f31('0x10')]=intUtil[_0x1f31('0x4b')](_0x5be1d5[_0x1f31('0x10')]);_0x5be1d5[_0x1f31('0x4c')]=intUtil[_0x1f31('0x4b')](_0x5be1d5[_0x1f31('0x4c')]);if(_0x46ebbb&&_0x46ebbb['recordingFormat']&&_0x46ebbb[_0x1f31('0x66')]!==_0x1f31('0x67')){logger['info'](_0x1f31('0x68'),_0x1f31('0x4f'));_0x639bbf[_0x1f31('0x50')]=util[_0x1f31('0xf')](_0x1f31('0x51'),_0x5be1d5[_0x1f31('0x4c')],_0x639bbf['uniqueid'],md5(_0x639bbf[_0x1f31('0x69')]));}headers[_0x1f31('0x6a')]=getAuth(_0x5be1d5);return getUser(_0x5be1d5,_0x11307f[_0x1f31('0x52')])[_0x1f31('0x17')](function(_0x347396){_0x5ba235=_0x347396;logger[_0x1f31('0xd')](_0x1f31('0x6b'),_0x5ba235['id']);return getEndUser(_0x5be1d5,_0x639bbf[_0x1f31('0x6c')],_0x639bbf['destcalleridnum']);})[_0x1f31('0x17')](function(_0xaf65f5){_0x173da9=_0xaf65f5;logger[_0x1f31('0xd')](_0x1f31('0x54'),_0x173da9['id']);return getTicket(_0x5be1d5,_0x5ba235,_0x173da9,_0x30165f,_0x639bbf);})['then'](function(_0xf3e3e2){if(_0xf3e3e2){logger['info'](_0x1f31('0x55'),_0xf3e3e2['id']);switch(_0x5be1d5[_0x1f31('0x3f')]){case _0x1f31('0x56'):logger[_0x1f31('0xd')](_0x1f31('0x68'),_0x1f31('0x57'));return request({'uri':util['format'](_0x1f31('0x58'),_0x5be1d5[_0x1f31('0x10')],_0x5ba235['id'],_0xf3e3e2['id']),'method':_0x1f31('0x2c')});case'newTab':logger[_0x1f31('0xd')](_0x1f31('0x68'),_0x1f31('0x5a'));emit(util[_0x1f31('0xf')](_0x1f31('0x5b'),_0x11307f[_0x1f31('0x13')]),'trigger:browser:url',{'uri':util[_0x1f31('0xf')](_0x1f31('0x5d'),_0x5be1d5[_0x1f31('0x10')][_0x1f31('0x5e')](_0x1f31('0x5f'),''),_0xf3e3e2['id'])});break;default:logger[_0x1f31('0x60')](_0x1f31('0x68'),_0x1f31('0x61'));}}})[_0x1f31('0x62')](function(_0x42744a){logger['error'](_0x1f31('0x6d'),util[_0x1f31('0x64')](_0x42744a,{'showHidden':!![],'depth':null}));});};exports[_0x1f31('0x6e')]=function(_0x108233,_0x4a50df,_0x5706db,_0x3331ba,_0x16008d,_0x120fc0){var _0xd98c7b,_0x707539;_0x120fc0[_0x1f31('0x10')]=intUtil['stripTrailingSlash'](_0x120fc0[_0x1f31('0x10')]);_0x120fc0[_0x1f31('0x4c')]=intUtil[_0x1f31('0x4b')](_0x120fc0[_0x1f31('0x4c')]);if(_0x16008d&&_0x16008d[_0x1f31('0x4d')]){logger[_0x1f31('0xd')]('['+_0x4a50df[_0x1f31('0x6f')][_0x1f31('0x70')]()+']',_0x1f31('0x4f'));_0x4a50df['recordingURL']=util[_0x1f31('0xf')](_0x1f31('0x51'),_0x120fc0[_0x1f31('0x4c')],_0x4a50df['uniqueid'],md5(_0x4a50df[_0x1f31('0x69')]));}else{_0x4a50df['recordingURL']='';}headers[_0x1f31('0x6a')]=getAuth(_0x120fc0);return getUser(_0x120fc0)[_0x1f31('0x17')](function(_0xc792a){_0xd98c7b=_0xc792a;logger[_0x1f31('0xd')]('The\x20User\x20ID\x20is:',_0xd98c7b['id']);return getEndUser(_0x120fc0,_0x4a50df[_0x1f31('0x71')],_0x4a50df[_0x1f31('0x53')]);})[_0x1f31('0x17')](function(_0x25084a){_0x707539=_0x25084a;logger[_0x1f31('0xd')](_0x1f31('0x54'),_0x707539['id']);return getTicket(_0x120fc0,_0xd98c7b,_0x707539,_0x5706db,_0x4a50df);})['then'](function(_0x3c7ac8){if(_0x3c7ac8){logger[_0x1f31('0xd')](_0x1f31('0x55'),_0x3c7ac8['id']);}})[_0x1f31('0x62')](function(_0x3d6b20){logger[_0x1f31('0x60')]('['+_0x4a50df[_0x1f31('0x6f')][_0x1f31('0x70')]()+']'+_0x1f31('0x72'),util[_0x1f31('0x64')](_0x3d6b20,{'showHidden':!![],'depth':null}));});};