b3d98d34ef3c8c57a0bb14d5accb3b1bc8d3e00e
[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 _0xb777=['%s/api/v2/agents','length','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','apiKey','toString','base64','stringify','GET','includes','string','picklist','type','nameField','customField','toLowerCase','content','push','variable','variableName','idField','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','calleridname','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','monitor_format','toUpperCase','The\x20User\x20ID\x20is:','lastevent','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','defaults','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','calleridnum','Descriptions','Fields','custom_fields','format','remoteUri','POST','then','info','validateEmail'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb777,0x1e8));var _0x7b77=function(_0x58ceb9,_0x5601df){_0x58ceb9=_0x58ceb9-0x0;var _0x3d0ff5=_0xb777[_0x58ceb9];return _0x3d0ff5;};'use strict';var _=require(_0x7b77('0x0'));var rp=require(_0x7b77('0x1'));var md5=require(_0x7b77('0x2'));var util=require(_0x7b77('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7b77('0x4'));var config=require(_0x7b77('0x5'));var logger=require(_0x7b77('0x6'))('freshdesk');config['redis']=_[_0x7b77('0x7')](config['redis'],{'host':_0x7b77('0x8'),'port':0x18eb});var io=require(_0x7b77('0x9'))(new Redis(config['redis']));var headers={'Content-Type':_0x7b77('0xa'),'Accept':'application/json'};function emit(_0x477646,_0x58a5bb,_0x1d903e){io['to'](_0x477646)['emit'](_0x58a5bb,_0x1d903e);}function getTicket(_0x167a27,_0x2a7dae,_0x3b1f0b,_0x1e2e0d,_0x655583){logger['info'](_0x7b77('0xb'));var _0x44ec4a=_['merge']({'responder_id':_0x2a7dae['id'],'requester_id':_0x3b1f0b['id'],'name':util['format']('Caller\x20-\x20%s',_0x655583['calleridname']),'phone':_0x655583[_0x7b77('0xc')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x1e2e0d['Subjects'],_0x655583,'\x20'),'description':intUtil['getString'](_0x1e2e0d[_0x7b77('0xd')],_0x655583,'<br>'),'tags':getTags(_0x1e2e0d['Tags'],'name')},getCustomFields(_0x1e2e0d[_0x7b77('0xe')],_0x655583));_0x44ec4a['custom_fields']=_['mapValues'](_['keyBy'](_0x44ec4a[_0x7b77('0xf')],'id'),'value');return request({'uri':util[_0x7b77('0x10')]('%s/api/v2/tickets',_0x167a27[_0x7b77('0x11')]),'method':_0x7b77('0x12'),'body':_0x44ec4a})[_0x7b77('0x13')](function(_0x3e0536){logger[_0x7b77('0x14')]('Ticket\x20created!');return _0x3e0536;});}function getUser(_0xbc0c96,_0x417315){if(intUtil[_0x7b77('0x15')](_0x417315)){return request({'uri':util['format'](_0x7b77('0x16'),_0xbc0c96[_0x7b77('0x11')]),'qs':{'email':_0x417315}})['then'](function(_0x51cb07){if(_0x51cb07[_0x7b77('0x17')]){logger[_0x7b77('0x14')](_0x7b77('0x18'));return _[_0x7b77('0x19')](_0x51cb07,function(_0x54d706){return _0x54d706[_0x7b77('0x1a')]['email']===_0x417315;});}else{logger[_0x7b77('0x14')](_0x7b77('0x1b'));return request({'uri':util[_0x7b77('0x10')](_0x7b77('0x1c'),_0xbc0c96[_0x7b77('0x11')])})[_0x7b77('0x13')](function(_0x625316){logger[_0x7b77('0x14')](_0x7b77('0x1d'));return _0x625316;});}});}else{logger[_0x7b77('0x14')](_0x7b77('0x1e'));return request({'uri':util[_0x7b77('0x10')](_0x7b77('0x1c'),_0xbc0c96[_0x7b77('0x11')])})[_0x7b77('0x13')](function(_0x4e7687){logger[_0x7b77('0x14')](_0x7b77('0x1d'));return _0x4e7687;});}}function getEndUser(_0x3d029e,_0x35d9b8,_0x11489d){logger[_0x7b77('0x14')](_0x7b77('0x1f'),_0x11489d);return request({'uri':util[_0x7b77('0x10')](_0x7b77('0x20'),_0x3d029e['remoteUri']),'qs':{'phone':_0x11489d}})[_0x7b77('0x13')](function(_0x18c36d){if(_0x18c36d[_0x7b77('0x17')]){logger[_0x7b77('0x14')](_0x7b77('0x21'));return _[_0x7b77('0x19')](_0x18c36d,{'phone':_0x11489d});}else{logger['info'](_0x7b77('0x22'));return request({'uri':util[_0x7b77('0x10')](_0x7b77('0x20'),_0x3d029e['remoteUri']),'method':_0x7b77('0x12'),'body':{'name':_0x35d9b8,'phone':_0x11489d}})[_0x7b77('0x13')](function(_0x54cc1e){logger[_0x7b77('0x14')](_0x7b77('0x23'));return _0x54cc1e;});}});}function getAuth(_0x53123f){return util[_0x7b77('0x10')]('Basic\x20%s',new Buffer(_0x53123f[_0x7b77('0x24')]+':X')[_0x7b77('0x25')](_0x7b77('0x26')));}function request(_0xf5538e){logger['debug']('[HTTP]',JSON[_0x7b77('0x27')](_0xf5538e));return rp(_[_0x7b77('0x7')](_0xf5538e,{'method':_0x7b77('0x28'),'headers':headers,'json':!![]}));}function getTags(_0x43aee7,_0x286a1f){var _0x4d8db1=[];if(_0x43aee7&&_0x43aee7[_0x7b77('0x17')]>0x0){_0x4d8db1=_['map'](_0x43aee7,_0x286a1f);}return _0x4d8db1;}function getCustomFields(_0x78cdc6,_0xbda070){var _0x4a1d47=[];var _0xdd493f={'custom_fields':[]};if(_0x78cdc6[_0x7b77('0x17')]>0x0){_['forEach'](_0x78cdc6,function(_0x117983){if(_[_0x7b77('0x29')]([_0x7b77('0x2a'),_0x7b77('0x2b')],_0x117983[_0x7b77('0x2c')])&&_0x117983[_0x7b77('0x2d')]&&!_0x117983[_0x7b77('0x2e')]){_0xdd493f[_0x117983[_0x7b77('0x2d')][_0x7b77('0x2f')]()]=_0x117983[_0x7b77('0x30')][_0x7b77('0x25')]();}else if(_[_0x7b77('0x29')]([_0x7b77('0x2a'),_0x7b77('0x2b')],_0x117983[_0x7b77('0x2c')])&&_0x117983['idField']&&_0x117983['customField']){_0xdd493f['custom_fields'][_0x7b77('0x31')]({'id':_0x117983['idField'],'value':_0x117983[_0x7b77('0x30')][_0x7b77('0x25')]()});}else if(_0x117983[_0x7b77('0x2c')]===_0x7b77('0x32')&&_0x117983[_0x7b77('0x33')]&&_0x117983['idField']&&_0x117983[_0x7b77('0x2e')]){_0xbda070[_0x117983[_0x7b77('0x33')]]&&_0xdd493f['custom_fields'][_0x7b77('0x31')]({'id':_0x117983[_0x7b77('0x34')],'value':_0xbda070[_0x117983['variableName']][_0x7b77('0x25')]()});}else if(_0x117983['type']===_0x7b77('0x35')&&_0x117983['Variable']&&_0x117983[_0x7b77('0x36')][_0x7b77('0x37')]&&_0x117983[_0x7b77('0x34')]&&_0x117983['customField']){_0xbda070[_0x117983['Variable'][_0x7b77('0x37')][_0x7b77('0x2f')]()]&&_0xdd493f[_0x7b77('0xf')][_0x7b77('0x31')]({'id':_0x117983[_0x7b77('0x34')],'value':_0xbda070[_0x117983[_0x7b77('0x36')][_0x7b77('0x37')][_0x7b77('0x2f')]()][_0x7b77('0x25')]()});}});}return _0xdd493f;}exports[_0x7b77('0x38')]=function(_0x40e7a7,_0x34b71c,_0x4a2328,_0x54c7c5,_0x208a85,_0x386bcb){var _0x56002b,_0x4367a1;_0x386bcb[_0x7b77('0x11')]=intUtil[_0x7b77('0x39')](_0x386bcb[_0x7b77('0x11')]);_0x386bcb[_0x7b77('0x3a')]=intUtil[_0x7b77('0x39')](_0x386bcb[_0x7b77('0x3a')]);if(_0x208a85&&_0x208a85['monitor_format']){logger[_0x7b77('0x14')](_0x7b77('0x3b'),_0x7b77('0x3c'));_0x34b71c['recordingURL']=util[_0x7b77('0x10')](_0x7b77('0x3d'),_0x386bcb['serverUrl'],_0x34b71c[_0x7b77('0x3e')],md5(_0x34b71c[_0x7b77('0x3e')]));}else{_0x34b71c[_0x7b77('0x3f')]='';}headers[_0x7b77('0x40')]=getAuth(_0x386bcb);return getUser(_0x386bcb,_0x54c7c5[_0x7b77('0x41')])[_0x7b77('0x13')](function(_0x5e3160){_0x56002b=_0x5e3160;logger['info']('The\x20User\x20ID\x20is:',_0x56002b['id']);return getEndUser(_0x386bcb,_0x34b71c[_0x7b77('0x42')],_0x34b71c[_0x7b77('0xc')]);})[_0x7b77('0x13')](function(_0x220bac){_0x4367a1=_0x220bac;logger[_0x7b77('0x14')]('The\x20Enduser\x20ID\x20is:',_0x4367a1['id']);return getTicket(_0x386bcb,_0x56002b,_0x4367a1,_0x4a2328,_0x34b71c);})[_0x7b77('0x13')](function(_0xb89689){if(_0xb89689&&_0xb89689['id']){logger[_0x7b77('0x14')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0xb89689['id']);logger['info']('[QUEUE]',_0x7b77('0x43'));emit(util[_0x7b77('0x10')]('user:%s',_0x54c7c5[_0x7b77('0x37')]),_0x7b77('0x44'),{'uri':util['format'](_0x7b77('0x45'),_0x386bcb[_0x7b77('0x11')],_0xb89689['id'])});}})[_0x7b77('0x46')](function(_0x102650){logger[_0x7b77('0x47')](_0x7b77('0x3b'),JSON[_0x7b77('0x27')](_0x102650));});};exports['outbound']=function(_0x23b4fc,_0x1fcbaa,_0x56d65d,_0x2791f9,_0x36c28e,_0x2da549,_0x16bebc){var _0x2ffe67,_0x136a86;_0x2da549['remoteUri']=intUtil[_0x7b77('0x39')](_0x2da549[_0x7b77('0x11')]);_0x2da549['serverUrl']=intUtil[_0x7b77('0x39')](_0x2da549['serverUrl']);if(_0x16bebc&&_0x16bebc[_0x7b77('0x48')]&&_0x16bebc['recordingFormat']!==_0x7b77('0x49')){logger['info'](_0x7b77('0x4a'),_0x7b77('0x3c'));_0x1fcbaa[_0x7b77('0x3f')]=util[_0x7b77('0x10')](_0x7b77('0x3d'),_0x2da549[_0x7b77('0x3a')],_0x1fcbaa['uniqueid'],md5(_0x1fcbaa[_0x7b77('0x3e')]));}headers[_0x7b77('0x40')]=getAuth(_0x2da549);return getUser(_0x2da549,_0x2791f9[_0x7b77('0x41')])[_0x7b77('0x13')](function(_0x41e698){_0x2ffe67=_0x41e698;logger['info']('The\x20User\x20ID\x20is:',_0x2ffe67['id']);return getEndUser(_0x2da549,_0x1fcbaa[_0x7b77('0x4b')],_0x1fcbaa['destcalleridnum']);})[_0x7b77('0x13')](function(_0x2cff40){_0x136a86=_0x2cff40;logger['info'](_0x7b77('0x4c'),_0x136a86['id']);return getTicket(_0x2da549,_0x2ffe67,_0x136a86,_0x56d65d,_0x1fcbaa);})[_0x7b77('0x13')](function(_0x1905ac){if(_0x1905ac&&_0x1905ac['id']){logger[_0x7b77('0x14')](_0x7b77('0x4d'));logger[_0x7b77('0x14')](_0x7b77('0x4e'),_0x1905ac['id']);logger[_0x7b77('0x14')](_0x7b77('0x4a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7b77('0x10')](_0x7b77('0x4f'),_0x2791f9[_0x7b77('0x37')]),'trigger:browser:url',{'uri':util[_0x7b77('0x10')](_0x7b77('0x45'),_0x2da549['remoteUri'],_0x1905ac['id'])});}})['catch'](function(_0x1f817b){logger[_0x7b77('0x47')](_0x7b77('0x4a'),JSON[_0x7b77('0x27')](_0x1f817b));});};exports[_0x7b77('0x50')]=function(_0x1ef075,_0x2e47c2,_0x541d1e,_0x3b4cf1,_0x2b2c86,_0x4895c6){var _0x4b54f8,_0x300e50;_0x4895c6['remoteUri']=intUtil[_0x7b77('0x39')](_0x4895c6[_0x7b77('0x11')]);_0x4895c6['serverUrl']=intUtil[_0x7b77('0x39')](_0x4895c6[_0x7b77('0x3a')]);if(_0x2b2c86&&_0x2b2c86[_0x7b77('0x51')]){logger['info']('['+_0x2e47c2['lastevent'][_0x7b77('0x52')]()+']',_0x7b77('0x3c'));_0x2e47c2[_0x7b77('0x3f')]=util[_0x7b77('0x10')](_0x7b77('0x3d'),_0x4895c6[_0x7b77('0x3a')],_0x2e47c2[_0x7b77('0x3e')],md5(_0x2e47c2[_0x7b77('0x3e')]));}else{_0x2e47c2[_0x7b77('0x3f')]='';}headers[_0x7b77('0x40')]=getAuth(_0x4895c6);return getUser(_0x4895c6,'')[_0x7b77('0x13')](function(_0x3e24d4){_0x4b54f8=_0x3e24d4;logger[_0x7b77('0x14')](_0x7b77('0x53'),_0x4b54f8['id']);return getEndUser(_0x4895c6,_0x2e47c2[_0x7b77('0x42')],_0x2e47c2[_0x7b77('0xc')]);})[_0x7b77('0x13')](function(_0x29329e){_0x300e50=_0x29329e;logger[_0x7b77('0x14')](_0x7b77('0x4c'),_0x300e50['id']);return getTicket(_0x4895c6,_0x4b54f8,_0x300e50,_0x541d1e,_0x2e47c2);})[_0x7b77('0x13')](function(_0x442777){if(_0x442777){logger['info'](_0x7b77('0x4d'));logger[_0x7b77('0x14')]('The\x20Ticket\x20ID\x20is:',_0x442777['id']);}})[_0x7b77('0x46')](function(_0x4f06ec){logger[_0x7b77('0x47')]('['+_0x2e47c2[_0x7b77('0x54')]['toUpperCase']()+']',JSON[_0x7b77('0x27')](_0x4f06ec));});};