5fcf23f1b8b671ff03645d5d8b1d35163135e899
[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 _0x1bc8=['socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','calleridname','calleridnum','Subjects','getString','Descriptions','name','Fields','mapValues','custom_fields','value','format','%s/api/v2/tickets','remoteUri','POST','info','Ticket\x20created!','then','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','GET','map','forEach','string','picklist','type','customField','nameField','toLowerCase','content','includes','idField','push','variable','customVariable','Variable','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridnum','catch','unmanaged','lastevent','toUpperCase','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost'];(function(_0x102ff9,_0x907658){var _0x24fa97=function(_0x3622ff){while(--_0x3622ff){_0x102ff9['push'](_0x102ff9['shift']());}};_0x24fa97(++_0x907658);}(_0x1bc8,0xaa));var _0x81bc=function(_0x185832,_0x53aeea){_0x185832=_0x185832-0x0;var _0x253dda=_0x1bc8[_0x185832];return _0x253dda;};'use strict';var _=require('lodash');var rp=require(_0x81bc('0x0'));var md5=require(_0x81bc('0x1'));var util=require(_0x81bc('0x2'));var Redis=require(_0x81bc('0x3'));var intUtil=require(_0x81bc('0x4'));var config=require(_0x81bc('0x5'));var logger=require(_0x81bc('0x6'))('freshdesk');config[_0x81bc('0x7')]=_[_0x81bc('0x8')](config[_0x81bc('0x7')],{'host':_0x81bc('0x9'),'port':0x18eb});var io=require(_0x81bc('0xa'))(new Redis(config[_0x81bc('0x7')]));var headers={'Content-Type':_0x81bc('0xb'),'Accept':_0x81bc('0xb')};function emit(_0x15457d,_0x235477,_0x1a988e){io['to'](_0x15457d)[_0x81bc('0xc')](_0x235477,_0x1a988e);}function getTicket(_0x3a5580,_0x75f1cb,_0x2ec8de,_0x242bb4,_0x107323){logger['info'](_0x81bc('0xd'));var _0x154ef4=_['merge']({'responder_id':_0x75f1cb['id'],'requester_id':_0x2ec8de['id'],'name':util['format']('Caller\x20-\x20%s',_0x107323[_0x81bc('0xe')]),'phone':_0x107323[_0x81bc('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x242bb4[_0x81bc('0x10')],_0x107323,'\x20'),'description':intUtil[_0x81bc('0x11')](_0x242bb4[_0x81bc('0x12')],_0x107323,'<br>'),'tags':getTags(_0x242bb4['Tags'],_0x81bc('0x13'))},getCustomFields(_0x242bb4[_0x81bc('0x14')],_0x107323));_0x154ef4['custom_fields']=_[_0x81bc('0x15')](_['keyBy'](_0x154ef4[_0x81bc('0x16')],'id'),_0x81bc('0x17'));return request({'uri':util[_0x81bc('0x18')](_0x81bc('0x19'),_0x3a5580[_0x81bc('0x1a')]),'method':_0x81bc('0x1b'),'body':_0x154ef4})['then'](function(_0x521412){logger[_0x81bc('0x1c')](_0x81bc('0x1d'));return _0x521412;});}function getUser(_0x2962d9,_0x3d2401){if(intUtil['validateEmail'](_0x3d2401)){return request({'uri':util[_0x81bc('0x18')]('%s/api/v2/agents',_0x2962d9['remoteUri']),'qs':{'email':_0x3d2401}})[_0x81bc('0x1e')](function(_0xb714b){if(_0xb714b[_0x81bc('0x1f')]){logger[_0x81bc('0x1c')](_0x81bc('0x20'));return _[_0x81bc('0x21')](_0xb714b,function(_0x2f4e96){return _0x2f4e96[_0x81bc('0x22')][_0x81bc('0x23')]===_0x3d2401;});}else{logger[_0x81bc('0x1c')](_0x81bc('0x24'));return request({'uri':util['format'](_0x81bc('0x25'),_0x2962d9[_0x81bc('0x1a')])})[_0x81bc('0x1e')](function(_0x4fa012){logger['info']('Admin\x20account\x20selected.');return _0x4fa012;});}});}else{logger[_0x81bc('0x1c')](_0x81bc('0x26'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x2962d9[_0x81bc('0x1a')])})['then'](function(_0x2d9aa6){logger[_0x81bc('0x1c')](_0x81bc('0x27'));return _0x2d9aa6;});}}function getEndUser(_0x301676,_0x339ea7,_0x5e0dd0){logger[_0x81bc('0x1c')]('Searching\x20enduser\x20with\x20phone',_0x5e0dd0);return request({'uri':util[_0x81bc('0x18')](_0x81bc('0x28'),_0x301676[_0x81bc('0x1a')]),'qs':{'phone':_0x5e0dd0}})[_0x81bc('0x1e')](function(_0x3fbca6){if(_0x3fbca6[_0x81bc('0x1f')]){logger[_0x81bc('0x1c')](_0x81bc('0x29'));return _[_0x81bc('0x21')](_0x3fbca6,{'phone':_0x5e0dd0});}else{logger[_0x81bc('0x1c')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x81bc('0x28'),_0x301676['remoteUri']),'method':_0x81bc('0x1b'),'body':{'name':_0x339ea7,'phone':_0x5e0dd0}})[_0x81bc('0x1e')](function(_0x6b0a47){logger[_0x81bc('0x1c')](_0x81bc('0x2a'));return _0x6b0a47;});}});}function getAuth(_0xe11b57){return util['format'](_0x81bc('0x2b'),new Buffer(_0xe11b57[_0x81bc('0x2c')]+':X')[_0x81bc('0x2d')]('base64'));}function request(_0x39e9ca){logger[_0x81bc('0x2e')](_0x81bc('0x2f'),JSON[_0x81bc('0x30')](_0x39e9ca));return rp(_[_0x81bc('0x8')](_0x39e9ca,{'method':_0x81bc('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x484f8a,_0x1d814f){var _0xb4f000=[];if(_0x484f8a&&_0x484f8a[_0x81bc('0x1f')]>0x0){_0xb4f000=_[_0x81bc('0x32')](_0x484f8a,_0x1d814f);}return _0xb4f000;}function getCustomFields(_0x1f3145,_0x10fd0d){var _0x39e532=[];var _0x6b91af={'custom_fields':[]};if(_0x1f3145[_0x81bc('0x1f')]>0x0){_[_0x81bc('0x33')](_0x1f3145,function(_0x2ca639){if(_['includes']([_0x81bc('0x34'),_0x81bc('0x35')],_0x2ca639[_0x81bc('0x36')])&&_0x2ca639['nameField']&&!_0x2ca639[_0x81bc('0x37')]){_0x6b91af[_0x2ca639[_0x81bc('0x38')][_0x81bc('0x39')]()]=_0x2ca639[_0x81bc('0x3a')][_0x81bc('0x2d')]();}else if(_[_0x81bc('0x3b')]([_0x81bc('0x34'),_0x81bc('0x35')],_0x2ca639[_0x81bc('0x36')])&&_0x2ca639[_0x81bc('0x3c')]&&_0x2ca639['customField']){_0x6b91af[_0x81bc('0x16')][_0x81bc('0x3d')]({'id':_0x2ca639[_0x81bc('0x3c')],'value':_0x2ca639[_0x81bc('0x3a')][_0x81bc('0x2d')]()});}else if(_0x2ca639[_0x81bc('0x36')]===_0x81bc('0x3e')&&_0x2ca639['variableName']&&_0x2ca639[_0x81bc('0x3c')]&&_0x2ca639[_0x81bc('0x37')]){_0x10fd0d[_0x2ca639['variableName']]&&_0x6b91af['custom_fields'][_0x81bc('0x3d')]({'id':_0x2ca639['idField'],'value':_0x10fd0d[_0x2ca639['variableName']][_0x81bc('0x2d')]()});}else if(_0x2ca639[_0x81bc('0x36')]===_0x81bc('0x3f')&&_0x2ca639[_0x81bc('0x40')]&&_0x2ca639[_0x81bc('0x40')][_0x81bc('0x13')]&&_0x2ca639[_0x81bc('0x3c')]&&_0x2ca639[_0x81bc('0x37')]){_0x10fd0d[_0x2ca639[_0x81bc('0x40')]['name'][_0x81bc('0x39')]()]&&_0x6b91af[_0x81bc('0x16')][_0x81bc('0x3d')]({'id':_0x2ca639[_0x81bc('0x3c')],'value':_0x10fd0d[_0x2ca639['Variable'][_0x81bc('0x13')]['toLowerCase']()]['toString']()});}});}return _0x6b91af;}exports['queue']=function(_0x7a2704,_0x24d9b5,_0x222811,_0x48efb5,_0x20976f,_0x63c595){var _0x4520bf,_0x55fd7e;_0x63c595[_0x81bc('0x1a')]=intUtil['stripTrailingSlash'](_0x63c595[_0x81bc('0x1a')]);_0x63c595[_0x81bc('0x41')]=intUtil['stripTrailingSlash'](_0x63c595['serverUrl']);if(_0x20976f&&_0x20976f[_0x81bc('0x42')]){logger[_0x81bc('0x1c')](_0x81bc('0x43'),_0x81bc('0x44'));_0x24d9b5[_0x81bc('0x45')]=util[_0x81bc('0x18')](_0x81bc('0x46'),_0x63c595[_0x81bc('0x41')],_0x24d9b5[_0x81bc('0x47')],md5(_0x24d9b5[_0x81bc('0x47')]));}else{_0x24d9b5[_0x81bc('0x45')]='';}headers[_0x81bc('0x48')]=getAuth(_0x63c595);return getUser(_0x63c595,_0x48efb5['email'])[_0x81bc('0x1e')](function(_0x1936e9){_0x4520bf=_0x1936e9;logger[_0x81bc('0x1c')](_0x81bc('0x49'),_0x4520bf['id']);return getEndUser(_0x63c595,_0x24d9b5['calleridname'],_0x24d9b5[_0x81bc('0xf')]);})[_0x81bc('0x1e')](function(_0x219f53){_0x55fd7e=_0x219f53;logger['info'](_0x81bc('0x4a'),_0x55fd7e['id']);return getTicket(_0x63c595,_0x4520bf,_0x55fd7e,_0x222811,_0x24d9b5);})[_0x81bc('0x1e')](function(_0x30ef8f){if(_0x30ef8f&&_0x30ef8f['id']){logger[_0x81bc('0x1c')](_0x81bc('0x1d'));logger[_0x81bc('0x1c')](_0x81bc('0x4b'),_0x30ef8f['id']);logger[_0x81bc('0x1c')](_0x81bc('0x43'),_0x81bc('0x4c'));emit(util[_0x81bc('0x18')](_0x81bc('0x4d'),_0x48efb5['name']),_0x81bc('0x4e'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x63c595[_0x81bc('0x1a')],_0x30ef8f['id'])});}})['catch'](function(_0x4926b0){logger[_0x81bc('0x4f')](_0x81bc('0x43'),JSON['stringify'](_0x4926b0));});};exports[_0x81bc('0x50')]=function(_0x6b948f,_0x47f303,_0x4b4fe1,_0x1a9884,_0x3ed477,_0x102144,_0x15b03f){var _0xbe80a6,_0x583c13;_0x102144[_0x81bc('0x1a')]=intUtil[_0x81bc('0x51')](_0x102144[_0x81bc('0x1a')]);_0x102144[_0x81bc('0x41')]=intUtil[_0x81bc('0x51')](_0x102144[_0x81bc('0x41')]);if(_0x15b03f&&_0x15b03f[_0x81bc('0x52')]&&_0x15b03f[_0x81bc('0x52')]!==_0x81bc('0x53')){logger[_0x81bc('0x1c')](_0x81bc('0x54'),_0x81bc('0x44'));_0x47f303[_0x81bc('0x45')]=util[_0x81bc('0x18')](_0x81bc('0x46'),_0x102144[_0x81bc('0x41')],_0x47f303[_0x81bc('0x47')],md5(_0x47f303['uniqueid']));}headers['Authorization']=getAuth(_0x102144);return getUser(_0x102144,_0x1a9884[_0x81bc('0x23')])[_0x81bc('0x1e')](function(_0x269433){_0xbe80a6=_0x269433;logger[_0x81bc('0x1c')]('The\x20User\x20ID\x20is:',_0xbe80a6['id']);return getEndUser(_0x102144,_0x47f303['destcalleridname'],_0x47f303[_0x81bc('0x55')]);})[_0x81bc('0x1e')](function(_0x547b8b){_0x583c13=_0x547b8b;logger[_0x81bc('0x1c')]('The\x20Enduser\x20ID\x20is:',_0x583c13['id']);return getTicket(_0x102144,_0xbe80a6,_0x583c13,_0x4b4fe1,_0x47f303);})[_0x81bc('0x1e')](function(_0x4edb64){if(_0x4edb64&&_0x4edb64['id']){logger[_0x81bc('0x1c')](_0x81bc('0x1d'));logger[_0x81bc('0x1c')](_0x81bc('0x4b'),_0x4edb64['id']);logger[_0x81bc('0x1c')](_0x81bc('0x54'),_0x81bc('0x4c'));emit(util[_0x81bc('0x18')]('user:%s',_0x1a9884[_0x81bc('0x13')]),'trigger:browser:url',{'uri':util[_0x81bc('0x18')]('%s/helpdesk/tickets/%d',_0x102144[_0x81bc('0x1a')],_0x4edb64['id'])});}})[_0x81bc('0x56')](function(_0x5ee2f2){logger[_0x81bc('0x4f')](_0x81bc('0x54'),JSON['stringify'](_0x5ee2f2));});};exports[_0x81bc('0x57')]=function(_0x76f7a0,_0x535f9b,_0x2eae31,_0x484f22,_0x4692cd,_0x5edbd4){var _0x2343fc,_0xcc69bc;_0x5edbd4[_0x81bc('0x1a')]=intUtil['stripTrailingSlash'](_0x5edbd4[_0x81bc('0x1a')]);_0x5edbd4[_0x81bc('0x41')]=intUtil[_0x81bc('0x51')](_0x5edbd4[_0x81bc('0x41')]);if(_0x4692cd&&_0x4692cd[_0x81bc('0x42')]){logger['info']('['+_0x535f9b[_0x81bc('0x58')][_0x81bc('0x59')]()+']',_0x81bc('0x44'));_0x535f9b[_0x81bc('0x45')]=util[_0x81bc('0x18')](_0x81bc('0x46'),_0x5edbd4[_0x81bc('0x41')],_0x535f9b[_0x81bc('0x47')],md5(_0x535f9b[_0x81bc('0x47')]));}else{_0x535f9b['recordingURL']='';}headers['Authorization']=getAuth(_0x5edbd4);return getUser(_0x5edbd4,'')[_0x81bc('0x1e')](function(_0x93f2d9){_0x2343fc=_0x93f2d9;logger[_0x81bc('0x1c')](_0x81bc('0x49'),_0x2343fc['id']);return getEndUser(_0x5edbd4,_0x535f9b[_0x81bc('0xe')],_0x535f9b[_0x81bc('0xf')]);})['then'](function(_0x5f30e6){_0xcc69bc=_0x5f30e6;logger['info'](_0x81bc('0x4a'),_0xcc69bc['id']);return getTicket(_0x5edbd4,_0x2343fc,_0xcc69bc,_0x2eae31,_0x535f9b);})[_0x81bc('0x1e')](function(_0x80cca0){if(_0x80cca0){logger['info']('Ticket\x20created!');logger[_0x81bc('0x1c')](_0x81bc('0x4b'),_0x80cca0['id']);}})[_0x81bc('0x56')](function(_0x4feb98){logger[_0x81bc('0x4f')]('['+_0x535f9b['lastevent'][_0x81bc('0x59')]()+']',JSON['stringify'](_0x4feb98));});};