Built motion from commit d5e4af8c.|2.6.23
[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 _0xcca5=['user:%s','%s/helpdesk/tickets/%d','catch','error','stringify','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','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!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','apiKey','base64','[HTTP]','GET','map','forEach','includes','string','type','nameField','customField','toLowerCase','toString','idField','variable','variableName','push','customVariable','Variable','name','queue','stripTrailingSlash','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...'];(function(_0x21de89,_0x367053){var _0x290b7e=function(_0x540704){while(--_0x540704){_0x21de89['push'](_0x21de89['shift']());}};_0x290b7e(++_0x367053);}(_0xcca5,0x1e3));var _0x5cca=function(_0x20118a,_0x3dbdf3){_0x20118a=_0x20118a-0x0;var _0x538b5f=_0xcca5[_0x20118a];return _0x538b5f;};'use strict';var _=require(_0x5cca('0x0'));var rp=require('request-promise');var md5=require(_0x5cca('0x1'));var util=require('util');var Redis=require(_0x5cca('0x2'));var intUtil=require(_0x5cca('0x3'));var config=require(_0x5cca('0x4'));var logger=require(_0x5cca('0x5'))(_0x5cca('0x6'));config[_0x5cca('0x7')]=_[_0x5cca('0x8')](config[_0x5cca('0x7')],{'host':_0x5cca('0x9'),'port':0x18eb});var io=require(_0x5cca('0xa'))(new Redis(config['redis']));var headers={'Content-Type':_0x5cca('0xb'),'Accept':_0x5cca('0xb')};function emit(_0xae039b,_0x40824f,_0x30bde1){io['to'](_0xae039b)[_0x5cca('0xc')](_0x40824f,_0x30bde1);}function getTicket(_0x3e630d,_0x52e856,_0x41fbb2,_0x64a1da,_0x19a805){logger[_0x5cca('0xd')]('Creating\x20new\x20ticket...');var _0x521b7e=_['merge']({'responder_id':_0x52e856['id'],'requester_id':_0x41fbb2['id'],'name':util[_0x5cca('0xe')](_0x5cca('0xf'),_0x19a805[_0x5cca('0x10')]),'phone':_0x19a805[_0x5cca('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x5cca('0x12')](_0x64a1da[_0x5cca('0x13')],_0x19a805,'\x20'),'description':intUtil[_0x5cca('0x12')](_0x64a1da[_0x5cca('0x14')],_0x19a805,_0x5cca('0x15')),'tags':getTags(_0x64a1da[_0x5cca('0x16')],'name')},getCustomFields(_0x64a1da[_0x5cca('0x17')],_0x19a805));_0x521b7e[_0x5cca('0x18')]=_[_0x5cca('0x19')](_[_0x5cca('0x1a')](_0x521b7e[_0x5cca('0x18')],'id'),_0x5cca('0x1b'));return request({'uri':util['format'](_0x5cca('0x1c'),_0x3e630d[_0x5cca('0x1d')]),'method':_0x5cca('0x1e'),'body':_0x521b7e})[_0x5cca('0x1f')](function(_0x17abf3){logger[_0x5cca('0xd')](_0x5cca('0x20'));return _0x17abf3;});}function getUser(_0x5727e,_0x3bb500){if(intUtil['validateEmail'](_0x3bb500)){return request({'uri':util['format'](_0x5cca('0x21'),_0x5727e[_0x5cca('0x1d')]),'qs':{'email':_0x3bb500}})[_0x5cca('0x1f')](function(_0x41771f){if(_0x41771f[_0x5cca('0x22')]){logger[_0x5cca('0xd')](_0x5cca('0x23'));return _[_0x5cca('0x24')](_0x41771f,function(_0x4a56d4){return _0x4a56d4[_0x5cca('0x25')][_0x5cca('0x26')]===_0x3bb500;});}else{logger[_0x5cca('0xd')](_0x5cca('0x27'));return request({'uri':util[_0x5cca('0xe')](_0x5cca('0x28'),_0x5727e[_0x5cca('0x1d')])})[_0x5cca('0x1f')](function(_0x45e060){logger[_0x5cca('0xd')]('Admin\x20account\x20selected.');return _0x45e060;});}});}else{logger['info'](_0x5cca('0x29'));return request({'uri':util[_0x5cca('0xe')](_0x5cca('0x28'),_0x5727e[_0x5cca('0x1d')])})['then'](function(_0x255b0e){logger[_0x5cca('0xd')]('Admin\x20account\x20selected.');return _0x255b0e;});}}function getEndUser(_0x5d7823,_0x42cd09,_0x3de3b7){logger[_0x5cca('0xd')](_0x5cca('0x2a'),_0x3de3b7);return request({'uri':util[_0x5cca('0xe')](_0x5cca('0x2b'),_0x5d7823[_0x5cca('0x1d')]),'qs':{'phone':_0x3de3b7}})[_0x5cca('0x1f')](function(_0x31e2bd){if(_0x31e2bd[_0x5cca('0x22')]){logger[_0x5cca('0xd')](_0x5cca('0x2c'));return _[_0x5cca('0x24')](_0x31e2bd,{'phone':_0x3de3b7});}else{logger[_0x5cca('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x5cca('0x2b'),_0x5d7823[_0x5cca('0x1d')]),'method':_0x5cca('0x1e'),'body':{'name':_0x42cd09,'phone':_0x3de3b7}})[_0x5cca('0x1f')](function(_0x35a064){logger[_0x5cca('0xd')](_0x5cca('0x2d'));return _0x35a064;});}});}function getAuth(_0x45a5f2){return util[_0x5cca('0xe')](_0x5cca('0x2e'),new Buffer(_0x45a5f2[_0x5cca('0x2f')]+':X')['toString'](_0x5cca('0x30')));}function request(_0x2a5146){logger['debug'](_0x5cca('0x31'),JSON['stringify'](_0x2a5146));return rp(_['defaults'](_0x2a5146,{'method':_0x5cca('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x4cc9b7,_0x22ee5e){var _0xaa0118=[];if(_0x4cc9b7&&_0x4cc9b7['length']>0x0){_0xaa0118=_[_0x5cca('0x33')](_0x4cc9b7,_0x22ee5e);}return _0xaa0118;}function getCustomFields(_0x40413c,_0x57d129){var _0x22c181=[];var _0x54d8b0={'custom_fields':[]};if(_0x40413c['length']>0x0){_[_0x5cca('0x34')](_0x40413c,function(_0xd40bae){if(_[_0x5cca('0x35')]([_0x5cca('0x36'),'picklist'],_0xd40bae[_0x5cca('0x37')])&&_0xd40bae[_0x5cca('0x38')]&&!_0xd40bae[_0x5cca('0x39')]){_0x54d8b0[_0xd40bae[_0x5cca('0x38')][_0x5cca('0x3a')]()]=_0xd40bae['content'][_0x5cca('0x3b')]();}else if(_[_0x5cca('0x35')](['string','picklist'],_0xd40bae['type'])&&_0xd40bae[_0x5cca('0x3c')]&&_0xd40bae[_0x5cca('0x39')]){_0x54d8b0['custom_fields']['push']({'id':_0xd40bae[_0x5cca('0x3c')],'value':_0xd40bae['content'][_0x5cca('0x3b')]()});}else if(_0xd40bae[_0x5cca('0x37')]===_0x5cca('0x3d')&&_0xd40bae[_0x5cca('0x3e')]&&_0xd40bae['idField']&&_0xd40bae[_0x5cca('0x39')]){_0x57d129[_0xd40bae[_0x5cca('0x3e')]]&&_0x54d8b0[_0x5cca('0x18')][_0x5cca('0x3f')]({'id':_0xd40bae[_0x5cca('0x3c')],'value':_0x57d129[_0xd40bae[_0x5cca('0x3e')]][_0x5cca('0x3b')]()});}else if(_0xd40bae[_0x5cca('0x37')]===_0x5cca('0x40')&&_0xd40bae[_0x5cca('0x41')]&&_0xd40bae[_0x5cca('0x41')][_0x5cca('0x42')]&&_0xd40bae[_0x5cca('0x3c')]&&_0xd40bae[_0x5cca('0x39')]){_0x57d129[_0xd40bae['Variable'][_0x5cca('0x42')][_0x5cca('0x3a')]()]&&_0x54d8b0['custom_fields'][_0x5cca('0x3f')]({'id':_0xd40bae[_0x5cca('0x3c')],'value':_0x57d129[_0xd40bae[_0x5cca('0x41')]['name'][_0x5cca('0x3a')]()][_0x5cca('0x3b')]()});}});}return _0x54d8b0;}exports[_0x5cca('0x43')]=function(_0x54dbc3,_0x478d01,_0x291b48,_0x4b7ad4,_0x29e974,_0x39c951){var _0x459944,_0x4ef1aa;_0x39c951['remoteUri']=intUtil[_0x5cca('0x44')](_0x39c951[_0x5cca('0x1d')]);_0x39c951['serverUrl']=intUtil[_0x5cca('0x44')](_0x39c951[_0x5cca('0x45')]);if(_0x29e974&&_0x29e974[_0x5cca('0x46')]){logger[_0x5cca('0xd')](_0x5cca('0x47'),_0x5cca('0x48'));_0x478d01[_0x5cca('0x49')]=util[_0x5cca('0xe')](_0x5cca('0x4a'),_0x39c951['serverUrl'],_0x478d01['uniqueid'],md5(_0x478d01[_0x5cca('0x4b')]));}else{_0x478d01[_0x5cca('0x49')]='';}headers[_0x5cca('0x4c')]=getAuth(_0x39c951);return getUser(_0x39c951,_0x4b7ad4[_0x5cca('0x26')])[_0x5cca('0x1f')](function(_0x1856d4){_0x459944=_0x1856d4;logger[_0x5cca('0xd')](_0x5cca('0x4d'),_0x459944['id']);return getEndUser(_0x39c951,_0x478d01['calleridname'],_0x478d01[_0x5cca('0x11')]);})[_0x5cca('0x1f')](function(_0x3ff4dc){_0x4ef1aa=_0x3ff4dc;logger[_0x5cca('0xd')](_0x5cca('0x4e'),_0x4ef1aa['id']);return getTicket(_0x39c951,_0x459944,_0x4ef1aa,_0x291b48,_0x478d01);})[_0x5cca('0x1f')](function(_0x3debc4){if(_0x3debc4&&_0x3debc4['id']){logger[_0x5cca('0xd')](_0x5cca('0x20'));logger[_0x5cca('0xd')](_0x5cca('0x4f'),_0x3debc4['id']);logger[_0x5cca('0xd')](_0x5cca('0x47'),_0x5cca('0x50'));emit(util[_0x5cca('0xe')](_0x5cca('0x51'),_0x4b7ad4[_0x5cca('0x42')]),'trigger:browser:url',{'uri':util[_0x5cca('0xe')](_0x5cca('0x52'),_0x39c951[_0x5cca('0x1d')],_0x3debc4['id'])});}})[_0x5cca('0x53')](function(_0x1a8048){logger[_0x5cca('0x54')](_0x5cca('0x47'),JSON[_0x5cca('0x55')](_0x1a8048));});};exports['outbound']=function(_0xf5107c,_0x33082f,_0x330f61,_0x44d9ea,_0x429a6c,_0x1de4ef,_0x3e3738){var _0x316ce5,_0x5a6ebb;_0x1de4ef[_0x5cca('0x1d')]=intUtil['stripTrailingSlash'](_0x1de4ef[_0x5cca('0x1d')]);_0x1de4ef[_0x5cca('0x45')]=intUtil[_0x5cca('0x44')](_0x1de4ef[_0x5cca('0x45')]);if(_0x3e3738&&_0x3e3738['recordingFormat']&&_0x3e3738[_0x5cca('0x56')]!=='none'){logger[_0x5cca('0xd')](_0x5cca('0x57'),_0x5cca('0x48'));_0x33082f['recordingURL']=util[_0x5cca('0xe')](_0x5cca('0x4a'),_0x1de4ef[_0x5cca('0x45')],_0x33082f[_0x5cca('0x4b')],md5(_0x33082f[_0x5cca('0x4b')]));}headers[_0x5cca('0x4c')]=getAuth(_0x1de4ef);return getUser(_0x1de4ef,_0x44d9ea[_0x5cca('0x26')])['then'](function(_0x5d1f61){_0x316ce5=_0x5d1f61;logger[_0x5cca('0xd')](_0x5cca('0x4d'),_0x316ce5['id']);return getEndUser(_0x1de4ef,_0x33082f[_0x5cca('0x58')],_0x33082f[_0x5cca('0x59')]);})[_0x5cca('0x1f')](function(_0x472c28){_0x5a6ebb=_0x472c28;logger[_0x5cca('0xd')](_0x5cca('0x4e'),_0x5a6ebb['id']);return getTicket(_0x1de4ef,_0x316ce5,_0x5a6ebb,_0x330f61,_0x33082f);})[_0x5cca('0x1f')](function(_0x1ed0eb){if(_0x1ed0eb&&_0x1ed0eb['id']){logger[_0x5cca('0xd')](_0x5cca('0x20'));logger[_0x5cca('0xd')](_0x5cca('0x4f'),_0x1ed0eb['id']);logger['info'](_0x5cca('0x57'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x5cca('0xe')](_0x5cca('0x51'),_0x44d9ea[_0x5cca('0x42')]),_0x5cca('0x5a'),{'uri':util[_0x5cca('0xe')](_0x5cca('0x52'),_0x1de4ef[_0x5cca('0x1d')],_0x1ed0eb['id'])});}})[_0x5cca('0x53')](function(_0x1e3104){logger['error']('[OUTBOUND]',JSON[_0x5cca('0x55')](_0x1e3104));});};exports[_0x5cca('0x5b')]=function(_0x15b7d8,_0xa7c6c0,_0x5ac7d7,_0x1e6cc4,_0xf54798,_0xadd8a3){var _0x2f924f,_0x174a0a;_0xadd8a3[_0x5cca('0x1d')]=intUtil[_0x5cca('0x44')](_0xadd8a3['remoteUri']);_0xadd8a3[_0x5cca('0x45')]=intUtil[_0x5cca('0x44')](_0xadd8a3[_0x5cca('0x45')]);if(_0xf54798&&_0xf54798[_0x5cca('0x46')]){logger[_0x5cca('0xd')]('['+_0xa7c6c0[_0x5cca('0x5c')][_0x5cca('0x5d')]()+']',_0x5cca('0x48'));_0xa7c6c0[_0x5cca('0x49')]=util['format'](_0x5cca('0x4a'),_0xadd8a3[_0x5cca('0x45')],_0xa7c6c0[_0x5cca('0x4b')],md5(_0xa7c6c0[_0x5cca('0x4b')]));}else{_0xa7c6c0[_0x5cca('0x49')]='';}headers[_0x5cca('0x4c')]=getAuth(_0xadd8a3);return getUser(_0xadd8a3,'')[_0x5cca('0x1f')](function(_0x36131e){_0x2f924f=_0x36131e;logger['info'](_0x5cca('0x4d'),_0x2f924f['id']);return getEndUser(_0xadd8a3,_0xa7c6c0[_0x5cca('0x10')],_0xa7c6c0[_0x5cca('0x11')]);})['then'](function(_0x2fe97c){_0x174a0a=_0x2fe97c;logger[_0x5cca('0xd')](_0x5cca('0x4e'),_0x174a0a['id']);return getTicket(_0xadd8a3,_0x2f924f,_0x174a0a,_0x5ac7d7,_0xa7c6c0);})[_0x5cca('0x1f')](function(_0x80d503){if(_0x80d503){logger[_0x5cca('0xd')](_0x5cca('0x20'));logger['info'](_0x5cca('0x4f'),_0x80d503['id']);}})[_0x5cca('0x53')](function(_0x15a480){logger[_0x5cca('0x54')]('['+_0xa7c6c0[_0x5cca('0x5c')][_0x5cca('0x5d')]()+']',JSON[_0x5cca('0x55')](_0x15a480));});};