Built motion from commit 08fb8613.|2.6.31
[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 _0x8e6c=['Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','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','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','[HTTP]','stringify','GET','map','string','type','nameField','content','idField','custom_fields','variable','variableName','customField','push','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','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','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info'];(function(_0x175a55,_0x4082fd){var _0x167adf=function(_0x18ef07){while(--_0x18ef07){_0x175a55['push'](_0x175a55['shift']());}};_0x167adf(++_0x4082fd);}(_0x8e6c,0x14a));var _0xc8e6=function(_0x3d2cc2,_0x4d596a){_0x3d2cc2=_0x3d2cc2-0x0;var _0x220213=_0x8e6c[_0x3d2cc2];return _0x220213;};'use strict';var _=require(_0xc8e6('0x0'));var rp=require(_0xc8e6('0x1'));var md5=require(_0xc8e6('0x2'));var util=require(_0xc8e6('0x3'));var Redis=require(_0xc8e6('0x4'));var intUtil=require('./util');var config=require(_0xc8e6('0x5'));var logger=require(_0xc8e6('0x6'))(_0xc8e6('0x7'));config[_0xc8e6('0x8')]=_[_0xc8e6('0x9')](config[_0xc8e6('0x8')],{'host':_0xc8e6('0xa'),'port':0x18eb});var io=require(_0xc8e6('0xb'))(new Redis(config[_0xc8e6('0x8')]));function emit(_0x487993,_0x2e8ea0,_0x38ed3e){io['to'](_0x487993)[_0xc8e6('0xc')](_0x2e8ea0,_0x38ed3e);}var headers={'Content-Type':_0xc8e6('0xd'),'Accept':_0xc8e6('0xd')};function getTicket(_0x446c52,_0x48a6d9,_0xd83d12,_0x2f25d6,_0x5bd8ce){logger[_0xc8e6('0xe')](_0xc8e6('0xf'));return request({'uri':util[_0xc8e6('0x10')](_0xc8e6('0x11'),_0x446c52[_0xc8e6('0x12')]),'method':_0xc8e6('0x13'),'body':{'ticket':_[_0xc8e6('0x14')]({'requester_id':_0xd83d12['id'],'submitter_id':_0x48a6d9?_0x48a6d9['id']:undefined,'assignee_id':_0x48a6d9?_0x48a6d9['id']:undefined,'tags':getTags(_0x2f25d6['Tags'],_0xc8e6('0x15')),'subject':intUtil[_0xc8e6('0x16')](_0x2f25d6[_0xc8e6('0x17')],_0x5bd8ce,'\x20'),'description':intUtil[_0xc8e6('0x16')](_0x2f25d6[_0xc8e6('0x18')],_0x5bd8ce,'\x0a'),'comment':{'public':![],'body':intUtil[_0xc8e6('0x16')](_0x2f25d6['Descriptions'],_0x5bd8ce,'\x0a')}},getCustomFields(_0x2f25d6[_0xc8e6('0x19')],_0x5bd8ce))}})[_0xc8e6('0x1a')](function(_0x480905){logger[_0xc8e6('0xe')](_0xc8e6('0x1b'));return _0x480905['ticket'];});}function getUser(_0xc0e1b9,_0x47baf9){if(intUtil[_0xc8e6('0x1c')](_0x47baf9)){logger['info'](_0xc8e6('0x1d'),_0x47baf9);return request({'uri':util['format'](_0xc8e6('0x1e'),_0xc0e1b9[_0xc8e6('0x12')]),'qs':{'query':util['format'](_0xc8e6('0x1f'),_0x47baf9)}})['then'](function(_0x5765a8){if(_0x5765a8['count']){logger[_0xc8e6('0xe')](_0xc8e6('0x20'));return _[_0xc8e6('0x21')](_0x5765a8[_0xc8e6('0x22')],{'email':_0x47baf9,'role':_0xc8e6('0x23')});}else{logger[_0xc8e6('0xe')](_0xc8e6('0x24'));return request({'uri':util[_0xc8e6('0x10')](_0xc8e6('0x25'),_0xc0e1b9[_0xc8e6('0x12')])})[_0xc8e6('0x1a')](function(_0x320667){logger[_0xc8e6('0xe')](_0xc8e6('0x26'));return _0x320667[_0xc8e6('0x27')];});}});}else{logger[_0xc8e6('0xe')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc8e6('0x10')](_0xc8e6('0x25'),_0xc0e1b9[_0xc8e6('0x12')])})[_0xc8e6('0x1a')](function(_0x54a566){logger[_0xc8e6('0xe')](_0xc8e6('0x26'));return _0x54a566['user'];});}}function getEndUser(_0x5205c1,_0x5445a8,_0x14b5c0){logger[_0xc8e6('0xe')](_0xc8e6('0x28'),_0x14b5c0);return request({'uri':util['format'](_0xc8e6('0x1e'),_0x5205c1[_0xc8e6('0x12')]),'qs':{'query':util[_0xc8e6('0x10')](_0xc8e6('0x29'),_0x14b5c0)}})['then'](function(_0xe04c3e){var _0x4faa3d;if(_0xe04c3e[_0xc8e6('0x22')]['length']){_0xe04c3e[_0xc8e6('0x22')]=_['filter'](_0xe04c3e[_0xc8e6('0x22')],{'suspended':![],'role':'end-user'});if(_0xe04c3e['results'][_0xc8e6('0x2a')]){_0x4faa3d=_['first'](_0xe04c3e[_0xc8e6('0x22')]);}}if(_0x4faa3d){logger[_0xc8e6('0xe')](_0xc8e6('0x2b'));return _0x4faa3d;}else{logger[_0xc8e6('0xe')](_0xc8e6('0x2c'));return request({'uri':util['format'](_0xc8e6('0x2d'),_0x5205c1[_0xc8e6('0x12')]),'method':'POST','body':{'user':{'role':_0xc8e6('0x2e'),'name':util[_0xc8e6('0x10')](_0xc8e6('0x2f'),_0x5445a8||_0x14b5c0),'phone':_0x14b5c0}}})[_0xc8e6('0x1a')](function(_0x5c15a2){logger[_0xc8e6('0xe')](_0xc8e6('0x30'));return _0x5c15a2[_0xc8e6('0x27')];});}});}function getAuth(_0x312a20){var _0x4b16e2;if(_0x312a20['authType']===_0xc8e6('0x31')){_0x4b16e2=util[_0xc8e6('0x10')](_0xc8e6('0x32'),_0x312a20[_0xc8e6('0x33')],_0x312a20[_0xc8e6('0x31')]);}else if(_0x312a20['authType']===_0xc8e6('0x34')){_0x4b16e2=util[_0xc8e6('0x10')](_0xc8e6('0x35'),_0x312a20[_0xc8e6('0x33')],_0x312a20[_0xc8e6('0x34')]);}return util[_0xc8e6('0x10')](_0xc8e6('0x36'),new Buffer(_0x4b16e2)[_0xc8e6('0x37')](_0xc8e6('0x38')));}function request(_0x2ae95d){logger['debug'](_0xc8e6('0x39'),JSON[_0xc8e6('0x3a')](_0x2ae95d));return rp(_[_0xc8e6('0x9')](_0x2ae95d,{'method':_0xc8e6('0x3b'),'headers':headers,'json':!![]}));}function getTags(_0x51fa24,_0x54d4a5){var _0x25b31f=[];if(_0x51fa24&&_0x51fa24['length']>0x0){_0x25b31f=_[_0xc8e6('0x3c')](_0x51fa24,_0x54d4a5);}return _0x25b31f;}function getCustomFields(_0x3e7167,_0x3dbdbe){var _0x23f36d=[];var _0x3d8e7a={'custom_fields':[]};if(_0x3e7167['length']>0x0){_['forEach'](_0x3e7167,function(_0x5ab028){if(_['includes']([_0xc8e6('0x3d'),'picklist'],_0x5ab028[_0xc8e6('0x3e')])&&_0x5ab028[_0xc8e6('0x3f')]&&!_0x5ab028['customField']){_0x3d8e7a[_0x5ab028['nameField']['toLowerCase']()]=_0x5ab028[_0xc8e6('0x40')][_0xc8e6('0x37')]();}else if(_['includes'](['string','picklist'],_0x5ab028['type'])&&_0x5ab028[_0xc8e6('0x41')]&&_0x5ab028['customField']){_0x3d8e7a[_0xc8e6('0x42')]['push']({'id':_0x5ab028[_0xc8e6('0x41')],'value':_0x5ab028[_0xc8e6('0x40')]['toString']()});}else if(_0x5ab028['type']===_0xc8e6('0x43')&&_0x5ab028[_0xc8e6('0x44')]&&_0x5ab028[_0xc8e6('0x41')]&&_0x5ab028[_0xc8e6('0x45')]){_0x3dbdbe[_0x5ab028['variableName']]&&_0x3d8e7a[_0xc8e6('0x42')][_0xc8e6('0x46')]({'id':_0x5ab028[_0xc8e6('0x41')],'value':_0x3dbdbe[_0x5ab028[_0xc8e6('0x44')]][_0xc8e6('0x37')]()});}else if(_0x5ab028['type']===_0xc8e6('0x47')&&_0x5ab028[_0xc8e6('0x48')]&&_0x5ab028['Variable'][_0xc8e6('0x15')]&&_0x5ab028[_0xc8e6('0x41')]&&_0x5ab028['customField']){_0x3dbdbe[_0x5ab028[_0xc8e6('0x48')][_0xc8e6('0x15')][_0xc8e6('0x49')]()]&&_0x3d8e7a[_0xc8e6('0x42')]['push']({'id':_0x5ab028['idField'],'value':_0x3dbdbe[_0x5ab028[_0xc8e6('0x48')]['name'][_0xc8e6('0x49')]()][_0xc8e6('0x37')]()});}});}return _0x3d8e7a;}exports[_0xc8e6('0x4a')]=function(_0x170e6d,_0x5c4cbe,_0x161a83,_0x1326c1,_0x3e2401,_0x1670e1){var _0x5d3552,_0x440fe0;_0x1670e1[_0xc8e6('0x12')]=intUtil[_0xc8e6('0x4b')](_0x1670e1[_0xc8e6('0x12')]);_0x1670e1[_0xc8e6('0x4c')]=intUtil[_0xc8e6('0x4b')](_0x1670e1[_0xc8e6('0x4c')]);if(_0x3e2401&&_0x3e2401[_0xc8e6('0x4d')]){logger[_0xc8e6('0xe')]('[QUEUE]',_0xc8e6('0x4e'));_0x5c4cbe[_0xc8e6('0x4f')]=util[_0xc8e6('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1670e1[_0xc8e6('0x4c')],_0x5c4cbe[_0xc8e6('0x50')],md5(_0x5c4cbe[_0xc8e6('0x50')]));}else{_0x5c4cbe[_0xc8e6('0x4f')]='';}headers['Authorization']=getAuth(_0x1670e1);return getUser(_0x1670e1,_0x1326c1[_0xc8e6('0x51')])[_0xc8e6('0x1a')](function(_0x436e9c){_0x5d3552=_0x436e9c;logger['info'](_0xc8e6('0x52'),_0x5d3552['id']);return getEndUser(_0x1670e1,_0x5c4cbe[_0xc8e6('0x53')],_0x5c4cbe[_0xc8e6('0x54')]);})[_0xc8e6('0x1a')](function(_0xe52714){_0x440fe0=_0xe52714;logger['info']('The\x20Enduser\x20ID\x20is:',_0x440fe0['id']);return getTicket(_0x1670e1,_0x5d3552,_0x440fe0,_0x161a83,_0x5c4cbe);})['then'](function(_0x184306){if(_0x184306){logger[_0xc8e6('0xe')](_0xc8e6('0x55'),_0x184306['id']);switch(_0x1670e1[_0xc8e6('0x3e')]){case _0xc8e6('0x56'):logger[_0xc8e6('0xe')](_0xc8e6('0x57'),_0xc8e6('0x58'));return request({'uri':util['format'](_0xc8e6('0x59'),_0x1670e1[_0xc8e6('0x12')],_0x5d3552['id'],_0x184306['id']),'method':_0xc8e6('0x13')});case _0xc8e6('0x5a'):logger[_0xc8e6('0xe')](_0xc8e6('0x57'),_0xc8e6('0x5b'));emit(util[_0xc8e6('0x10')](_0xc8e6('0x5c'),_0x1326c1[_0xc8e6('0x15')]),_0xc8e6('0x5d'),{'uri':util[_0xc8e6('0x10')]('%s/agent/tickets/%s',_0x1670e1[_0xc8e6('0x12')][_0xc8e6('0x5e')]('/api/v2',''),_0x184306['id'])});break;default:logger[_0xc8e6('0x5f')](_0xc8e6('0x57'),_0xc8e6('0x60'));}}})[_0xc8e6('0x61')](function(_0x2e5ec1){logger[_0xc8e6('0x5f')](_0xc8e6('0x62'),util[_0xc8e6('0x63')](_0x2e5ec1,{'showHidden':!![],'depth':null}));});};exports[_0xc8e6('0x64')]=function(_0x517d48,_0x3ec356,_0x509989,_0x2691cf,_0x39a21f,_0x34a5a8,_0xef31ff){var _0x32bc05,_0x55d889;_0x34a5a8[_0xc8e6('0x12')]=intUtil['stripTrailingSlash'](_0x34a5a8[_0xc8e6('0x12')]);_0x34a5a8['serverUrl']=intUtil[_0xc8e6('0x4b')](_0x34a5a8[_0xc8e6('0x4c')]);if(_0xef31ff&&_0xef31ff[_0xc8e6('0x65')]&&_0xef31ff[_0xc8e6('0x65')]!==_0xc8e6('0x66')){logger['info'](_0xc8e6('0x67'),_0xc8e6('0x4e'));_0x3ec356[_0xc8e6('0x4f')]=util[_0xc8e6('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x34a5a8['serverUrl'],_0x3ec356[_0xc8e6('0x50')],md5(_0x3ec356[_0xc8e6('0x50')]));}headers[_0xc8e6('0x68')]=getAuth(_0x34a5a8);return getUser(_0x34a5a8,_0x2691cf[_0xc8e6('0x51')])[_0xc8e6('0x1a')](function(_0x5342cd){_0x32bc05=_0x5342cd;logger[_0xc8e6('0xe')](_0xc8e6('0x52'),_0x32bc05['id']);return getEndUser(_0x34a5a8,_0x3ec356[_0xc8e6('0x69')],_0x3ec356[_0xc8e6('0x6a')]);})[_0xc8e6('0x1a')](function(_0x409a17){_0x55d889=_0x409a17;logger[_0xc8e6('0xe')](_0xc8e6('0x6b'),_0x55d889['id']);return getTicket(_0x34a5a8,_0x32bc05,_0x55d889,_0x509989,_0x3ec356);})[_0xc8e6('0x1a')](function(_0x3efafe){if(_0x3efafe){logger['info'](_0xc8e6('0x55'),_0x3efafe['id']);switch(_0x34a5a8['type']){case _0xc8e6('0x56'):logger['info'](_0xc8e6('0x67'),_0xc8e6('0x58'));return request({'uri':util[_0xc8e6('0x10')](_0xc8e6('0x59'),_0x34a5a8[_0xc8e6('0x12')],_0x32bc05['id'],_0x3efafe['id']),'method':'POST'});case _0xc8e6('0x5a'):logger[_0xc8e6('0xe')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc8e6('0x10')](_0xc8e6('0x5c'),_0x2691cf[_0xc8e6('0x15')]),'trigger:browser:url',{'uri':util['format'](_0xc8e6('0x6c'),_0x34a5a8[_0xc8e6('0x12')][_0xc8e6('0x5e')]('/api/v2',''),_0x3efafe['id'])});break;default:logger[_0xc8e6('0x5f')]('[OUTBOUND]',_0xc8e6('0x60'));}}})[_0xc8e6('0x61')](function(_0x2b0237){logger[_0xc8e6('0x5f')](_0xc8e6('0x6d'),util[_0xc8e6('0x63')](_0x2b0237,{'showHidden':!![],'depth':null}));});};exports[_0xc8e6('0x6e')]=function(_0x3b7e66,_0x3d36ed,_0x1bc646,_0x5e0493,_0x31c4b1,_0x46a7f3){var _0x579959,_0x3a2bcd;_0x46a7f3[_0xc8e6('0x12')]=intUtil['stripTrailingSlash'](_0x46a7f3['remoteUri']);_0x46a7f3[_0xc8e6('0x4c')]=intUtil[_0xc8e6('0x4b')](_0x46a7f3[_0xc8e6('0x4c')]);if(_0x31c4b1&&_0x31c4b1[_0xc8e6('0x4d')]){logger[_0xc8e6('0xe')]('['+_0x3d36ed[_0xc8e6('0x6f')][_0xc8e6('0x70')]()+']',_0xc8e6('0x4e'));_0x3d36ed['recordingURL']=util[_0xc8e6('0x10')](_0xc8e6('0x71'),_0x46a7f3[_0xc8e6('0x4c')],_0x3d36ed[_0xc8e6('0x50')],md5(_0x3d36ed['uniqueid']));}else{_0x3d36ed[_0xc8e6('0x4f')]='';}headers['Authorization']=getAuth(_0x46a7f3);return getUser(_0x46a7f3)['then'](function(_0x5777ab){_0x579959=_0x5777ab;logger[_0xc8e6('0xe')]('The\x20User\x20ID\x20is:',_0x579959['id']);return getEndUser(_0x46a7f3,_0x3d36ed[_0xc8e6('0x53')],_0x3d36ed[_0xc8e6('0x54')]);})[_0xc8e6('0x1a')](function(_0x215a95){_0x3a2bcd=_0x215a95;logger['info'](_0xc8e6('0x6b'),_0x3a2bcd['id']);return getTicket(_0x46a7f3,_0x579959,_0x3a2bcd,_0x1bc646,_0x3d36ed);})[_0xc8e6('0x1a')](function(_0x5f19d7){if(_0x5f19d7){logger[_0xc8e6('0xe')](_0xc8e6('0x55'),_0x5f19d7['id']);}})[_0xc8e6('0x61')](function(_0x7a7825){logger[_0xc8e6('0x5f')]('['+_0x3d36ed[_0xc8e6('0x6f')]['toUpperCase']()+']'+_0xc8e6('0x72'),util[_0xc8e6('0x63')](_0x7a7825,{'showHidden':!![],'depth':null}));});};