Built motion from commit d301b742.|2.6.29
[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 _0x3313=['/api/v2','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','calleridname','\x20Error\x20running\x20Zendesk\x20integration','md5','util','ioredis','./util','../../../../config/logger','zendesk','defaults','redis','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','%s/users/me.json','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','authType','%s/token:%s','token','Basic\x20%s','toString','base64','[HTTP]','stringify','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','includes','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%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','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent...'];(function(_0x37f5a3,_0x2d1bd0){var _0x1ce2ca=function(_0x126d29){while(--_0x126d29){_0x37f5a3['push'](_0x37f5a3['shift']());}};_0x1ce2ca(++_0x2d1bd0);}(_0x3313,0x77));var _0x3331=function(_0x4aa2cf,_0x3f87cf){_0x4aa2cf=_0x4aa2cf-0x0;var _0x4a3813=_0x3313[_0x4aa2cf];return _0x4a3813;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x3331('0x0'));var util=require(_0x3331('0x1'));var Redis=require(_0x3331('0x2'));var intUtil=require(_0x3331('0x3'));var config=require('../../../../config/environment');var logger=require(_0x3331('0x4'))(_0x3331('0x5'));config['redis']=_[_0x3331('0x6')](config[_0x3331('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x3331('0x8'))(new Redis(config['redis']));function emit(_0x34e396,_0x205bdf,_0x4ce87e){io['to'](_0x34e396)['emit'](_0x205bdf,_0x4ce87e);}var headers={'Content-Type':_0x3331('0x9'),'Accept':'application/json'};function getTicket(_0x2f865a,_0xac2532,_0x494dd6,_0xbf83ca,_0x209795){logger[_0x3331('0xa')](_0x3331('0xb'));return request({'uri':util[_0x3331('0xc')](_0x3331('0xd'),_0x2f865a[_0x3331('0xe')]),'method':_0x3331('0xf'),'body':{'ticket':_[_0x3331('0x10')]({'requester_id':_0x494dd6['id'],'submitter_id':_0xac2532?_0xac2532['id']:undefined,'assignee_id':_0xac2532?_0xac2532['id']:undefined,'tags':getTags(_0xbf83ca[_0x3331('0x11')],_0x3331('0x12')),'subject':intUtil[_0x3331('0x13')](_0xbf83ca[_0x3331('0x14')],_0x209795,'\x20'),'description':intUtil[_0x3331('0x13')](_0xbf83ca[_0x3331('0x15')],_0x209795,'\x0a'),'comment':{'public':![],'body':intUtil[_0x3331('0x13')](_0xbf83ca[_0x3331('0x15')],_0x209795,'\x0a')}},getCustomFields(_0xbf83ca['Fields'],_0x209795))}})[_0x3331('0x16')](function(_0x135613){logger[_0x3331('0xa')](_0x3331('0x17'));return _0x135613[_0x3331('0x18')];});}function getUser(_0x4c15a6,_0xe31d54){if(intUtil[_0x3331('0x19')](_0xe31d54)){logger[_0x3331('0xa')](_0x3331('0x1a'),_0xe31d54);return request({'uri':util[_0x3331('0xc')](_0x3331('0x1b'),_0x4c15a6[_0x3331('0xe')]),'qs':{'query':util[_0x3331('0xc')](_0x3331('0x1c'),_0xe31d54)}})[_0x3331('0x16')](function(_0x52b225){if(_0x52b225[_0x3331('0x1d')]){logger[_0x3331('0xa')](_0x3331('0x1e'));return _[_0x3331('0x1f')](_0x52b225[_0x3331('0x20')],{'email':_0xe31d54,'role':_0x3331('0x21')});}else{logger[_0x3331('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x3331('0x22'),_0x4c15a6[_0x3331('0xe')])})[_0x3331('0x16')](function(_0x46818e){logger[_0x3331('0xa')]('Admin\x20account\x20selected.');return _0x46818e['user'];});}});}else{logger['info'](_0x3331('0x23'));return request({'uri':util['format']('%s/users/me.json',_0x4c15a6['remoteUri'])})['then'](function(_0x4dcebe){logger[_0x3331('0xa')](_0x3331('0x24'));return _0x4dcebe[_0x3331('0x25')];});}}function getEndUser(_0x47986e,_0x42cfa6,_0x1054af){logger[_0x3331('0xa')](_0x3331('0x26'),_0x1054af);return request({'uri':util[_0x3331('0xc')](_0x3331('0x1b'),_0x47986e[_0x3331('0xe')]),'qs':{'query':util[_0x3331('0xc')](_0x3331('0x27'),_0x1054af)}})[_0x3331('0x16')](function(_0x30a9ed){var _0x4e1206;if(_0x30a9ed[_0x3331('0x20')][_0x3331('0x28')]){_0x30a9ed['results']=_[_0x3331('0x29')](_0x30a9ed[_0x3331('0x20')],{'suspended':![],'role':_0x3331('0x2a')});if(_0x30a9ed[_0x3331('0x20')][_0x3331('0x28')]){_0x4e1206=_[_0x3331('0x2b')](_0x30a9ed['results']);}}if(_0x4e1206){logger[_0x3331('0xa')]('Enduser\x20found!');return _0x4e1206;}else{logger[_0x3331('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x3331('0xc')](_0x3331('0x2c'),_0x47986e[_0x3331('0xe')]),'method':_0x3331('0xf'),'body':{'user':{'role':'end-user','name':util['format'](_0x3331('0x2d'),_0x42cfa6||_0x1054af),'phone':_0x1054af}}})[_0x3331('0x16')](function(_0x377d78){logger[_0x3331('0xa')](_0x3331('0x2e'));return _0x377d78['user'];});}});}function getAuth(_0x3d58e4){var _0x418470;if(_0x3d58e4['authType']===_0x3331('0x2f')){_0x418470=util[_0x3331('0xc')](_0x3331('0x30'),_0x3d58e4[_0x3331('0x31')],_0x3d58e4['password']);}else if(_0x3d58e4[_0x3331('0x32')]==='token'){_0x418470=util[_0x3331('0xc')](_0x3331('0x33'),_0x3d58e4[_0x3331('0x31')],_0x3d58e4[_0x3331('0x34')]);}return util[_0x3331('0xc')](_0x3331('0x35'),new Buffer(_0x418470)[_0x3331('0x36')](_0x3331('0x37')));}function request(_0x4bbebb){logger['debug'](_0x3331('0x38'),JSON[_0x3331('0x39')](_0x4bbebb));return rp(_[_0x3331('0x6')](_0x4bbebb,{'method':_0x3331('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x4d7882,_0x3ff562){var _0x402848=[];if(_0x4d7882&&_0x4d7882[_0x3331('0x28')]>0x0){_0x402848=_[_0x3331('0x3b')](_0x4d7882,_0x3ff562);}return _0x402848;}function getCustomFields(_0x38ce24,_0x5280a3){var _0x432f2d=[];var _0x4e1c90={'custom_fields':[]};if(_0x38ce24['length']>0x0){_[_0x3331('0x3c')](_0x38ce24,function(_0x169bc9){if(_['includes']([_0x3331('0x3d'),_0x3331('0x3e')],_0x169bc9[_0x3331('0x3f')])&&_0x169bc9[_0x3331('0x40')]&&!_0x169bc9[_0x3331('0x41')]){_0x4e1c90[_0x169bc9[_0x3331('0x40')][_0x3331('0x42')]()]=_0x169bc9[_0x3331('0x43')][_0x3331('0x36')]();}else if(_[_0x3331('0x44')](['string',_0x3331('0x3e')],_0x169bc9['type'])&&_0x169bc9[_0x3331('0x45')]&&_0x169bc9[_0x3331('0x41')]){_0x4e1c90['custom_fields'][_0x3331('0x46')]({'id':_0x169bc9[_0x3331('0x45')],'value':_0x169bc9[_0x3331('0x43')][_0x3331('0x36')]()});}else if(_0x169bc9[_0x3331('0x3f')]===_0x3331('0x47')&&_0x169bc9[_0x3331('0x48')]&&_0x169bc9[_0x3331('0x45')]&&_0x169bc9[_0x3331('0x41')]){_0x5280a3[_0x169bc9[_0x3331('0x48')]]&&_0x4e1c90['custom_fields']['push']({'id':_0x169bc9['idField'],'value':_0x5280a3[_0x169bc9[_0x3331('0x48')]]['toString']()});}else if(_0x169bc9[_0x3331('0x3f')]===_0x3331('0x49')&&_0x169bc9[_0x3331('0x4a')]&&_0x169bc9[_0x3331('0x4a')][_0x3331('0x12')]&&_0x169bc9[_0x3331('0x45')]&&_0x169bc9['customField']){_0x5280a3[_0x169bc9[_0x3331('0x4a')][_0x3331('0x12')][_0x3331('0x42')]()]&&_0x4e1c90['custom_fields']['push']({'id':_0x169bc9[_0x3331('0x45')],'value':_0x5280a3[_0x169bc9[_0x3331('0x4a')][_0x3331('0x12')][_0x3331('0x42')]()]['toString']()});}});}return _0x4e1c90;}exports[_0x3331('0x4b')]=function(_0x58bcba,_0x303c6a,_0x4a4a62,_0xb0dd5d,_0x389a68,_0xffdd08){var _0x36b5ef,_0x3b398d;_0xffdd08[_0x3331('0xe')]=intUtil[_0x3331('0x4c')](_0xffdd08[_0x3331('0xe')]);_0xffdd08['serverUrl']=intUtil[_0x3331('0x4c')](_0xffdd08[_0x3331('0x4d')]);if(_0x389a68&&_0x389a68[_0x3331('0x4e')]){logger['info'](_0x3331('0x4f'),'Recording\x20is\x20enabled!');_0x303c6a['recordingURL']=util['format'](_0x3331('0x50'),_0xffdd08['serverUrl'],_0x303c6a['uniqueid'],md5(_0x303c6a[_0x3331('0x51')]));}else{_0x303c6a[_0x3331('0x52')]='';}headers['Authorization']=getAuth(_0xffdd08);return getUser(_0xffdd08,_0xb0dd5d[_0x3331('0x53')])[_0x3331('0x16')](function(_0x5291ee){_0x36b5ef=_0x5291ee;logger['info'](_0x3331('0x54'),_0x36b5ef['id']);return getEndUser(_0xffdd08,_0x303c6a['calleridname'],_0x303c6a[_0x3331('0x55')]);})[_0x3331('0x16')](function(_0x3f409c){_0x3b398d=_0x3f409c;logger['info'](_0x3331('0x56'),_0x3b398d['id']);return getTicket(_0xffdd08,_0x36b5ef,_0x3b398d,_0x4a4a62,_0x303c6a);})['then'](function(_0x1b09f2){if(_0x1b09f2){logger[_0x3331('0xa')](_0x3331('0x57'),_0x1b09f2['id']);switch(_0xffdd08[_0x3331('0x3f')]){case _0x3331('0x58'):logger[_0x3331('0xa')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x3331('0xc')](_0x3331('0x59'),_0xffdd08[_0x3331('0xe')],_0x36b5ef['id'],_0x1b09f2['id']),'method':'POST'});case _0x3331('0x5a'):logger[_0x3331('0xa')](_0x3331('0x4f'),_0x3331('0x5b'));emit(util['format'](_0x3331('0x5c'),_0xb0dd5d[_0x3331('0x12')]),_0x3331('0x5d'),{'uri':util[_0x3331('0xc')](_0x3331('0x5e'),_0xffdd08[_0x3331('0xe')][_0x3331('0x5f')]('/api/v2',''),_0x1b09f2['id'])});break;default:logger[_0x3331('0x60')](_0x3331('0x4f'),_0x3331('0x61'));}}})[_0x3331('0x62')](function(_0x2e4ce7){logger[_0x3331('0x60')](_0x3331('0x63'),util[_0x3331('0x64')](_0x2e4ce7,{'showHidden':!![],'depth':null}));});};exports[_0x3331('0x65')]=function(_0x280efc,_0x3c3c4f,_0x276009,_0x4caf8e,_0x5b7e87,_0x361871,_0x1ea231){var _0x437967,_0x274beb;_0x361871['remoteUri']=intUtil[_0x3331('0x4c')](_0x361871['remoteUri']);_0x361871[_0x3331('0x4d')]=intUtil['stripTrailingSlash'](_0x361871['serverUrl']);if(_0x1ea231&&_0x1ea231[_0x3331('0x66')]&&_0x1ea231['recordingFormat']!==_0x3331('0x67')){logger[_0x3331('0xa')](_0x3331('0x68'),'Recording\x20is\x20enabled!');_0x3c3c4f[_0x3331('0x52')]=util[_0x3331('0xc')](_0x3331('0x50'),_0x361871[_0x3331('0x4d')],_0x3c3c4f[_0x3331('0x51')],md5(_0x3c3c4f[_0x3331('0x51')]));}headers[_0x3331('0x69')]=getAuth(_0x361871);return getUser(_0x361871,_0x4caf8e[_0x3331('0x53')])[_0x3331('0x16')](function(_0x5710e4){_0x437967=_0x5710e4;logger['info']('The\x20User\x20ID\x20is:',_0x437967['id']);return getEndUser(_0x361871,_0x3c3c4f[_0x3331('0x6a')],_0x3c3c4f[_0x3331('0x6b')]);})[_0x3331('0x16')](function(_0x2cf478){_0x274beb=_0x2cf478;logger['info'](_0x3331('0x56'),_0x274beb['id']);return getTicket(_0x361871,_0x437967,_0x274beb,_0x276009,_0x3c3c4f);})[_0x3331('0x16')](function(_0x37ce4f){if(_0x37ce4f){logger[_0x3331('0xa')]('The\x20Ticket\x20ID\x20is:',_0x37ce4f['id']);switch(_0x361871[_0x3331('0x3f')]){case _0x3331('0x58'):logger[_0x3331('0xa')](_0x3331('0x68'),_0x3331('0x6c'));return request({'uri':util[_0x3331('0xc')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x361871['remoteUri'],_0x437967['id'],_0x37ce4f['id']),'method':'POST'});case _0x3331('0x5a'):logger[_0x3331('0xa')]('[OUTBOUND]',_0x3331('0x5b'));emit(util[_0x3331('0xc')](_0x3331('0x5c'),_0x4caf8e[_0x3331('0x12')]),'trigger:browser:url',{'uri':util[_0x3331('0xc')]('%s/agent/tickets/%s',_0x361871['remoteUri'][_0x3331('0x5f')](_0x3331('0x6d'),''),_0x37ce4f['id'])});break;default:logger[_0x3331('0x60')]('[OUTBOUND]',_0x3331('0x61'));}}})['catch'](function(_0x558361){logger['error'](_0x3331('0x6e'),util['inspect'](_0x558361,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0xf85e40,_0x484584,_0x205d88,_0xe21b65,_0xc01b99,_0x712ad8){var _0x4d2573,_0x2a90cf;_0x712ad8[_0x3331('0xe')]=intUtil[_0x3331('0x4c')](_0x712ad8[_0x3331('0xe')]);_0x712ad8[_0x3331('0x4d')]=intUtil['stripTrailingSlash'](_0x712ad8[_0x3331('0x4d')]);if(_0xc01b99&&_0xc01b99[_0x3331('0x4e')]){logger[_0x3331('0xa')]('['+_0x484584[_0x3331('0x6f')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x484584[_0x3331('0x52')]=util[_0x3331('0xc')](_0x3331('0x50'),_0x712ad8[_0x3331('0x4d')],_0x484584[_0x3331('0x51')],md5(_0x484584[_0x3331('0x51')]));}else{_0x484584[_0x3331('0x52')]='';}headers[_0x3331('0x69')]=getAuth(_0x712ad8);return getUser(_0x712ad8)[_0x3331('0x16')](function(_0x269f91){_0x4d2573=_0x269f91;logger['info'](_0x3331('0x54'),_0x4d2573['id']);return getEndUser(_0x712ad8,_0x484584[_0x3331('0x70')],_0x484584[_0x3331('0x55')]);})[_0x3331('0x16')](function(_0x51e0ef){_0x2a90cf=_0x51e0ef;logger[_0x3331('0xa')]('The\x20Enduser\x20ID\x20is:',_0x2a90cf['id']);return getTicket(_0x712ad8,_0x4d2573,_0x2a90cf,_0x205d88,_0x484584);})['then'](function(_0x9a7277){if(_0x9a7277){logger[_0x3331('0xa')](_0x3331('0x57'),_0x9a7277['id']);}})[_0x3331('0x62')](function(_0x365620){logger[_0x3331('0x60')]('['+_0x484584[_0x3331('0x6f')]['toUpperCase']()+']'+_0x3331('0x71'),util['inspect'](_0x365620,{'showHidden':!![],'depth':null}));});};