Built motion from commit (unavailable).|2.5.14
[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 _0x5646=['[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','type:user\x20role:end-user\x20phone:%s','end-user','length','first','Enduser\x20found!','%s/users.json','Enduser\x20created.','authType','password','%s:%s','username','%s/token:%s','token','toString','debug','[HTTP]','stringify','GET','map','forEach','type','string','nameField','customField','toLowerCase','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Authorization','email','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...'];(function(_0xa7c20e,_0x106202){var _0x53cddf=function(_0x2410ae){while(--_0x2410ae){_0xa7c20e['push'](_0xa7c20e['shift']());}};_0x53cddf(++_0x106202);}(_0x5646,0x1b8));var _0x6564=function(_0x2b4448,_0x5bcc69){_0x2b4448=_0x2b4448-0x0;var _0xb4b465=_0x5646[_0x2b4448];return _0xb4b465;};'use strict';var _=require(_0x6564('0x0'));var rp=require(_0x6564('0x1'));var md5=require(_0x6564('0x2'));var util=require(_0x6564('0x3'));var Redis=require(_0x6564('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x6564('0x5'));config[_0x6564('0x6')]=_[_0x6564('0x7')](config['redis'],{'host':_0x6564('0x8'),'port':0x18eb});var io=require(_0x6564('0x9'))(new Redis(config[_0x6564('0x6')]));function emit(_0x296800,_0x308026,_0x4b6c9f){io['to'](_0x296800)['emit'](_0x308026,_0x4b6c9f);}var headers={'Content-Type':_0x6564('0xa'),'Accept':'application/json'};function getTicket(_0x4826cf,_0x3d10c2,_0x5da893,_0x5d13fb,_0x12d7d2){logger[_0x6564('0xb')](_0x6564('0xc'));return request({'uri':util[_0x6564('0xd')](_0x6564('0xe'),_0x4826cf[_0x6564('0xf')]),'method':_0x6564('0x10'),'body':{'ticket':_[_0x6564('0x11')]({'requester_id':_0x5da893['id'],'submitter_id':_0x3d10c2?_0x3d10c2['id']:undefined,'assignee_id':_0x3d10c2?_0x3d10c2['id']:undefined,'tags':getTags(_0x5d13fb['Tags'],'name'),'subject':intUtil[_0x6564('0x12')](_0x5d13fb['Subjects'],_0x12d7d2,'\x20'),'description':intUtil['getString'](_0x5d13fb[_0x6564('0x13')],_0x12d7d2,'\x0a'),'comment':{'public':![],'body':intUtil[_0x6564('0x12')](_0x5d13fb[_0x6564('0x13')],_0x12d7d2,'\x0a')}},getCustomFields(_0x5d13fb[_0x6564('0x14')],_0x12d7d2))}})[_0x6564('0x15')](function(_0x3c69a2){logger['info'](_0x6564('0x16'));return _0x3c69a2[_0x6564('0x17')];});}function getUser(_0x509330,_0x42811a){if(intUtil[_0x6564('0x18')](_0x42811a)){logger[_0x6564('0xb')](_0x6564('0x19'),_0x42811a);return request({'uri':util[_0x6564('0xd')](_0x6564('0x1a'),_0x509330[_0x6564('0xf')]),'qs':{'query':util['format'](_0x6564('0x1b'),_0x42811a)}})['then'](function(_0x376a42){if(_0x376a42[_0x6564('0x1c')]){logger[_0x6564('0xb')](_0x6564('0x1d'));return _['find'](_0x376a42[_0x6564('0x1e')],{'email':_0x42811a,'role':_0x6564('0x1f')});}else{logger[_0x6564('0xb')](_0x6564('0x20'));return request({'uri':util[_0x6564('0xd')](_0x6564('0x21'),_0x509330['remoteUri'])})[_0x6564('0x15')](function(_0xbc75bb){logger[_0x6564('0xb')](_0x6564('0x22'));return _0xbc75bb['user'];});}});}else{logger[_0x6564('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x6564('0xd')](_0x6564('0x21'),_0x509330[_0x6564('0xf')])})[_0x6564('0x15')](function(_0x9f1920){logger[_0x6564('0xb')](_0x6564('0x22'));return _0x9f1920[_0x6564('0x23')];});}}function getEndUser(_0x4c6c8e,_0x5b064d,_0x4775a2){logger[_0x6564('0xb')]('Searching\x20enduser\x20with\x20phone',_0x4775a2);return request({'uri':util['format'](_0x6564('0x1a'),_0x4c6c8e[_0x6564('0xf')]),'qs':{'query':util['format'](_0x6564('0x24'),_0x4775a2)}})[_0x6564('0x15')](function(_0x4564bc){var _0x459b27;if(_0x4564bc[_0x6564('0x1e')]['length']){_0x4564bc[_0x6564('0x1e')]=_['filter'](_0x4564bc[_0x6564('0x1e')],{'suspended':![],'role':_0x6564('0x25')});if(_0x4564bc[_0x6564('0x1e')][_0x6564('0x26')]){_0x459b27=_[_0x6564('0x27')](_0x4564bc[_0x6564('0x1e')]);}}if(_0x459b27){logger[_0x6564('0xb')](_0x6564('0x28'));return _0x459b27;}else{logger[_0x6564('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x6564('0xd')](_0x6564('0x29'),_0x4c6c8e[_0x6564('0xf')]),'method':_0x6564('0x10'),'body':{'user':{'role':_0x6564('0x25'),'name':util[_0x6564('0xd')]('Caller\x20-\x20%s',_0x5b064d||_0x4775a2),'phone':_0x4775a2}}})[_0x6564('0x15')](function(_0x1bc8ea){logger['info'](_0x6564('0x2a'));return _0x1bc8ea['user'];});}});}function getAuth(_0x4007b0){var _0x1bfa1f;if(_0x4007b0[_0x6564('0x2b')]===_0x6564('0x2c')){_0x1bfa1f=util['format'](_0x6564('0x2d'),_0x4007b0[_0x6564('0x2e')],_0x4007b0[_0x6564('0x2c')]);}else if(_0x4007b0[_0x6564('0x2b')]==='token'){_0x1bfa1f=util[_0x6564('0xd')](_0x6564('0x2f'),_0x4007b0[_0x6564('0x2e')],_0x4007b0[_0x6564('0x30')]);}return util[_0x6564('0xd')]('Basic\x20%s',new Buffer(_0x1bfa1f)[_0x6564('0x31')]('base64'));}function request(_0x5d1fba){logger[_0x6564('0x32')](_0x6564('0x33'),JSON[_0x6564('0x34')](_0x5d1fba));return rp(_[_0x6564('0x7')](_0x5d1fba,{'method':_0x6564('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x363ca9,_0x329ee8){var _0x2b6d8f=[];if(_0x363ca9&&_0x363ca9[_0x6564('0x26')]>0x0){_0x2b6d8f=_[_0x6564('0x36')](_0x363ca9,_0x329ee8);}return _0x2b6d8f;}function getCustomFields(_0x1b6c43,_0x140cfa){var _0x2952ed=[];var _0x49b95d={'custom_fields':[]};if(_0x1b6c43['length']>0x0){_[_0x6564('0x37')](_0x1b6c43,function(_0x521621){if(_0x521621[_0x6564('0x38')]===_0x6564('0x39')&&_0x521621[_0x6564('0x3a')]&&!_0x521621[_0x6564('0x3b')]){_0x49b95d[_0x521621[_0x6564('0x3a')][_0x6564('0x3c')]()]=_0x521621[_0x6564('0x3d')]['toString']();}else if(_0x521621[_0x6564('0x38')]===_0x6564('0x39')&&_0x521621[_0x6564('0x3e')]&&_0x521621[_0x6564('0x3b')]){_0x49b95d[_0x6564('0x3f')][_0x6564('0x40')]({'id':_0x521621[_0x6564('0x3e')],'value':_0x521621[_0x6564('0x3d')][_0x6564('0x31')]()});}else if(_0x521621[_0x6564('0x38')]===_0x6564('0x41')&&_0x521621[_0x6564('0x42')]&&_0x521621[_0x6564('0x3e')]&&_0x521621[_0x6564('0x3b')]){_0x140cfa[_0x521621[_0x6564('0x42')]]&&_0x49b95d['custom_fields']['push']({'id':_0x521621[_0x6564('0x3e')],'value':_0x140cfa[_0x521621[_0x6564('0x42')]][_0x6564('0x31')]()});}else if(_0x521621['type']===_0x6564('0x43')&&_0x521621['Variable']&&_0x521621[_0x6564('0x44')]['name']&&_0x521621[_0x6564('0x3e')]&&_0x521621[_0x6564('0x3b')]){_0x140cfa[_0x521621[_0x6564('0x44')][_0x6564('0x45')][_0x6564('0x3c')]()]&&_0x49b95d[_0x6564('0x3f')][_0x6564('0x40')]({'id':_0x521621[_0x6564('0x3e')],'value':_0x140cfa[_0x521621['Variable'][_0x6564('0x45')][_0x6564('0x3c')]()][_0x6564('0x31')]()});}});}return _0x49b95d;}exports[_0x6564('0x46')]=function(_0x568118,_0x2d1ae2,_0x400e04,_0x1fcf8d,_0x4a02d1,_0x5bc47f){var _0x31da2f,_0x58b77b;_0x5bc47f[_0x6564('0xf')]=intUtil[_0x6564('0x47')](_0x5bc47f[_0x6564('0xf')]);_0x5bc47f[_0x6564('0x48')]=intUtil[_0x6564('0x47')](_0x5bc47f['serverUrl']);if(_0x4a02d1&&_0x4a02d1['monitor_format']){logger['info'](_0x6564('0x49'),_0x6564('0x4a'));_0x2d1ae2[_0x6564('0x4b')]=util[_0x6564('0xd')](_0x6564('0x4c'),_0x5bc47f[_0x6564('0x48')],_0x2d1ae2[_0x6564('0x4d')],md5(_0x2d1ae2[_0x6564('0x4d')]));}else{_0x2d1ae2[_0x6564('0x4b')]='';}headers['Authorization']=getAuth(_0x5bc47f);return getUser(_0x5bc47f,_0x1fcf8d['email'])[_0x6564('0x15')](function(_0x16cee4){_0x31da2f=_0x16cee4;logger[_0x6564('0xb')](_0x6564('0x4e'),_0x31da2f['id']);return getEndUser(_0x5bc47f,_0x2d1ae2['calleridname'],_0x2d1ae2['calleridnum']);})['then'](function(_0x1c7920){_0x58b77b=_0x1c7920;logger[_0x6564('0xb')](_0x6564('0x4f'),_0x58b77b['id']);return getTicket(_0x5bc47f,_0x31da2f,_0x58b77b,_0x400e04,_0x2d1ae2);})[_0x6564('0x15')](function(_0x2e6c7f){if(_0x2e6c7f){logger[_0x6564('0xb')](_0x6564('0x50'),_0x2e6c7f['id']);switch(_0x5bc47f[_0x6564('0x38')]){case'integrationTab':logger['info'](_0x6564('0x49'),_0x6564('0x51'));return request({'uri':util['format'](_0x6564('0x52'),_0x5bc47f['remoteUri'],_0x31da2f['id'],_0x2e6c7f['id']),'method':_0x6564('0x10')});case _0x6564('0x53'):logger[_0x6564('0xb')](_0x6564('0x49'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x6564('0x54'),_0x1fcf8d[_0x6564('0x45')]),_0x6564('0x55'),{'uri':util[_0x6564('0xd')](_0x6564('0x56'),_0x5bc47f[_0x6564('0xf')]['replace'](_0x6564('0x57'),''),_0x2e6c7f['id'])});break;default:logger[_0x6564('0x58')](_0x6564('0x49'),_0x6564('0x59'));}}})[_0x6564('0x5a')](function(_0x1acccb){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x1acccb,{'showHidden':!![],'depth':null}));});};exports[_0x6564('0x5b')]=function(_0x4d0002,_0x4f8771,_0x175bce,_0x40001d,_0x20ce34,_0xa1e2c6,_0x114e11){var _0x5f5079,_0x46baac;_0xa1e2c6[_0x6564('0xf')]=intUtil[_0x6564('0x47')](_0xa1e2c6[_0x6564('0xf')]);_0xa1e2c6[_0x6564('0x48')]=intUtil[_0x6564('0x47')](_0xa1e2c6[_0x6564('0x48')]);if(_0x114e11&&_0x114e11['recordingFormat']&&_0x114e11[_0x6564('0x5c')]!==_0x6564('0x5d')){logger[_0x6564('0xb')](_0x6564('0x5e'),_0x6564('0x4a'));_0x4f8771[_0x6564('0x4b')]=util[_0x6564('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xa1e2c6[_0x6564('0x48')],_0x4f8771[_0x6564('0x4d')],md5(_0x4f8771[_0x6564('0x4d')]));}headers[_0x6564('0x5f')]=getAuth(_0xa1e2c6);return getUser(_0xa1e2c6,_0x40001d[_0x6564('0x60')])[_0x6564('0x15')](function(_0x3dc2fe){_0x5f5079=_0x3dc2fe;logger['info'](_0x6564('0x4e'),_0x5f5079['id']);return getEndUser(_0xa1e2c6,_0x4f8771[_0x6564('0x61')],_0x4f8771[_0x6564('0x62')]);})[_0x6564('0x15')](function(_0xa3336a){_0x46baac=_0xa3336a;logger[_0x6564('0xb')](_0x6564('0x4f'),_0x46baac['id']);return getTicket(_0xa1e2c6,_0x5f5079,_0x46baac,_0x175bce,_0x4f8771);})[_0x6564('0x15')](function(_0x4a8772){if(_0x4a8772){logger[_0x6564('0xb')](_0x6564('0x50'),_0x4a8772['id']);switch(_0xa1e2c6['type']){case'integrationTab':logger[_0x6564('0xb')](_0x6564('0x5e'),_0x6564('0x51'));return request({'uri':util[_0x6564('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0xa1e2c6[_0x6564('0xf')],_0x5f5079['id'],_0x4a8772['id']),'method':_0x6564('0x10')});case _0x6564('0x53'):logger[_0x6564('0xb')](_0x6564('0x5e'),_0x6564('0x63'));emit(util[_0x6564('0xd')](_0x6564('0x54'),_0x40001d['name']),_0x6564('0x55'),{'uri':util[_0x6564('0xd')](_0x6564('0x56'),_0xa1e2c6[_0x6564('0xf')]['replace'](_0x6564('0x57'),''),_0x4a8772['id'])});break;default:logger[_0x6564('0x58')](_0x6564('0x5e'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x6564('0x5a')](function(_0x3609f6){logger[_0x6564('0x58')](_0x6564('0x64'),util[_0x6564('0x65')](_0x3609f6,{'showHidden':!![],'depth':null}));});};exports[_0x6564('0x66')]=function(_0x10a730,_0x4ebfb4,_0x3dd39c,_0x4a348f,_0x5e8dcf,_0x21d855){var _0x42b149,_0x4d0f32;_0x21d855[_0x6564('0xf')]=intUtil[_0x6564('0x47')](_0x21d855[_0x6564('0xf')]);_0x21d855[_0x6564('0x48')]=intUtil['stripTrailingSlash'](_0x21d855[_0x6564('0x48')]);if(_0x5e8dcf&&_0x5e8dcf[_0x6564('0x67')]){logger[_0x6564('0xb')]('['+_0x4ebfb4[_0x6564('0x68')][_0x6564('0x69')]()+']',_0x6564('0x4a'));_0x4ebfb4[_0x6564('0x4b')]=util[_0x6564('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x21d855[_0x6564('0x48')],_0x4ebfb4['uniqueid'],md5(_0x4ebfb4[_0x6564('0x4d')]));}else{_0x4ebfb4['recordingURL']='';}headers[_0x6564('0x5f')]=getAuth(_0x21d855);return getUser(_0x21d855)[_0x6564('0x15')](function(_0x4fea1b){_0x42b149=_0x4fea1b;logger[_0x6564('0xb')](_0x6564('0x4e'),_0x42b149['id']);return getEndUser(_0x21d855,_0x4ebfb4['calleridname'],_0x4ebfb4[_0x6564('0x6a')]);})[_0x6564('0x15')](function(_0x31d880){_0x4d0f32=_0x31d880;logger[_0x6564('0xb')](_0x6564('0x4f'),_0x4d0f32['id']);return getTicket(_0x21d855,_0x42b149,_0x4d0f32,_0x3dd39c,_0x4ebfb4);})[_0x6564('0x15')](function(_0x1f9af0){if(_0x1f9af0){logger[_0x6564('0xb')]('The\x20Ticket\x20ID\x20is:',_0x1f9af0['id']);}})['catch'](function(_0x53ad39){logger[_0x6564('0x58')]('['+_0x4ebfb4[_0x6564('0x68')][_0x6564('0x69')]()+']'+_0x6564('0x6b'),util[_0x6564('0x65')](_0x53ad39,{'showHidden':!![],'depth':null}));});};