Built motion from commit c116dc8b.|2.6.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 _0xca6c=['email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\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','Zendesk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','destcalleridnum','The\x20Ticket\x20ID\x20is:','error','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','monitor_format','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','inspect','lodash','request-promise','md5','util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','format','%s/search.json','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','agent','%s/users/me.json','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','password','%s:%s','username','authType','%s/token:%s','Basic\x20%s','toString','base64','debug','defaults','GET','includes','type','customField','toLowerCase','content','picklist','idField','variable','variableName','customVariable','Variable','custom_fields','push','queue','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','Authorization'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xca6c,0x1da));var _0xcca6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xca6c[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xcca6('0x0'));var rp=require(_0xcca6('0x1'));var md5=require(_0xcca6('0x2'));var util=require(_0xcca6('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xcca6('0x4'));var logger=require(_0xcca6('0x5'))(_0xcca6('0x6'));config[_0xcca6('0x7')]=_['defaults'](config[_0xcca6('0x7')],{'host':_0xcca6('0x8'),'port':0x18eb});var io=require(_0xcca6('0x9'))(new Redis(config[_0xcca6('0x7')]));function emit(_0x1d1339,_0x31ffdb,_0x519620){io['to'](_0x1d1339)[_0xcca6('0xa')](_0x31ffdb,_0x519620);}var headers={'Content-Type':_0xcca6('0xb'),'Accept':_0xcca6('0xb')};function getTicket(_0x5c4cab,_0x6a7cc1,_0x11480e,_0x26baf2,_0x33284b){logger[_0xcca6('0xc')](_0xcca6('0xd'));return request({'uri':util['format'](_0xcca6('0xe'),_0x5c4cab[_0xcca6('0xf')]),'method':_0xcca6('0x10'),'body':{'ticket':_[_0xcca6('0x11')]({'requester_id':_0x11480e['id'],'submitter_id':_0x6a7cc1?_0x6a7cc1['id']:undefined,'assignee_id':_0x6a7cc1?_0x6a7cc1['id']:undefined,'tags':getTags(_0x26baf2['Tags'],_0xcca6('0x12')),'subject':intUtil[_0xcca6('0x13')](_0x26baf2[_0xcca6('0x14')],_0x33284b,'\x20'),'description':intUtil[_0xcca6('0x13')](_0x26baf2[_0xcca6('0x15')],_0x33284b,'\x0a'),'comment':{'public':![],'body':intUtil[_0xcca6('0x13')](_0x26baf2[_0xcca6('0x15')],_0x33284b,'\x0a')}},getCustomFields(_0x26baf2[_0xcca6('0x16')],_0x33284b))}})[_0xcca6('0x17')](function(_0x45f979){logger[_0xcca6('0xc')](_0xcca6('0x18'));return _0x45f979[_0xcca6('0x19')];});}function getUser(_0x3bfa99,_0x50888d){if(intUtil[_0xcca6('0x1a')](_0x50888d)){logger['info']('Getting\x20agent\x20with\x20email',_0x50888d);return request({'uri':util[_0xcca6('0x1b')](_0xcca6('0x1c'),_0x3bfa99[_0xcca6('0xf')]),'qs':{'query':util[_0xcca6('0x1b')](_0xcca6('0x1d'),_0x50888d)}})['then'](function(_0x36c0a5){if(_0x36c0a5['count']){logger[_0xcca6('0xc')](_0xcca6('0x1e'));return _[_0xcca6('0x1f')](_0x36c0a5[_0xcca6('0x20')],{'email':_0x50888d,'role':_0xcca6('0x21')});}else{logger[_0xcca6('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xcca6('0x22'),_0x3bfa99[_0xcca6('0xf')])})['then'](function(_0x4c656f){logger['info']('Admin\x20account\x20selected.');return _0x4c656f['user'];});}});}else{logger[_0xcca6('0xc')](_0xcca6('0x23'));return request({'uri':util[_0xcca6('0x1b')](_0xcca6('0x22'),_0x3bfa99[_0xcca6('0xf')])})[_0xcca6('0x17')](function(_0x2f82e0){logger[_0xcca6('0xc')]('Admin\x20account\x20selected.');return _0x2f82e0[_0xcca6('0x24')];});}}function getEndUser(_0x5b5fa9,_0x3a7528,_0x145ad0){logger['info'](_0xcca6('0x25'),_0x145ad0);return request({'uri':util['format']('%s/search.json',_0x5b5fa9[_0xcca6('0xf')]),'qs':{'query':util[_0xcca6('0x1b')](_0xcca6('0x26'),_0x145ad0)}})[_0xcca6('0x17')](function(_0xe484e4){var _0x8fb265;if(_0xe484e4[_0xcca6('0x20')][_0xcca6('0x27')]){_0xe484e4[_0xcca6('0x20')]=_[_0xcca6('0x28')](_0xe484e4[_0xcca6('0x20')],{'suspended':![],'role':_0xcca6('0x29')});if(_0xe484e4[_0xcca6('0x20')][_0xcca6('0x27')]){_0x8fb265=_[_0xcca6('0x2a')](_0xe484e4[_0xcca6('0x20')]);}}if(_0x8fb265){logger[_0xcca6('0xc')]('Enduser\x20found!');return _0x8fb265;}else{logger[_0xcca6('0xc')](_0xcca6('0x2b'));return request({'uri':util[_0xcca6('0x1b')](_0xcca6('0x2c'),_0x5b5fa9[_0xcca6('0xf')]),'method':_0xcca6('0x10'),'body':{'user':{'role':_0xcca6('0x29'),'name':util[_0xcca6('0x1b')]('Caller\x20-\x20%s',_0x3a7528||_0x145ad0),'phone':_0x145ad0}}})[_0xcca6('0x17')](function(_0x543918){logger[_0xcca6('0xc')](_0xcca6('0x2d'));return _0x543918[_0xcca6('0x24')];});}});}function getAuth(_0x500b30){var _0x5ebff2;if(_0x500b30['authType']===_0xcca6('0x2e')){_0x5ebff2=util['format'](_0xcca6('0x2f'),_0x500b30[_0xcca6('0x30')],_0x500b30[_0xcca6('0x2e')]);}else if(_0x500b30[_0xcca6('0x31')]==='token'){_0x5ebff2=util[_0xcca6('0x1b')](_0xcca6('0x32'),_0x500b30['username'],_0x500b30['token']);}return util[_0xcca6('0x1b')](_0xcca6('0x33'),new Buffer(_0x5ebff2)[_0xcca6('0x34')](_0xcca6('0x35')));}function request(_0x34fcae){logger[_0xcca6('0x36')]('[HTTP]',JSON['stringify'](_0x34fcae));return rp(_[_0xcca6('0x37')](_0x34fcae,{'method':_0xcca6('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x33b8f6,_0x245e39){var _0x4c3269=[];if(_0x33b8f6&&_0x33b8f6[_0xcca6('0x27')]>0x0){_0x4c3269=_['map'](_0x33b8f6,_0x245e39);}return _0x4c3269;}function getCustomFields(_0x992d5a,_0x26273a){var _0x8d8413=[];var _0x375ad8={'custom_fields':[]};if(_0x992d5a['length']>0x0){_['forEach'](_0x992d5a,function(_0x8d3a04){if(_[_0xcca6('0x39')](['string','picklist'],_0x8d3a04[_0xcca6('0x3a')])&&_0x8d3a04['nameField']&&!_0x8d3a04[_0xcca6('0x3b')]){_0x375ad8[_0x8d3a04['nameField'][_0xcca6('0x3c')]()]=_0x8d3a04[_0xcca6('0x3d')][_0xcca6('0x34')]();}else if(_[_0xcca6('0x39')](['string',_0xcca6('0x3e')],_0x8d3a04[_0xcca6('0x3a')])&&_0x8d3a04[_0xcca6('0x3f')]&&_0x8d3a04[_0xcca6('0x3b')]){_0x375ad8['custom_fields']['push']({'id':_0x8d3a04[_0xcca6('0x3f')],'value':_0x8d3a04[_0xcca6('0x3d')][_0xcca6('0x34')]()});}else if(_0x8d3a04['type']===_0xcca6('0x40')&&_0x8d3a04['variableName']&&_0x8d3a04[_0xcca6('0x3f')]&&_0x8d3a04[_0xcca6('0x3b')]){_0x26273a[_0x8d3a04[_0xcca6('0x41')]]&&_0x375ad8['custom_fields']['push']({'id':_0x8d3a04[_0xcca6('0x3f')],'value':_0x26273a[_0x8d3a04[_0xcca6('0x41')]][_0xcca6('0x34')]()});}else if(_0x8d3a04[_0xcca6('0x3a')]===_0xcca6('0x42')&&_0x8d3a04['Variable']&&_0x8d3a04[_0xcca6('0x43')][_0xcca6('0x12')]&&_0x8d3a04['idField']&&_0x8d3a04[_0xcca6('0x3b')]){_0x26273a[_0x8d3a04[_0xcca6('0x43')][_0xcca6('0x12')][_0xcca6('0x3c')]()]&&_0x375ad8[_0xcca6('0x44')][_0xcca6('0x45')]({'id':_0x8d3a04[_0xcca6('0x3f')],'value':_0x26273a[_0x8d3a04[_0xcca6('0x43')]['name'][_0xcca6('0x3c')]()]['toString']()});}});}return _0x375ad8;}exports[_0xcca6('0x46')]=function(_0x1f96c8,_0xde369d,_0x2e1850,_0x5e1a4d,_0x2e3397,_0x1ba337){var _0x5711d1,_0x3c3725;_0x1ba337[_0xcca6('0xf')]=intUtil[_0xcca6('0x47')](_0x1ba337[_0xcca6('0xf')]);_0x1ba337['serverUrl']=intUtil[_0xcca6('0x47')](_0x1ba337[_0xcca6('0x48')]);if(_0x2e3397&&_0x2e3397['monitor_format']){logger[_0xcca6('0xc')](_0xcca6('0x49'),'Recording\x20is\x20enabled!');_0xde369d[_0xcca6('0x4a')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1ba337['serverUrl'],_0xde369d['uniqueid'],md5(_0xde369d['uniqueid']));}else{_0xde369d['recordingURL']='';}headers[_0xcca6('0x4b')]=getAuth(_0x1ba337);return getUser(_0x1ba337,_0x5e1a4d[_0xcca6('0x4c')])[_0xcca6('0x17')](function(_0x1641f8){_0x5711d1=_0x1641f8;logger[_0xcca6('0xc')](_0xcca6('0x4d'),_0x5711d1['id']);return getEndUser(_0x1ba337,_0xde369d[_0xcca6('0x4e')],_0xde369d[_0xcca6('0x4f')]);})[_0xcca6('0x17')](function(_0x11aa3f){_0x3c3725=_0x11aa3f;logger[_0xcca6('0xc')](_0xcca6('0x50'),_0x3c3725['id']);return getTicket(_0x1ba337,_0x5711d1,_0x3c3725,_0x2e1850,_0xde369d);})[_0xcca6('0x17')](function(_0xed553f){if(_0xed553f){logger[_0xcca6('0xc')]('The\x20Ticket\x20ID\x20is:',_0xed553f['id']);switch(_0x1ba337[_0xcca6('0x3a')]){case _0xcca6('0x51'):logger[_0xcca6('0xc')](_0xcca6('0x49'),_0xcca6('0x52'));return request({'uri':util[_0xcca6('0x1b')](_0xcca6('0x53'),_0x1ba337[_0xcca6('0xf')],_0x5711d1['id'],_0xed553f['id']),'method':_0xcca6('0x10')});case _0xcca6('0x54'):logger['info'](_0xcca6('0x49'),_0xcca6('0x55'));emit(util[_0xcca6('0x1b')](_0xcca6('0x56'),_0x5e1a4d[_0xcca6('0x12')]),_0xcca6('0x57'),{'uri':util[_0xcca6('0x1b')](_0xcca6('0x58'),_0x1ba337[_0xcca6('0xf')][_0xcca6('0x59')](_0xcca6('0x5a'),''),_0xed553f['id'])});break;default:logger['error'](_0xcca6('0x49'),_0xcca6('0x5b'));}}})[_0xcca6('0x5c')](function(_0x4941b9){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x4941b9,{'showHidden':!![],'depth':null}));});};exports[_0xcca6('0x5d')]=function(_0x3451bb,_0x3c3715,_0x599a97,_0x2c782b,_0x2879b6,_0x4493b1,_0x444f46){var _0x100479,_0x31a389;_0x4493b1[_0xcca6('0xf')]=intUtil[_0xcca6('0x47')](_0x4493b1[_0xcca6('0xf')]);_0x4493b1[_0xcca6('0x48')]=intUtil['stripTrailingSlash'](_0x4493b1[_0xcca6('0x48')]);if(_0x444f46&&_0x444f46[_0xcca6('0x5e')]&&_0x444f46[_0xcca6('0x5e')]!==_0xcca6('0x5f')){logger['info'](_0xcca6('0x60'),_0xcca6('0x61'));_0x3c3715[_0xcca6('0x4a')]=util['format'](_0xcca6('0x62'),_0x4493b1[_0xcca6('0x48')],_0x3c3715[_0xcca6('0x63')],md5(_0x3c3715['uniqueid']));}headers['Authorization']=getAuth(_0x4493b1);return getUser(_0x4493b1,_0x2c782b['email'])[_0xcca6('0x17')](function(_0x2e25f2){_0x100479=_0x2e25f2;logger[_0xcca6('0xc')](_0xcca6('0x4d'),_0x100479['id']);return getEndUser(_0x4493b1,_0x3c3715['destcalleridname'],_0x3c3715[_0xcca6('0x64')]);})['then'](function(_0x2d029a){_0x31a389=_0x2d029a;logger[_0xcca6('0xc')](_0xcca6('0x50'),_0x31a389['id']);return getTicket(_0x4493b1,_0x100479,_0x31a389,_0x599a97,_0x3c3715);})[_0xcca6('0x17')](function(_0x33ac81){if(_0x33ac81){logger[_0xcca6('0xc')](_0xcca6('0x65'),_0x33ac81['id']);switch(_0x4493b1[_0xcca6('0x3a')]){case _0xcca6('0x51'):logger[_0xcca6('0xc')](_0xcca6('0x60'),_0xcca6('0x52'));return request({'uri':util[_0xcca6('0x1b')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x4493b1['remoteUri'],_0x100479['id'],_0x33ac81['id']),'method':_0xcca6('0x10')});case _0xcca6('0x54'):logger[_0xcca6('0xc')](_0xcca6('0x60'),_0xcca6('0x55'));emit(util[_0xcca6('0x1b')](_0xcca6('0x56'),_0x2c782b['name']),_0xcca6('0x57'),{'uri':util[_0xcca6('0x1b')](_0xcca6('0x58'),_0x4493b1[_0xcca6('0xf')]['replace'](_0xcca6('0x5a'),''),_0x33ac81['id'])});break;default:logger[_0xcca6('0x66')](_0xcca6('0x60'),_0xcca6('0x5b'));}}})['catch'](function(_0x21551b){logger[_0xcca6('0x66')](_0xcca6('0x67'),util['inspect'](_0x21551b,{'showHidden':!![],'depth':null}));});};exports[_0xcca6('0x68')]=function(_0x5ed167,_0x5546fb,_0x3a9210,_0x3ccdeb,_0x412ceb,_0x355a75){var _0x5664e1,_0x5e93a7;_0x355a75['remoteUri']=intUtil[_0xcca6('0x47')](_0x355a75[_0xcca6('0xf')]);_0x355a75['serverUrl']=intUtil['stripTrailingSlash'](_0x355a75[_0xcca6('0x48')]);if(_0x412ceb&&_0x412ceb[_0xcca6('0x69')]){logger['info']('['+_0x5546fb[_0xcca6('0x6a')][_0xcca6('0x6b')]()+']',_0xcca6('0x61'));_0x5546fb[_0xcca6('0x4a')]=util[_0xcca6('0x1b')](_0xcca6('0x62'),_0x355a75[_0xcca6('0x48')],_0x5546fb['uniqueid'],md5(_0x5546fb[_0xcca6('0x63')]));}else{_0x5546fb[_0xcca6('0x4a')]='';}headers['Authorization']=getAuth(_0x355a75);return getUser(_0x355a75)[_0xcca6('0x17')](function(_0x448bbe){_0x5664e1=_0x448bbe;logger['info'](_0xcca6('0x4d'),_0x5664e1['id']);return getEndUser(_0x355a75,_0x5546fb['calleridname'],_0x5546fb[_0xcca6('0x4f')]);})[_0xcca6('0x17')](function(_0x4f31d4){_0x5e93a7=_0x4f31d4;logger['info'](_0xcca6('0x50'),_0x5e93a7['id']);return getTicket(_0x355a75,_0x5664e1,_0x5e93a7,_0x3a9210,_0x5546fb);})[_0xcca6('0x17')](function(_0x5aa468){if(_0x5aa468){logger[_0xcca6('0xc')](_0xcca6('0x65'),_0x5aa468['id']);}})[_0xcca6('0x5c')](function(_0x41a456){logger[_0xcca6('0x66')]('['+_0x5546fb[_0xcca6('0x6a')][_0xcca6('0x6b')]()+']'+_0xcca6('0x6c'),util[_0xcca6('0x6d')](_0x41a456,{'showHidden':!![],'depth':null}));});};