8c5ab7d902c8978084179324622032c2e0cf74a1
[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 _0x60df=['The\x20User\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','Recording\x20is\x20enabled!','lastevent','toUpperCase','lodash','request-promise','md5','ioredis','../../../../config/environment','redis','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','<br>','Tags','name','custom_fields','mapValues','value','%s/api/v2/tickets','POST','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','GET','includes','picklist','type','nameField','string','idField','variable','variableName','push','customVariable','Variable','customField','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0x60df,0x1d4));var _0xf60d=function(_0x723376,_0xfd1118){_0x723376=_0x723376-0x0;var _0x38ed18=_0x60df[_0x723376];return _0x38ed18;};'use strict';var _=require(_0xf60d('0x0'));var rp=require(_0xf60d('0x1'));var md5=require(_0xf60d('0x2'));var util=require('util');var Redis=require(_0xf60d('0x3'));var intUtil=require('./util');var config=require(_0xf60d('0x4'));var logger=require('../../../../config/logger')('freshdesk');config[_0xf60d('0x5')]=_['defaults'](config[_0xf60d('0x5')],{'host':_0xf60d('0x6'),'port':0x18eb});var io=require(_0xf60d('0x7'))(new Redis(config[_0xf60d('0x5')]));var headers={'Content-Type':'application/json','Accept':_0xf60d('0x8')};function emit(_0x5c07a3,_0x704a23,_0x31220d){io['to'](_0x5c07a3)['emit'](_0x704a23,_0x31220d);}function getTicket(_0x5716b5,_0x268dc9,_0x21bee4,_0x31a68f,_0x4b80f7){logger['info'](_0xf60d('0x9'));var _0x890db8=_[_0xf60d('0xa')]({'responder_id':_0x268dc9['id'],'requester_id':_0x21bee4['id'],'name':util[_0xf60d('0xb')](_0xf60d('0xc'),_0x4b80f7[_0xf60d('0xd')]),'phone':_0x4b80f7[_0xf60d('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xf60d('0xf')](_0x31a68f[_0xf60d('0x10')],_0x4b80f7,'\x20'),'description':intUtil[_0xf60d('0xf')](_0x31a68f['Descriptions'],_0x4b80f7,_0xf60d('0x11')),'tags':getTags(_0x31a68f[_0xf60d('0x12')],_0xf60d('0x13'))},getCustomFields(_0x31a68f['Fields'],_0x4b80f7));_0x890db8[_0xf60d('0x14')]=_[_0xf60d('0x15')](_['keyBy'](_0x890db8[_0xf60d('0x14')],'id'),_0xf60d('0x16'));return request({'uri':util[_0xf60d('0xb')](_0xf60d('0x17'),_0x5716b5['remoteUri']),'method':_0xf60d('0x18'),'body':_0x890db8})[_0xf60d('0x19')](function(_0x6e7abd){logger[_0xf60d('0x1a')](_0xf60d('0x1b'));return _0x6e7abd;});}function getUser(_0x5f33cc,_0x4092f8){if(intUtil[_0xf60d('0x1c')](_0x4092f8)){return request({'uri':util[_0xf60d('0xb')](_0xf60d('0x1d'),_0x5f33cc['remoteUri']),'qs':{'email':_0x4092f8}})[_0xf60d('0x19')](function(_0x197699){if(_0x197699[_0xf60d('0x1e')]){logger[_0xf60d('0x1a')](_0xf60d('0x1f'));return _['find'](_0x197699,function(_0xfb2836){return _0xfb2836[_0xf60d('0x20')]['email']===_0x4092f8;});}else{logger['info'](_0xf60d('0x21'));return request({'uri':util[_0xf60d('0xb')](_0xf60d('0x22'),_0x5f33cc[_0xf60d('0x23')])})[_0xf60d('0x19')](function(_0x542f63){logger[_0xf60d('0x1a')]('Admin\x20account\x20selected.');return _0x542f63;});}});}else{logger[_0xf60d('0x1a')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf60d('0xb')]('%s/api/v2/agents/me',_0x5f33cc[_0xf60d('0x23')])})[_0xf60d('0x19')](function(_0x366637){logger[_0xf60d('0x1a')](_0xf60d('0x24'));return _0x366637;});}}function getEndUser(_0x59c76a,_0x2060a0,_0x4cad31){logger[_0xf60d('0x1a')](_0xf60d('0x25'),_0x4cad31);return request({'uri':util[_0xf60d('0xb')](_0xf60d('0x26'),_0x59c76a['remoteUri']),'qs':{'phone':_0x4cad31}})['then'](function(_0x30f5e2){if(_0x30f5e2[_0xf60d('0x1e')]){logger['info'](_0xf60d('0x27'));return _[_0xf60d('0x28')](_0x30f5e2,{'phone':_0x4cad31});}else{logger[_0xf60d('0x1a')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0xf60d('0x26'),_0x59c76a[_0xf60d('0x23')]),'method':'POST','body':{'name':_0x2060a0,'phone':_0x4cad31}})[_0xf60d('0x19')](function(_0x45f105){logger[_0xf60d('0x1a')](_0xf60d('0x29'));return _0x45f105;});}});}function getAuth(_0x4366b4){return util[_0xf60d('0xb')](_0xf60d('0x2a'),new Buffer(_0x4366b4[_0xf60d('0x2b')]+':X')[_0xf60d('0x2c')]('base64'));}function request(_0x25ae3f){logger[_0xf60d('0x2d')](_0xf60d('0x2e'),JSON[_0xf60d('0x2f')](_0x25ae3f));return rp(_['defaults'](_0x25ae3f,{'method':_0xf60d('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x18ee14,_0x3b4f60){var _0x175830=[];if(_0x18ee14&&_0x18ee14['length']>0x0){_0x175830=_['map'](_0x18ee14,_0x3b4f60);}return _0x175830;}function getCustomFields(_0x4a8f6b,_0xe05442){var _0x523976=[];var _0x3ce36c={'custom_fields':[]};if(_0x4a8f6b[_0xf60d('0x1e')]>0x0){_['forEach'](_0x4a8f6b,function(_0x311a06){if(_[_0xf60d('0x31')](['string',_0xf60d('0x32')],_0x311a06[_0xf60d('0x33')])&&_0x311a06[_0xf60d('0x34')]&&!_0x311a06['customField']){_0x3ce36c[_0x311a06[_0xf60d('0x34')]['toLowerCase']()]=_0x311a06['content'][_0xf60d('0x2c')]();}else if(_['includes']([_0xf60d('0x35'),_0xf60d('0x32')],_0x311a06[_0xf60d('0x33')])&&_0x311a06['idField']&&_0x311a06['customField']){_0x3ce36c[_0xf60d('0x14')]['push']({'id':_0x311a06[_0xf60d('0x36')],'value':_0x311a06['content'][_0xf60d('0x2c')]()});}else if(_0x311a06[_0xf60d('0x33')]===_0xf60d('0x37')&&_0x311a06['variableName']&&_0x311a06['idField']&&_0x311a06['customField']){_0xe05442[_0x311a06[_0xf60d('0x38')]]&&_0x3ce36c['custom_fields'][_0xf60d('0x39')]({'id':_0x311a06[_0xf60d('0x36')],'value':_0xe05442[_0x311a06[_0xf60d('0x38')]][_0xf60d('0x2c')]()});}else if(_0x311a06[_0xf60d('0x33')]===_0xf60d('0x3a')&&_0x311a06[_0xf60d('0x3b')]&&_0x311a06[_0xf60d('0x3b')][_0xf60d('0x13')]&&_0x311a06[_0xf60d('0x36')]&&_0x311a06[_0xf60d('0x3c')]){_0xe05442[_0x311a06[_0xf60d('0x3b')][_0xf60d('0x13')][_0xf60d('0x3d')]()]&&_0x3ce36c[_0xf60d('0x14')][_0xf60d('0x39')]({'id':_0x311a06[_0xf60d('0x36')],'value':_0xe05442[_0x311a06[_0xf60d('0x3b')][_0xf60d('0x13')]['toLowerCase']()][_0xf60d('0x2c')]()});}});}return _0x3ce36c;}exports[_0xf60d('0x3e')]=function(_0x54c8c1,_0x50a172,_0x229d12,_0x9c273d,_0x399656,_0x3885cc){var _0x2b80a4,_0xdfb620;_0x3885cc[_0xf60d('0x23')]=intUtil[_0xf60d('0x3f')](_0x3885cc[_0xf60d('0x23')]);_0x3885cc[_0xf60d('0x40')]=intUtil['stripTrailingSlash'](_0x3885cc[_0xf60d('0x40')]);if(_0x399656&&_0x399656[_0xf60d('0x41')]){logger[_0xf60d('0x1a')](_0xf60d('0x42'),'Recording\x20is\x20enabled!');_0x50a172['recordingURL']=util[_0xf60d('0xb')](_0xf60d('0x43'),_0x3885cc[_0xf60d('0x40')],_0x50a172[_0xf60d('0x44')],md5(_0x50a172['uniqueid']));}else{_0x50a172[_0xf60d('0x45')]='';}headers[_0xf60d('0x46')]=getAuth(_0x3885cc);return getUser(_0x3885cc,_0x9c273d[_0xf60d('0x47')])[_0xf60d('0x19')](function(_0x444199){_0x2b80a4=_0x444199;logger[_0xf60d('0x1a')](_0xf60d('0x48'),_0x2b80a4['id']);return getEndUser(_0x3885cc,_0x50a172['calleridname'],_0x50a172[_0xf60d('0xe')]);})[_0xf60d('0x19')](function(_0x1d4f06){_0xdfb620=_0x1d4f06;logger[_0xf60d('0x1a')]('The\x20Enduser\x20ID\x20is:',_0xdfb620['id']);return getTicket(_0x3885cc,_0x2b80a4,_0xdfb620,_0x229d12,_0x50a172);})[_0xf60d('0x19')](function(_0x12d2b8){if(_0x12d2b8&&_0x12d2b8['id']){logger['info'](_0xf60d('0x1b'));logger[_0xf60d('0x1a')]('The\x20Ticket\x20ID\x20is:',_0x12d2b8['id']);logger[_0xf60d('0x1a')](_0xf60d('0x42'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf60d('0xb')](_0xf60d('0x49'),_0x9c273d[_0xf60d('0x13')]),_0xf60d('0x4a'),{'uri':util[_0xf60d('0xb')](_0xf60d('0x4b'),_0x3885cc[_0xf60d('0x23')],_0x12d2b8['id'])});}})[_0xf60d('0x4c')](function(_0x5e2e13){logger[_0xf60d('0x4d')](_0xf60d('0x42'),JSON[_0xf60d('0x2f')](_0x5e2e13));});};exports[_0xf60d('0x4e')]=function(_0x445d37,_0x403b42,_0x519f45,_0x32ce68,_0x5a6d13,_0x12e88c,_0x318fa5){var _0x1efad7,_0x366159;_0x12e88c['remoteUri']=intUtil[_0xf60d('0x3f')](_0x12e88c[_0xf60d('0x23')]);_0x12e88c['serverUrl']=intUtil[_0xf60d('0x3f')](_0x12e88c[_0xf60d('0x40')]);if(_0x318fa5&&_0x318fa5['recordingFormat']&&_0x318fa5[_0xf60d('0x4f')]!=='none'){logger[_0xf60d('0x1a')](_0xf60d('0x50'),'Recording\x20is\x20enabled!');_0x403b42['recordingURL']=util['format'](_0xf60d('0x43'),_0x12e88c['serverUrl'],_0x403b42[_0xf60d('0x44')],md5(_0x403b42[_0xf60d('0x44')]));}headers['Authorization']=getAuth(_0x12e88c);return getUser(_0x12e88c,_0x32ce68['email'])[_0xf60d('0x19')](function(_0x2c85ee){_0x1efad7=_0x2c85ee;logger[_0xf60d('0x1a')](_0xf60d('0x48'),_0x1efad7['id']);return getEndUser(_0x12e88c,_0x403b42[_0xf60d('0x51')],_0x403b42[_0xf60d('0x52')]);})[_0xf60d('0x19')](function(_0x37fdba){_0x366159=_0x37fdba;logger['info'](_0xf60d('0x53'),_0x366159['id']);return getTicket(_0x12e88c,_0x1efad7,_0x366159,_0x519f45,_0x403b42);})[_0xf60d('0x19')](function(_0x489168){if(_0x489168&&_0x489168['id']){logger[_0xf60d('0x1a')](_0xf60d('0x1b'));logger[_0xf60d('0x1a')](_0xf60d('0x54'),_0x489168['id']);logger[_0xf60d('0x1a')](_0xf60d('0x50'),_0xf60d('0x55'));emit(util[_0xf60d('0xb')](_0xf60d('0x49'),_0x32ce68['name']),'trigger:browser:url',{'uri':util[_0xf60d('0xb')](_0xf60d('0x4b'),_0x12e88c[_0xf60d('0x23')],_0x489168['id'])});}})[_0xf60d('0x4c')](function(_0x45d6bd){logger['error'](_0xf60d('0x50'),JSON[_0xf60d('0x2f')](_0x45d6bd));});};exports[_0xf60d('0x56')]=function(_0x3fb05e,_0x286af7,_0x28d2e3,_0x5afafd,_0x380afc,_0x4ed782){var _0x5cf772,_0x423713;_0x4ed782[_0xf60d('0x23')]=intUtil[_0xf60d('0x3f')](_0x4ed782[_0xf60d('0x23')]);_0x4ed782[_0xf60d('0x40')]=intUtil[_0xf60d('0x3f')](_0x4ed782[_0xf60d('0x40')]);if(_0x380afc&&_0x380afc[_0xf60d('0x41')]){logger['info']('['+_0x286af7['lastevent']['toUpperCase']()+']',_0xf60d('0x57'));_0x286af7[_0xf60d('0x45')]=util[_0xf60d('0xb')](_0xf60d('0x43'),_0x4ed782['serverUrl'],_0x286af7['uniqueid'],md5(_0x286af7['uniqueid']));}else{_0x286af7[_0xf60d('0x45')]='';}headers[_0xf60d('0x46')]=getAuth(_0x4ed782);return getUser(_0x4ed782,'')[_0xf60d('0x19')](function(_0x2a7832){_0x5cf772=_0x2a7832;logger[_0xf60d('0x1a')](_0xf60d('0x48'),_0x5cf772['id']);return getEndUser(_0x4ed782,_0x286af7[_0xf60d('0xd')],_0x286af7[_0xf60d('0xe')]);})[_0xf60d('0x19')](function(_0x2b70f4){_0x423713=_0x2b70f4;logger['info'](_0xf60d('0x53'),_0x423713['id']);return getTicket(_0x4ed782,_0x5cf772,_0x423713,_0x28d2e3,_0x286af7);})[_0xf60d('0x19')](function(_0x48a8cb){if(_0x48a8cb){logger[_0xf60d('0x1a')]('Ticket\x20created!');logger[_0xf60d('0x1a')](_0xf60d('0x54'),_0x48a8cb['id']);}})[_0xf60d('0x4c')](function(_0xfbe2c5){logger[_0xf60d('0x4d')]('['+_0x286af7[_0xf60d('0x58')][_0xf60d('0x59')]()+']',JSON[_0xf60d('0x2f')](_0xfbe2c5));});};