Built motion from commit (unavailable).|2.4.18
[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 _0x0d4e=['content','toString','type','idField','custom_fields','push','variableName','customVariable','Variable','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','%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','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','stripTrailingSlash','recordingFormat','[OUTBOUND]','recordingURL','destcalleridname','Displaying\x20ticket\x20to\x20agent...','error','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','abandoned','monitor_format','[ABANDONED]','The\x20Ticket\x20ID\x20is:','[ABANDONED]\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','ticket','Getting\x20agent\x20with\x20email','%s/search.json','count','Agent\x20found!','results','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','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','token','%s/token:%s','username','Basic\x20%s','base64','[HTTP]','stringify','GET','forEach','nameField','customField'];(function(_0x484fba,_0x91a148){var _0x2ab031=function(_0x1f96da){while(--_0x1f96da){_0x484fba['push'](_0x484fba['shift']());}};_0x2ab031(++_0x91a148);}(_0x0d4e,0x1ca));var _0xe0d4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0d4e[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xe0d4('0x0'));var rp=require(_0xe0d4('0x1'));var md5=require(_0xe0d4('0x2'));var util=require(_0xe0d4('0x3'));var Redis=require(_0xe0d4('0x4'));var intUtil=require(_0xe0d4('0x5'));var config=require(_0xe0d4('0x6'));var logger=require(_0xe0d4('0x7'))(_0xe0d4('0x8'));config['redis']=_[_0xe0d4('0x9')](config[_0xe0d4('0xa')],{'host':_0xe0d4('0xb'),'port':0x18eb});var io=require(_0xe0d4('0xc'))(new Redis(config['redis']));function emit(_0x4a2a87,_0x312e09,_0x1ba14d){io['to'](_0x4a2a87)[_0xe0d4('0xd')](_0x312e09,_0x1ba14d);}var headers={'Content-Type':_0xe0d4('0xe'),'Accept':_0xe0d4('0xe')};function getTicket(_0x11aa34,_0x43ae3a,_0xb36d72,_0x1dd35d,_0x215d49){logger[_0xe0d4('0xf')](_0xe0d4('0x10'));return request({'uri':util[_0xe0d4('0x11')]('%s/tickets.json',_0x11aa34[_0xe0d4('0x12')]),'method':_0xe0d4('0x13'),'body':{'ticket':_[_0xe0d4('0x14')]({'requester_id':_0xb36d72['id'],'submitter_id':_0x43ae3a?_0x43ae3a['id']:undefined,'assignee_id':_0x43ae3a?_0x43ae3a['id']:undefined,'tags':getTags(_0x1dd35d[_0xe0d4('0x15')],_0xe0d4('0x16')),'subject':intUtil[_0xe0d4('0x17')](_0x1dd35d[_0xe0d4('0x18')],_0x215d49,'\x20'),'description':intUtil[_0xe0d4('0x17')](_0x1dd35d[_0xe0d4('0x19')],_0x215d49,'\x0a'),'comment':{'public':![],'body':intUtil[_0xe0d4('0x17')](_0x1dd35d[_0xe0d4('0x19')],_0x215d49,'\x0a')}},getCustomFields(_0x1dd35d[_0xe0d4('0x1a')],_0x215d49))}})[_0xe0d4('0x1b')](function(_0x344d85){logger[_0xe0d4('0xf')]('Ticket\x20created!');return _0x344d85[_0xe0d4('0x1c')];});}function getUser(_0x3c0986,_0xe0d15b){if(intUtil['validateEmail'](_0xe0d15b)){logger['info'](_0xe0d4('0x1d'),_0xe0d15b);return request({'uri':util[_0xe0d4('0x11')](_0xe0d4('0x1e'),_0x3c0986[_0xe0d4('0x12')]),'qs':{'query':util[_0xe0d4('0x11')]('type:user\x20role:agent\x20email:%s',_0xe0d15b)}})[_0xe0d4('0x1b')](function(_0x13192c){if(_0x13192c[_0xe0d4('0x1f')]){logger[_0xe0d4('0xf')](_0xe0d4('0x20'));return _['find'](_0x13192c[_0xe0d4('0x21')],{'email':_0xe0d15b,'role':'agent'});}else{logger['info'](_0xe0d4('0x22'));return request({'uri':util[_0xe0d4('0x11')](_0xe0d4('0x23'),_0x3c0986['remoteUri'])})[_0xe0d4('0x1b')](function(_0x4527e9){logger[_0xe0d4('0xf')](_0xe0d4('0x24'));return _0x4527e9[_0xe0d4('0x25')];});}});}else{logger[_0xe0d4('0xf')](_0xe0d4('0x22'));return request({'uri':util[_0xe0d4('0x11')](_0xe0d4('0x23'),_0x3c0986['remoteUri'])})[_0xe0d4('0x1b')](function(_0x24ef5e){logger['info'](_0xe0d4('0x24'));return _0x24ef5e['user'];});}}function getEndUser(_0x13c108,_0x9fc63d,_0x2229d0){logger['info'](_0xe0d4('0x26'),_0x2229d0);return request({'uri':util['format']('%s/search.json',_0x13c108[_0xe0d4('0x12')]),'qs':{'query':util[_0xe0d4('0x11')](_0xe0d4('0x27'),_0x2229d0)}})[_0xe0d4('0x1b')](function(_0x136ecd){var _0x207c71;if(_0x136ecd[_0xe0d4('0x21')][_0xe0d4('0x28')]){_0x136ecd[_0xe0d4('0x21')]=_[_0xe0d4('0x29')](_0x136ecd[_0xe0d4('0x21')],{'suspended':![],'role':_0xe0d4('0x2a')});if(_0x136ecd[_0xe0d4('0x21')][_0xe0d4('0x28')]){_0x207c71=_['first'](_0x136ecd[_0xe0d4('0x21')]);}}if(_0x207c71){logger['info'](_0xe0d4('0x2b'));return _0x207c71;}else{logger[_0xe0d4('0xf')](_0xe0d4('0x2c'));return request({'uri':util[_0xe0d4('0x11')](_0xe0d4('0x2d'),_0x13c108[_0xe0d4('0x12')]),'method':_0xe0d4('0x13'),'body':{'user':{'role':_0xe0d4('0x2a'),'name':util[_0xe0d4('0x11')](_0xe0d4('0x2e'),_0x9fc63d||_0x2229d0),'phone':_0x2229d0}}})[_0xe0d4('0x1b')](function(_0x7b9296){logger['info'](_0xe0d4('0x2f'));return _0x7b9296['user'];});}});}function getAuth(_0x3ce010){var _0x4f11f9;if(_0x3ce010[_0xe0d4('0x30')]===_0xe0d4('0x31')){_0x4f11f9=util[_0xe0d4('0x11')](_0xe0d4('0x32'),_0x3ce010['username'],_0x3ce010[_0xe0d4('0x31')]);}else if(_0x3ce010[_0xe0d4('0x30')]===_0xe0d4('0x33')){_0x4f11f9=util[_0xe0d4('0x11')](_0xe0d4('0x34'),_0x3ce010[_0xe0d4('0x35')],_0x3ce010[_0xe0d4('0x33')]);}return util[_0xe0d4('0x11')](_0xe0d4('0x36'),new Buffer(_0x4f11f9)['toString'](_0xe0d4('0x37')));}function request(_0x619eb2){logger['debug'](_0xe0d4('0x38'),JSON[_0xe0d4('0x39')](_0x619eb2));return rp(_[_0xe0d4('0x9')](_0x619eb2,{'method':_0xe0d4('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x354753,_0x1da547){var _0x48a29d=[];if(_0x354753&&_0x354753[_0xe0d4('0x28')]>0x0){_0x48a29d=_['map'](_0x354753,_0x1da547);}return _0x48a29d;}function getCustomFields(_0x5cbdb2,_0x5493de){var _0xc86f0e=[];var _0x349034={'custom_fields':[]};if(_0x5cbdb2[_0xe0d4('0x28')]>0x0){_[_0xe0d4('0x3b')](_0x5cbdb2,function(_0x190540){if(_0x190540['type']==='string'&&_0x190540[_0xe0d4('0x3c')]&&!_0x190540[_0xe0d4('0x3d')]){_0x349034[_0x190540[_0xe0d4('0x3c')]['toLowerCase']()]=_0x190540[_0xe0d4('0x3e')][_0xe0d4('0x3f')]();}else if(_0x190540[_0xe0d4('0x40')]==='string'&&_0x190540[_0xe0d4('0x41')]&&_0x190540[_0xe0d4('0x3d')]){_0x349034[_0xe0d4('0x42')][_0xe0d4('0x43')]({'id':_0x190540[_0xe0d4('0x41')],'value':_0x190540[_0xe0d4('0x3e')][_0xe0d4('0x3f')]()});}else if(_0x190540[_0xe0d4('0x40')]==='variable'&&_0x190540[_0xe0d4('0x44')]&&_0x190540[_0xe0d4('0x41')]&&_0x190540[_0xe0d4('0x3d')]){_0x5493de[_0x190540[_0xe0d4('0x44')]]&&_0x349034[_0xe0d4('0x42')][_0xe0d4('0x43')]({'id':_0x190540['idField'],'value':_0x5493de[_0x190540[_0xe0d4('0x44')]]['toString']()});}else if(_0x190540[_0xe0d4('0x40')]===_0xe0d4('0x45')&&_0x190540['Variable']&&_0x190540['Variable'][_0xe0d4('0x16')]&&_0x190540[_0xe0d4('0x41')]&&_0x190540[_0xe0d4('0x3d')]){_0x5493de[_0x190540[_0xe0d4('0x46')][_0xe0d4('0x16')]['toLowerCase']()]&&_0x349034[_0xe0d4('0x42')][_0xe0d4('0x43')]({'id':_0x190540[_0xe0d4('0x41')],'value':_0x5493de[_0x190540[_0xe0d4('0x46')][_0xe0d4('0x16')]['toLowerCase']()][_0xe0d4('0x3f')]()});}});}return _0x349034;}exports['queue']=function(_0x1e5c62,_0x26ef5d,_0xf109c8,_0x792655,_0x277f56,_0x43e27d){var _0x53b91f,_0x5d69af;_0x43e27d[_0xe0d4('0x12')]=intUtil['stripTrailingSlash'](_0x43e27d[_0xe0d4('0x12')]);_0x43e27d[_0xe0d4('0x47')]=intUtil['stripTrailingSlash'](_0x43e27d['serverUrl']);if(_0x277f56&&_0x277f56['monitor_format']){logger[_0xe0d4('0xf')](_0xe0d4('0x48'),_0xe0d4('0x49'));_0x26ef5d['recordingURL']=util[_0xe0d4('0x11')](_0xe0d4('0x4a'),_0x43e27d[_0xe0d4('0x47')],_0x26ef5d[_0xe0d4('0x4b')],md5(_0x26ef5d[_0xe0d4('0x4b')]));}else{_0x26ef5d['recordingURL']='';}headers[_0xe0d4('0x4c')]=getAuth(_0x43e27d);return getUser(_0x43e27d,_0x792655[_0xe0d4('0x4d')])[_0xe0d4('0x1b')](function(_0x4f822c){_0x53b91f=_0x4f822c;logger['info'](_0xe0d4('0x4e'),_0x53b91f['id']);return getEndUser(_0x43e27d,_0x26ef5d[_0xe0d4('0x4f')],_0x26ef5d[_0xe0d4('0x50')]);})[_0xe0d4('0x1b')](function(_0x16ca40){_0x5d69af=_0x16ca40;logger['info'](_0xe0d4('0x51'),_0x5d69af['id']);return getTicket(_0x43e27d,_0x53b91f,_0x5d69af,_0xf109c8,_0x26ef5d);})[_0xe0d4('0x1b')](function(_0x27c02f){if(_0x27c02f){logger['info']('The\x20Ticket\x20ID\x20is:',_0x27c02f['id']);switch(_0x43e27d[_0xe0d4('0x40')]){case'integrationTab':logger[_0xe0d4('0xf')](_0xe0d4('0x48'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xe0d4('0x11')](_0xe0d4('0x52'),_0x43e27d['remoteUri'],_0x53b91f['id'],_0x27c02f['id']),'method':_0xe0d4('0x13')});case _0xe0d4('0x53'):logger[_0xe0d4('0xf')](_0xe0d4('0x48'),_0xe0d4('0x54'));emit(util[_0xe0d4('0x11')](_0xe0d4('0x55'),_0x792655[_0xe0d4('0x16')]),_0xe0d4('0x56'),{'uri':util[_0xe0d4('0x11')](_0xe0d4('0x57'),_0x43e27d[_0xe0d4('0x12')],_0x27c02f['id'])});break;default:logger['error'](_0xe0d4('0x48'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xe0d4('0x58')](function(_0x538dad){logger['error'](_0xe0d4('0x59'),util[_0xe0d4('0x5a')](_0x538dad,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x953ffd,_0xdefc74,_0x16017f,_0x5bbbe2,_0x53f1d2,_0x1523ba,_0xd72f6e){var _0x46e805,_0x4b5243;_0x1523ba[_0xe0d4('0x12')]=intUtil[_0xe0d4('0x5b')](_0x1523ba[_0xe0d4('0x12')]);_0x1523ba[_0xe0d4('0x47')]=intUtil[_0xe0d4('0x5b')](_0x1523ba['serverUrl']);if(_0xd72f6e&&_0xd72f6e[_0xe0d4('0x5c')]&&_0xd72f6e[_0xe0d4('0x5c')]!=='none'){logger[_0xe0d4('0xf')](_0xe0d4('0x5d'),_0xe0d4('0x49'));_0xdefc74[_0xe0d4('0x5e')]=util[_0xe0d4('0x11')](_0xe0d4('0x4a'),_0x1523ba[_0xe0d4('0x47')],_0xdefc74['uniqueid'],md5(_0xdefc74[_0xe0d4('0x4b')]));}headers[_0xe0d4('0x4c')]=getAuth(_0x1523ba);return getUser(_0x1523ba,_0x5bbbe2[_0xe0d4('0x4d')])[_0xe0d4('0x1b')](function(_0x52ce56){_0x46e805=_0x52ce56;logger[_0xe0d4('0xf')]('The\x20User\x20ID\x20is:',_0x46e805['id']);return getEndUser(_0x1523ba,_0xdefc74[_0xe0d4('0x5f')],_0xdefc74['destcalleridnum']);})[_0xe0d4('0x1b')](function(_0x48f1dc){_0x4b5243=_0x48f1dc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x4b5243['id']);return getTicket(_0x1523ba,_0x46e805,_0x4b5243,_0x16017f,_0xdefc74);})[_0xe0d4('0x1b')](function(_0x5beaa6){if(_0x5beaa6){logger[_0xe0d4('0xf')]('The\x20Ticket\x20ID\x20is:',_0x5beaa6['id']);switch(_0x1523ba[_0xe0d4('0x40')]){case'integrationTab':logger[_0xe0d4('0xf')](_0xe0d4('0x5d'),_0xe0d4('0x60'));return request({'uri':util[_0xe0d4('0x11')](_0xe0d4('0x52'),_0x1523ba['remoteUri'],_0x46e805['id'],_0x5beaa6['id']),'method':_0xe0d4('0x13')});case _0xe0d4('0x53'):logger['info'](_0xe0d4('0x5d'),_0xe0d4('0x54'));emit(util[_0xe0d4('0x11')](_0xe0d4('0x55'),_0x5bbbe2[_0xe0d4('0x16')]),_0xe0d4('0x56'),{'uri':util[_0xe0d4('0x11')](_0xe0d4('0x57'),_0x1523ba[_0xe0d4('0x12')],_0x5beaa6['id'])});break;default:logger[_0xe0d4('0x61')](_0xe0d4('0x5d'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xe0d4('0x58')](function(_0x1b7993){logger[_0xe0d4('0x61')](_0xe0d4('0x62'),util[_0xe0d4('0x5a')](_0x1b7993,{'showHidden':!![],'depth':null}));});};exports[_0xe0d4('0x63')]=function(_0x3811f5,_0x4a7dc6,_0x384923,_0xb90b9b,_0x19bd35,_0x41e231){var _0x58bb5d,_0x949f43;_0x41e231[_0xe0d4('0x12')]=intUtil[_0xe0d4('0x5b')](_0x41e231[_0xe0d4('0x12')]);_0x41e231[_0xe0d4('0x47')]=intUtil[_0xe0d4('0x5b')](_0x41e231['serverUrl']);if(_0x19bd35&&_0x19bd35[_0xe0d4('0x64')]){logger[_0xe0d4('0xf')](_0xe0d4('0x65'),'Recording\x20is\x20enabled!');_0x4a7dc6[_0xe0d4('0x5e')]=util['format'](_0xe0d4('0x4a'),_0x41e231['serverUrl'],_0x4a7dc6[_0xe0d4('0x4b')],md5(_0x4a7dc6[_0xe0d4('0x4b')]));}else{_0x4a7dc6[_0xe0d4('0x5e')]='';}headers['Authorization']=getAuth(_0x41e231);return getUser(_0x41e231)[_0xe0d4('0x1b')](function(_0x569326){_0x58bb5d=_0x569326;logger['info'](_0xe0d4('0x4e'),_0x58bb5d['id']);return getEndUser(_0x41e231,_0x4a7dc6[_0xe0d4('0x4f')],_0x4a7dc6['calleridnum']);})[_0xe0d4('0x1b')](function(_0x2454bf){_0x949f43=_0x2454bf;logger['info'](_0xe0d4('0x51'),_0x949f43['id']);return getTicket(_0x41e231,_0x58bb5d,_0x949f43,_0x384923,_0x4a7dc6);})[_0xe0d4('0x1b')](function(_0x5ab440){if(_0x5ab440){logger[_0xe0d4('0xf')](_0xe0d4('0x66'),_0x5ab440['id']);}})[_0xe0d4('0x58')](function(_0x241b48){logger['error'](_0xe0d4('0x67'),util[_0xe0d4('0x5a')](_0x241b48,{'showHidden':!![],'depth':null}));});};