ae1505940ae882f787efcfbcff1310e309d930db
[motion2.git] / server / services / ami / trigger / integration / freshdesk.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 _0xe82e=['Subjects','Descriptions','<br>','Tags','name','custom_fields','keyBy','value','format','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','forEach','includes','type','nameField','customField','content','string','picklist','push','variable','variableName','idField','Variable','toLowerCase','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','serverUrl','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','[OUTBOUND]','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','redis','defaults','application/json','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','getString'];(function(_0x3ef4f1,_0x5f0f9b){var _0x69953c=function(_0xb4e621){while(--_0xb4e621){_0x3ef4f1['push'](_0x3ef4f1['shift']());}};_0x69953c(++_0x5f0f9b);}(_0xe82e,0x101));var _0xee82=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0xe82e[_0x344a3f];return _0x264712;};'use strict';var _=require(_0xee82('0x0'));var rp=require(_0xee82('0x1'));var md5=require(_0xee82('0x2'));var util=require(_0xee82('0x3'));var Redis=require(_0xee82('0x4'));var intUtil=require(_0xee82('0x5'));var config=require('../../../../config/environment');var logger=require(_0xee82('0x6'))('freshdesk');config[_0xee82('0x7')]=_[_0xee82('0x8')](config[_0xee82('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xee82('0x7')]));var headers={'Content-Type':'application/json','Accept':_0xee82('0x9')};function emit(_0x275a6d,_0x574cf8,_0x2ab2c5){io['to'](_0x275a6d)['emit'](_0x574cf8,_0x2ab2c5);}function getTicket(_0xa3f385,_0xd1c856,_0x13c023,_0x3687b4,_0xe0a5ca){logger[_0xee82('0xa')](_0xee82('0xb'));var _0x17ebe2=_[_0xee82('0xc')]({'responder_id':_0xd1c856['id'],'requester_id':_0x13c023['id'],'name':util['format'](_0xee82('0xd'),_0xe0a5ca[_0xee82('0xe')]),'phone':_0xe0a5ca['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xee82('0xf')](_0x3687b4[_0xee82('0x10')],_0xe0a5ca,'\x20'),'description':intUtil['getString'](_0x3687b4[_0xee82('0x11')],_0xe0a5ca,_0xee82('0x12')),'tags':getTags(_0x3687b4[_0xee82('0x13')],_0xee82('0x14'))},getCustomFields(_0x3687b4['Fields'],_0xe0a5ca));_0x17ebe2[_0xee82('0x15')]=_['mapValues'](_[_0xee82('0x16')](_0x17ebe2[_0xee82('0x15')],'id'),_0xee82('0x17'));return request({'uri':util[_0xee82('0x18')](_0xee82('0x19'),_0xa3f385['remoteUri']),'method':_0xee82('0x1a'),'body':_0x17ebe2})[_0xee82('0x1b')](function(_0x460652){logger[_0xee82('0xa')](_0xee82('0x1c'));return _0x460652;});}function getUser(_0x427038,_0x54710e){if(intUtil[_0xee82('0x1d')](_0x54710e)){return request({'uri':util[_0xee82('0x18')](_0xee82('0x1e'),_0x427038['remoteUri']),'qs':{'email':_0x54710e}})['then'](function(_0x423ff2){if(_0x423ff2[_0xee82('0x1f')]){logger['info'](_0xee82('0x20'));return _[_0xee82('0x21')](_0x423ff2,function(_0x3f2643){return _0x3f2643[_0xee82('0x22')][_0xee82('0x23')]===_0x54710e;});}else{logger[_0xee82('0xa')](_0xee82('0x24'));return request({'uri':util[_0xee82('0x18')](_0xee82('0x25'),_0x427038[_0xee82('0x26')])})[_0xee82('0x1b')](function(_0x5840c5){logger[_0xee82('0xa')](_0xee82('0x27'));return _0x5840c5;});}});}else{logger[_0xee82('0xa')](_0xee82('0x28'));return request({'uri':util['format'](_0xee82('0x25'),_0x427038[_0xee82('0x26')])})[_0xee82('0x1b')](function(_0x5c0957){logger[_0xee82('0xa')](_0xee82('0x27'));return _0x5c0957;});}}function getEndUser(_0x37412f,_0x594cb1,_0x3e45d2){logger[_0xee82('0xa')]('Searching\x20enduser\x20with\x20phone',_0x3e45d2);return request({'uri':util[_0xee82('0x18')](_0xee82('0x29'),_0x37412f[_0xee82('0x26')]),'qs':{'phone':_0x3e45d2}})['then'](function(_0x175eb8){if(_0x175eb8[_0xee82('0x1f')]){logger[_0xee82('0xa')](_0xee82('0x2a'));return _[_0xee82('0x21')](_0x175eb8,{'phone':_0x3e45d2});}else{logger[_0xee82('0xa')](_0xee82('0x2b'));return request({'uri':util[_0xee82('0x18')](_0xee82('0x29'),_0x37412f[_0xee82('0x26')]),'method':'POST','body':{'name':_0x594cb1,'phone':_0x3e45d2}})['then'](function(_0x15ed66){logger[_0xee82('0xa')](_0xee82('0x2c'));return _0x15ed66;});}});}function getAuth(_0x22a996){return util[_0xee82('0x18')](_0xee82('0x2d'),new Buffer(_0x22a996[_0xee82('0x2e')]+':X')[_0xee82('0x2f')](_0xee82('0x30')));}function request(_0x278076){logger[_0xee82('0x31')](_0xee82('0x32'),JSON[_0xee82('0x33')](_0x278076));return rp(_[_0xee82('0x8')](_0x278076,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x4bcb38,_0x3d430b){var _0x1eb6c9=[];if(_0x4bcb38&&_0x4bcb38['length']>0x0){_0x1eb6c9=_['map'](_0x4bcb38,_0x3d430b);}return _0x1eb6c9;}function getCustomFields(_0x3d1635,_0x5cfbea){var _0x573c21=[];var _0x22cee0={'custom_fields':[]};if(_0x3d1635[_0xee82('0x1f')]>0x0){_[_0xee82('0x34')](_0x3d1635,function(_0x31b200){if(_[_0xee82('0x35')](['string','picklist'],_0x31b200[_0xee82('0x36')])&&_0x31b200[_0xee82('0x37')]&&!_0x31b200[_0xee82('0x38')]){_0x22cee0[_0x31b200['nameField']['toLowerCase']()]=_0x31b200[_0xee82('0x39')][_0xee82('0x2f')]();}else if(_[_0xee82('0x35')]([_0xee82('0x3a'),_0xee82('0x3b')],_0x31b200[_0xee82('0x36')])&&_0x31b200['idField']&&_0x31b200[_0xee82('0x38')]){_0x22cee0['custom_fields'][_0xee82('0x3c')]({'id':_0x31b200['idField'],'value':_0x31b200[_0xee82('0x39')][_0xee82('0x2f')]()});}else if(_0x31b200['type']===_0xee82('0x3d')&&_0x31b200[_0xee82('0x3e')]&&_0x31b200[_0xee82('0x3f')]&&_0x31b200[_0xee82('0x38')]){_0x5cfbea[_0x31b200[_0xee82('0x3e')]]&&_0x22cee0[_0xee82('0x15')][_0xee82('0x3c')]({'id':_0x31b200[_0xee82('0x3f')],'value':_0x5cfbea[_0x31b200[_0xee82('0x3e')]][_0xee82('0x2f')]()});}else if(_0x31b200['type']==='customVariable'&&_0x31b200[_0xee82('0x40')]&&_0x31b200[_0xee82('0x40')]['name']&&_0x31b200[_0xee82('0x3f')]&&_0x31b200['customField']){_0x5cfbea[_0x31b200[_0xee82('0x40')][_0xee82('0x14')][_0xee82('0x41')]()]&&_0x22cee0['custom_fields'][_0xee82('0x3c')]({'id':_0x31b200['idField'],'value':_0x5cfbea[_0x31b200[_0xee82('0x40')][_0xee82('0x14')][_0xee82('0x41')]()][_0xee82('0x2f')]()});}});}return _0x22cee0;}exports[_0xee82('0x42')]=function(_0x31135c,_0x28c72c,_0x2e952b,_0x5228bf,_0x5ce8da,_0x1ec2b5){var _0x2bafe9,_0x7badb1;_0x1ec2b5[_0xee82('0x26')]=intUtil[_0xee82('0x43')](_0x1ec2b5[_0xee82('0x26')]);_0x1ec2b5['serverUrl']=intUtil[_0xee82('0x43')](_0x1ec2b5['serverUrl']);if(_0x5ce8da&&_0x5ce8da[_0xee82('0x44')]){logger[_0xee82('0xa')](_0xee82('0x45'),_0xee82('0x46'));_0x28c72c[_0xee82('0x47')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1ec2b5[_0xee82('0x48')],_0x28c72c[_0xee82('0x49')],md5(_0x28c72c[_0xee82('0x49')]));}else{_0x28c72c[_0xee82('0x47')]='';}headers[_0xee82('0x4a')]=getAuth(_0x1ec2b5);return getUser(_0x1ec2b5,_0x5228bf[_0xee82('0x23')])[_0xee82('0x1b')](function(_0x344465){_0x2bafe9=_0x344465;logger[_0xee82('0xa')](_0xee82('0x4b'),_0x2bafe9['id']);return getEndUser(_0x1ec2b5,_0x28c72c[_0xee82('0xe')],_0x28c72c[_0xee82('0x4c')]);})['then'](function(_0x25bb71){_0x7badb1=_0x25bb71;logger['info'](_0xee82('0x4d'),_0x7badb1['id']);return getTicket(_0x1ec2b5,_0x2bafe9,_0x7badb1,_0x2e952b,_0x28c72c);})['then'](function(_0xdc7ee2){if(_0xdc7ee2&&_0xdc7ee2['id']){logger[_0xee82('0xa')]('Ticket\x20created!');logger[_0xee82('0xa')](_0xee82('0x4e'),_0xdc7ee2['id']);logger['info']('[QUEUE]',_0xee82('0x4f'));emit(util['format'](_0xee82('0x50'),_0x5228bf['name']),'trigger:browser:url',{'uri':util[_0xee82('0x18')]('%s/helpdesk/tickets/%d',_0x1ec2b5[_0xee82('0x26')],_0xdc7ee2['id'])});}})[_0xee82('0x51')](function(_0x1840c0){logger[_0xee82('0x52')]('[QUEUE]',JSON['stringify'](_0x1840c0));});};exports[_0xee82('0x53')]=function(_0x57b099,_0x2af99e,_0x5a458c,_0x4612b4,_0x2ed3f2,_0x518e27,_0x35b2ed){var _0x35ccd3,_0x15df65;_0x518e27[_0xee82('0x26')]=intUtil[_0xee82('0x43')](_0x518e27[_0xee82('0x26')]);_0x518e27['serverUrl']=intUtil['stripTrailingSlash'](_0x518e27['serverUrl']);if(_0x35b2ed&&_0x35b2ed[_0xee82('0x54')]&&_0x35b2ed['recordingFormat']!==_0xee82('0x55')){logger[_0xee82('0xa')]('[OUTBOUND]',_0xee82('0x46'));_0x2af99e[_0xee82('0x47')]=util['format'](_0xee82('0x56'),_0x518e27[_0xee82('0x48')],_0x2af99e[_0xee82('0x49')],md5(_0x2af99e[_0xee82('0x49')]));}headers[_0xee82('0x4a')]=getAuth(_0x518e27);return getUser(_0x518e27,_0x4612b4[_0xee82('0x23')])[_0xee82('0x1b')](function(_0x2cbf17){_0x35ccd3=_0x2cbf17;logger[_0xee82('0xa')](_0xee82('0x4b'),_0x35ccd3['id']);return getEndUser(_0x518e27,_0x2af99e[_0xee82('0x57')],_0x2af99e['destcalleridnum']);})[_0xee82('0x1b')](function(_0x1d6ad6){_0x15df65=_0x1d6ad6;logger['info']('The\x20Enduser\x20ID\x20is:',_0x15df65['id']);return getTicket(_0x518e27,_0x35ccd3,_0x15df65,_0x5a458c,_0x2af99e);})[_0xee82('0x1b')](function(_0x575dfe){if(_0x575dfe&&_0x575dfe['id']){logger[_0xee82('0xa')](_0xee82('0x1c'));logger[_0xee82('0xa')](_0xee82('0x4e'),_0x575dfe['id']);logger[_0xee82('0xa')](_0xee82('0x58'),_0xee82('0x4f'));emit(util['format'](_0xee82('0x50'),_0x4612b4[_0xee82('0x14')]),'trigger:browser:url',{'uri':util['format']('%s/helpdesk/tickets/%d',_0x518e27[_0xee82('0x26')],_0x575dfe['id'])});}})[_0xee82('0x51')](function(_0x1e325e){logger[_0xee82('0x52')](_0xee82('0x58'),JSON[_0xee82('0x33')](_0x1e325e));});};exports['unmanaged']=function(_0x4f4206,_0x50f178,_0x588d0b,_0x51854b,_0x54cddd,_0x46a021){var _0x52d90c,_0x4b2d18;_0x46a021[_0xee82('0x26')]=intUtil[_0xee82('0x43')](_0x46a021[_0xee82('0x26')]);_0x46a021[_0xee82('0x48')]=intUtil[_0xee82('0x43')](_0x46a021['serverUrl']);if(_0x54cddd&&_0x54cddd[_0xee82('0x44')]){logger['info']('['+_0x50f178[_0xee82('0x59')][_0xee82('0x5a')]()+']',_0xee82('0x46'));_0x50f178[_0xee82('0x47')]=util[_0xee82('0x18')](_0xee82('0x56'),_0x46a021[_0xee82('0x48')],_0x50f178[_0xee82('0x49')],md5(_0x50f178['uniqueid']));}else{_0x50f178['recordingURL']='';}headers[_0xee82('0x4a')]=getAuth(_0x46a021);return getUser(_0x46a021,'')[_0xee82('0x1b')](function(_0x50356e){_0x52d90c=_0x50356e;logger[_0xee82('0xa')]('The\x20User\x20ID\x20is:',_0x52d90c['id']);return getEndUser(_0x46a021,_0x50f178[_0xee82('0xe')],_0x50f178[_0xee82('0x4c')]);})[_0xee82('0x1b')](function(_0xaa131c){_0x4b2d18=_0xaa131c;logger[_0xee82('0xa')]('The\x20Enduser\x20ID\x20is:',_0x4b2d18['id']);return getTicket(_0x46a021,_0x52d90c,_0x4b2d18,_0x588d0b,_0x50f178);})[_0xee82('0x1b')](function(_0x5026af){if(_0x5026af){logger[_0xee82('0xa')]('Ticket\x20created!');logger[_0xee82('0xa')](_0xee82('0x4e'),_0x5026af['id']);}})['catch'](function(_0x1b6d49){logger[_0xee82('0x52')]('['+_0x50f178[_0xee82('0x59')][_0xee82('0x5a')]()+']',JSON[_0xee82('0x33')](_0x1b6d49));});};