4a871916cff1215ab300ae48268a599ec59af847
[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 _0xa1ab=['Subjects','<br>','name','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','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.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','POST','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','stringify','defaults','GET','map','forEach','includes','string','nameField','customField','toLowerCase','picklist','type','idField','content','variable','variableName','push','customVariable','Variable','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20Enduser\x20ID\x20is:','trigger:browser:url','unmanaged','toUpperCase','calleridname','lastevent','md5','ioredis','./util','../../../../config/environment','freshdesk','redis','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridnum','getString'];(function(_0x4950a0,_0x1c04e2){var _0x56d5a0=function(_0x3bf439){while(--_0x3bf439){_0x4950a0['push'](_0x4950a0['shift']());}};_0x56d5a0(++_0x1c04e2);}(_0xa1ab,0x1ae));var _0xba1a=function(_0x423cc8,_0x51155e){_0x423cc8=_0x423cc8-0x0;var _0x16f336=_0xa1ab[_0x423cc8];return _0x16f336;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xba1a('0x0'));var util=require('util');var Redis=require(_0xba1a('0x1'));var intUtil=require(_0xba1a('0x2'));var config=require(_0xba1a('0x3'));var logger=require('../../../../config/logger')(_0xba1a('0x4'));config[_0xba1a('0x5')]=_['defaults'](config[_0xba1a('0x5')],{'host':_0xba1a('0x6'),'port':0x18eb});var io=require(_0xba1a('0x7'))(new Redis(config[_0xba1a('0x5')]));var headers={'Content-Type':_0xba1a('0x8'),'Accept':_0xba1a('0x8')};function emit(_0x42dd63,_0x596b2b,_0x5908a4){io['to'](_0x42dd63)['emit'](_0x596b2b,_0x5908a4);}function getTicket(_0x53e506,_0x3c818b,_0x4bf345,_0x4d20ee,_0x274b13){logger[_0xba1a('0x9')](_0xba1a('0xa'));var _0x30517b=_['merge']({'responder_id':_0x3c818b['id'],'requester_id':_0x4bf345['id'],'name':util[_0xba1a('0xb')](_0xba1a('0xc'),_0x274b13['calleridname']),'phone':_0x274b13[_0xba1a('0xd')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xba1a('0xe')](_0x4d20ee[_0xba1a('0xf')],_0x274b13,'\x20'),'description':intUtil[_0xba1a('0xe')](_0x4d20ee['Descriptions'],_0x274b13,_0xba1a('0x10')),'tags':getTags(_0x4d20ee['Tags'],_0xba1a('0x11'))},getCustomFields(_0x4d20ee['Fields'],_0x274b13));_0x30517b[_0xba1a('0x12')]=_[_0xba1a('0x13')](_[_0xba1a('0x14')](_0x30517b[_0xba1a('0x12')],'id'),_0xba1a('0x15'));return request({'uri':util[_0xba1a('0xb')](_0xba1a('0x16'),_0x53e506['remoteUri']),'method':'POST','body':_0x30517b})[_0xba1a('0x17')](function(_0x27133c){logger[_0xba1a('0x9')](_0xba1a('0x18'));return _0x27133c;});}function getUser(_0x328e70,_0x5ea513){if(intUtil[_0xba1a('0x19')](_0x5ea513)){return request({'uri':util[_0xba1a('0xb')](_0xba1a('0x1a'),_0x328e70[_0xba1a('0x1b')]),'qs':{'email':_0x5ea513}})[_0xba1a('0x17')](function(_0x2c46a5){if(_0x2c46a5['length']){logger[_0xba1a('0x9')]('Agent\x20found!');return _[_0xba1a('0x1c')](_0x2c46a5,function(_0x78ac04){return _0x78ac04[_0xba1a('0x1d')][_0xba1a('0x1e')]===_0x5ea513;});}else{logger[_0xba1a('0x9')](_0xba1a('0x1f'));return request({'uri':util['format'](_0xba1a('0x20'),_0x328e70[_0xba1a('0x1b')])})[_0xba1a('0x17')](function(_0x20ff2e){logger[_0xba1a('0x9')]('Admin\x20account\x20selected.');return _0x20ff2e;});}});}else{logger['info'](_0xba1a('0x21'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x328e70[_0xba1a('0x1b')])})[_0xba1a('0x17')](function(_0x331224){logger[_0xba1a('0x9')](_0xba1a('0x22'));return _0x331224;});}}function getEndUser(_0x545633,_0x2426d1,_0x50069a){logger['info'](_0xba1a('0x23'),_0x50069a);return request({'uri':util[_0xba1a('0xb')](_0xba1a('0x24'),_0x545633[_0xba1a('0x1b')]),'qs':{'phone':_0x50069a}})[_0xba1a('0x17')](function(_0xb5127a){if(_0xb5127a[_0xba1a('0x25')]){logger['info']('Enduser\x20found!');return _[_0xba1a('0x1c')](_0xb5127a,{'phone':_0x50069a});}else{logger[_0xba1a('0x9')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xba1a('0xb')](_0xba1a('0x24'),_0x545633[_0xba1a('0x1b')]),'method':_0xba1a('0x26'),'body':{'name':_0x2426d1,'phone':_0x50069a}})[_0xba1a('0x17')](function(_0x4be049){logger[_0xba1a('0x9')](_0xba1a('0x27'));return _0x4be049;});}});}function getAuth(_0x33c041){return util[_0xba1a('0xb')](_0xba1a('0x28'),new Buffer(_0x33c041[_0xba1a('0x29')]+':X')[_0xba1a('0x2a')]('base64'));}function request(_0x2ba5ac){logger[_0xba1a('0x2b')]('[HTTP]',JSON[_0xba1a('0x2c')](_0x2ba5ac));return rp(_[_0xba1a('0x2d')](_0x2ba5ac,{'method':_0xba1a('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x63126e,_0x3c73c3){var _0x52d39c=[];if(_0x63126e&&_0x63126e[_0xba1a('0x25')]>0x0){_0x52d39c=_[_0xba1a('0x2f')](_0x63126e,_0x3c73c3);}return _0x52d39c;}function getCustomFields(_0x5cf891,_0x1ba489){var _0x345326=[];var _0x26382c={'custom_fields':[]};if(_0x5cf891['length']>0x0){_[_0xba1a('0x30')](_0x5cf891,function(_0x3f5e1f){if(_[_0xba1a('0x31')]([_0xba1a('0x32'),'picklist'],_0x3f5e1f['type'])&&_0x3f5e1f[_0xba1a('0x33')]&&!_0x3f5e1f[_0xba1a('0x34')]){_0x26382c[_0x3f5e1f[_0xba1a('0x33')][_0xba1a('0x35')]()]=_0x3f5e1f['content'][_0xba1a('0x2a')]();}else if(_[_0xba1a('0x31')]([_0xba1a('0x32'),_0xba1a('0x36')],_0x3f5e1f[_0xba1a('0x37')])&&_0x3f5e1f[_0xba1a('0x38')]&&_0x3f5e1f[_0xba1a('0x34')]){_0x26382c['custom_fields']['push']({'id':_0x3f5e1f[_0xba1a('0x38')],'value':_0x3f5e1f[_0xba1a('0x39')][_0xba1a('0x2a')]()});}else if(_0x3f5e1f[_0xba1a('0x37')]===_0xba1a('0x3a')&&_0x3f5e1f[_0xba1a('0x3b')]&&_0x3f5e1f[_0xba1a('0x38')]&&_0x3f5e1f[_0xba1a('0x34')]){_0x1ba489[_0x3f5e1f[_0xba1a('0x3b')]]&&_0x26382c[_0xba1a('0x12')][_0xba1a('0x3c')]({'id':_0x3f5e1f[_0xba1a('0x38')],'value':_0x1ba489[_0x3f5e1f[_0xba1a('0x3b')]][_0xba1a('0x2a')]()});}else if(_0x3f5e1f[_0xba1a('0x37')]===_0xba1a('0x3d')&&_0x3f5e1f[_0xba1a('0x3e')]&&_0x3f5e1f[_0xba1a('0x3e')][_0xba1a('0x11')]&&_0x3f5e1f['idField']&&_0x3f5e1f[_0xba1a('0x34')]){_0x1ba489[_0x3f5e1f[_0xba1a('0x3e')][_0xba1a('0x11')]['toLowerCase']()]&&_0x26382c['custom_fields'][_0xba1a('0x3c')]({'id':_0x3f5e1f[_0xba1a('0x38')],'value':_0x1ba489[_0x3f5e1f[_0xba1a('0x3e')][_0xba1a('0x11')]['toLowerCase']()]['toString']()});}});}return _0x26382c;}exports[_0xba1a('0x3f')]=function(_0x5216de,_0x595b45,_0x372675,_0x542903,_0x27a113,_0x14d721){var _0x54e741,_0x300dc3;_0x14d721[_0xba1a('0x1b')]=intUtil['stripTrailingSlash'](_0x14d721[_0xba1a('0x1b')]);_0x14d721[_0xba1a('0x40')]=intUtil[_0xba1a('0x41')](_0x14d721['serverUrl']);if(_0x27a113&&_0x27a113[_0xba1a('0x42')]){logger['info'](_0xba1a('0x43'),_0xba1a('0x44'));_0x595b45[_0xba1a('0x45')]=util[_0xba1a('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x14d721[_0xba1a('0x40')],_0x595b45[_0xba1a('0x46')],md5(_0x595b45[_0xba1a('0x46')]));}else{_0x595b45[_0xba1a('0x45')]='';}headers[_0xba1a('0x47')]=getAuth(_0x14d721);return getUser(_0x14d721,_0x542903[_0xba1a('0x1e')])['then'](function(_0x387427){_0x54e741=_0x387427;logger[_0xba1a('0x9')](_0xba1a('0x48'),_0x54e741['id']);return getEndUser(_0x14d721,_0x595b45['calleridname'],_0x595b45['calleridnum']);})[_0xba1a('0x17')](function(_0x388589){_0x300dc3=_0x388589;logger['info']('The\x20Enduser\x20ID\x20is:',_0x300dc3['id']);return getTicket(_0x14d721,_0x54e741,_0x300dc3,_0x372675,_0x595b45);})[_0xba1a('0x17')](function(_0x20e925){if(_0x20e925&&_0x20e925['id']){logger['info'](_0xba1a('0x18'));logger[_0xba1a('0x9')](_0xba1a('0x49'),_0x20e925['id']);logger[_0xba1a('0x9')](_0xba1a('0x43'),_0xba1a('0x4a'));emit(util[_0xba1a('0xb')](_0xba1a('0x4b'),_0x542903[_0xba1a('0x11')]),'trigger:browser:url',{'uri':util[_0xba1a('0xb')](_0xba1a('0x4c'),_0x14d721[_0xba1a('0x1b')],_0x20e925['id'])});}})[_0xba1a('0x4d')](function(_0x4a5b72){logger[_0xba1a('0x4e')]('[QUEUE]',JSON['stringify'](_0x4a5b72));});};exports['outbound']=function(_0x4da00d,_0x4c9f7a,_0x17e191,_0x5d2837,_0x40cd30,_0x11612e,_0x544d4a){var _0x4c2692,_0x4208d9;_0x11612e[_0xba1a('0x1b')]=intUtil[_0xba1a('0x41')](_0x11612e[_0xba1a('0x1b')]);_0x11612e[_0xba1a('0x40')]=intUtil['stripTrailingSlash'](_0x11612e[_0xba1a('0x40')]);if(_0x544d4a&&_0x544d4a['recordingFormat']&&_0x544d4a[_0xba1a('0x4f')]!==_0xba1a('0x50')){logger[_0xba1a('0x9')](_0xba1a('0x51'),_0xba1a('0x44'));_0x4c9f7a['recordingURL']=util[_0xba1a('0xb')](_0xba1a('0x52'),_0x11612e[_0xba1a('0x40')],_0x4c9f7a[_0xba1a('0x46')],md5(_0x4c9f7a[_0xba1a('0x46')]));}headers['Authorization']=getAuth(_0x11612e);return getUser(_0x11612e,_0x5d2837['email'])[_0xba1a('0x17')](function(_0x5f2480){_0x4c2692=_0x5f2480;logger[_0xba1a('0x9')](_0xba1a('0x48'),_0x4c2692['id']);return getEndUser(_0x11612e,_0x4c9f7a['destcalleridname'],_0x4c9f7a['destcalleridnum']);})[_0xba1a('0x17')](function(_0x4c57a8){_0x4208d9=_0x4c57a8;logger['info'](_0xba1a('0x53'),_0x4208d9['id']);return getTicket(_0x11612e,_0x4c2692,_0x4208d9,_0x17e191,_0x4c9f7a);})['then'](function(_0x24b8bd){if(_0x24b8bd&&_0x24b8bd['id']){logger['info'](_0xba1a('0x18'));logger[_0xba1a('0x9')]('The\x20Ticket\x20ID\x20is:',_0x24b8bd['id']);logger['info'](_0xba1a('0x51'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xba1a('0xb')]('user:%s',_0x5d2837['name']),_0xba1a('0x54'),{'uri':util[_0xba1a('0xb')]('%s/helpdesk/tickets/%d',_0x11612e[_0xba1a('0x1b')],_0x24b8bd['id'])});}})['catch'](function(_0x7c2a1c){logger[_0xba1a('0x4e')](_0xba1a('0x51'),JSON[_0xba1a('0x2c')](_0x7c2a1c));});};exports[_0xba1a('0x55')]=function(_0xc4dc5d,_0x402010,_0x30bf93,_0x34ea4f,_0x2e28c4,_0x1e46b7){var _0x1564c5,_0x4c6701;_0x1e46b7['remoteUri']=intUtil[_0xba1a('0x41')](_0x1e46b7[_0xba1a('0x1b')]);_0x1e46b7[_0xba1a('0x40')]=intUtil[_0xba1a('0x41')](_0x1e46b7[_0xba1a('0x40')]);if(_0x2e28c4&&_0x2e28c4[_0xba1a('0x42')]){logger[_0xba1a('0x9')]('['+_0x402010['lastevent'][_0xba1a('0x56')]()+']',_0xba1a('0x44'));_0x402010[_0xba1a('0x45')]=util[_0xba1a('0xb')](_0xba1a('0x52'),_0x1e46b7[_0xba1a('0x40')],_0x402010[_0xba1a('0x46')],md5(_0x402010[_0xba1a('0x46')]));}else{_0x402010[_0xba1a('0x45')]='';}headers[_0xba1a('0x47')]=getAuth(_0x1e46b7);return getUser(_0x1e46b7,'')[_0xba1a('0x17')](function(_0x1de85d){_0x1564c5=_0x1de85d;logger[_0xba1a('0x9')](_0xba1a('0x48'),_0x1564c5['id']);return getEndUser(_0x1e46b7,_0x402010[_0xba1a('0x57')],_0x402010[_0xba1a('0xd')]);})[_0xba1a('0x17')](function(_0x5c39cf){_0x4c6701=_0x5c39cf;logger[_0xba1a('0x9')](_0xba1a('0x53'),_0x4c6701['id']);return getTicket(_0x1e46b7,_0x1564c5,_0x4c6701,_0x30bf93,_0x402010);})[_0xba1a('0x17')](function(_0x1011d4){if(_0x1011d4){logger[_0xba1a('0x9')]('Ticket\x20created!');logger[_0xba1a('0x9')](_0xba1a('0x49'),_0x1011d4['id']);}})[_0xba1a('0x4d')](function(_0x3e940d){logger[_0xba1a('0x4e')]('['+_0x402010[_0xba1a('0x58')][_0xba1a('0x56')]()+']',JSON[_0xba1a('0x2c')](_0x3e940d));});};