40a7aec9891c2f93897001a58457a804e5b823f4
[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 _0xedcb=['length','Agent\x20found!','find','contact','email','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','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','toString','[HTTP]','stringify','defaults','GET','map','type','string','nameField','customField','toLowerCase','content','idField','push','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','Tags','Fields','custom_fields','keyBy','value','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri'];(function(_0x3817a9,_0x29e215){var _0x443f30=function(_0x13940b){while(--_0x13940b){_0x3817a9['push'](_0x3817a9['shift']());}};_0x443f30(++_0x29e215);}(_0xedcb,0x153));var _0xbedc=function(_0x110988,_0xcdd538){_0x110988=_0x110988-0x0;var _0x2e2b17=_0xedcb[_0x110988];return _0x2e2b17;};'use strict';var _=require(_0xbedc('0x0'));var rp=require(_0xbedc('0x1'));var md5=require(_0xbedc('0x2'));var util=require(_0xbedc('0x3'));var Redis=require(_0xbedc('0x4'));var intUtil=require(_0xbedc('0x5'));var config=require(_0xbedc('0x6'));var logger=require('../../../../config/logger')(_0xbedc('0x7'));config[_0xbedc('0x8')]=_['defaults'](config[_0xbedc('0x8')],{'host':_0xbedc('0x9'),'port':0x18eb});var io=require(_0xbedc('0xa'))(new Redis(config[_0xbedc('0x8')]));var headers={'Content-Type':_0xbedc('0xb'),'Accept':'application/json'};function emit(_0x125bf5,_0x2777f3,_0x1003f5){io['to'](_0x125bf5)[_0xbedc('0xc')](_0x2777f3,_0x1003f5);}function getTicket(_0x13db31,_0x438ee2,_0x280edd,_0x120d5d,_0x10abd8){logger[_0xbedc('0xd')](_0xbedc('0xe'));var _0x3dffa5=_[_0xbedc('0xf')]({'responder_id':_0x438ee2['id'],'requester_id':_0x280edd['id'],'name':util[_0xbedc('0x10')](_0xbedc('0x11'),_0x10abd8[_0xbedc('0x12')]),'phone':_0x10abd8['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xbedc('0x13')](_0x120d5d[_0xbedc('0x14')],_0x10abd8,'\x20'),'description':intUtil[_0xbedc('0x13')](_0x120d5d[_0xbedc('0x15')],_0x10abd8,'<br>'),'tags':getTags(_0x120d5d[_0xbedc('0x16')],'name')},getCustomFields(_0x120d5d[_0xbedc('0x17')],_0x10abd8));_0x3dffa5[_0xbedc('0x18')]=_['mapValues'](_[_0xbedc('0x19')](_0x3dffa5['custom_fields'],'id'),_0xbedc('0x1a'));return request({'uri':util['format']('%s/api/v2/tickets',_0x13db31['remoteUri']),'method':_0xbedc('0x1b'),'body':_0x3dffa5})[_0xbedc('0x1c')](function(_0x31bcd8){logger['info'](_0xbedc('0x1d'));return _0x31bcd8;});}function getUser(_0x4f7602,_0x43670a){if(intUtil[_0xbedc('0x1e')](_0x43670a)){return request({'uri':util[_0xbedc('0x10')](_0xbedc('0x1f'),_0x4f7602[_0xbedc('0x20')]),'qs':{'email':_0x43670a}})[_0xbedc('0x1c')](function(_0x5d84ed){if(_0x5d84ed[_0xbedc('0x21')]){logger[_0xbedc('0xd')](_0xbedc('0x22'));return _[_0xbedc('0x23')](_0x5d84ed,function(_0x52777d){return _0x52777d[_0xbedc('0x24')][_0xbedc('0x25')]===_0x43670a;});}else{logger[_0xbedc('0xd')](_0xbedc('0x26'));return request({'uri':util['format'](_0xbedc('0x27'),_0x4f7602['remoteUri'])})[_0xbedc('0x1c')](function(_0x4f722c){logger[_0xbedc('0xd')](_0xbedc('0x28'));return _0x4f722c;});}});}else{logger['info'](_0xbedc('0x29'));return request({'uri':util[_0xbedc('0x10')](_0xbedc('0x27'),_0x4f7602[_0xbedc('0x20')])})[_0xbedc('0x1c')](function(_0x4d6dbb){logger[_0xbedc('0xd')](_0xbedc('0x28'));return _0x4d6dbb;});}}function getEndUser(_0x56e10d,_0x488831,_0x5a2b7c){logger[_0xbedc('0xd')](_0xbedc('0x2a'),_0x5a2b7c);return request({'uri':util['format']('%s/api/v2/contacts',_0x56e10d[_0xbedc('0x20')]),'qs':{'phone':_0x5a2b7c}})[_0xbedc('0x1c')](function(_0x119975){if(_0x119975[_0xbedc('0x21')]){logger[_0xbedc('0xd')](_0xbedc('0x2b'));return _['find'](_0x119975,{'phone':_0x5a2b7c});}else{logger['info'](_0xbedc('0x2c'));return request({'uri':util[_0xbedc('0x10')](_0xbedc('0x2d'),_0x56e10d[_0xbedc('0x20')]),'method':_0xbedc('0x1b'),'body':{'name':_0x488831,'phone':_0x5a2b7c}})[_0xbedc('0x1c')](function(_0x1bb82a){logger[_0xbedc('0xd')](_0xbedc('0x2e'));return _0x1bb82a;});}});}function getAuth(_0x23ed0c){return util[_0xbedc('0x10')]('Basic\x20%s',new Buffer(_0x23ed0c['apiKey']+':X')[_0xbedc('0x2f')]('base64'));}function request(_0x2537ad){logger['debug'](_0xbedc('0x30'),JSON[_0xbedc('0x31')](_0x2537ad));return rp(_[_0xbedc('0x32')](_0x2537ad,{'method':_0xbedc('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x446b9d,_0x53f5ec){var _0x2e0ba0=[];if(_0x446b9d&&_0x446b9d[_0xbedc('0x21')]>0x0){_0x2e0ba0=_[_0xbedc('0x34')](_0x446b9d,_0x53f5ec);}return _0x2e0ba0;}function getCustomFields(_0x539f30,_0x19843f){var _0xeb0d7c=[];var _0x297dcd={'custom_fields':[]};if(_0x539f30[_0xbedc('0x21')]>0x0){_['forEach'](_0x539f30,function(_0x126526){if(_0x126526[_0xbedc('0x35')]===_0xbedc('0x36')&&_0x126526[_0xbedc('0x37')]&&!_0x126526[_0xbedc('0x38')]){_0x297dcd[_0x126526[_0xbedc('0x37')][_0xbedc('0x39')]()]=_0x126526[_0xbedc('0x3a')][_0xbedc('0x2f')]();}else if(_0x126526[_0xbedc('0x35')]===_0xbedc('0x36')&&_0x126526[_0xbedc('0x3b')]&&_0x126526[_0xbedc('0x38')]){_0x297dcd[_0xbedc('0x18')][_0xbedc('0x3c')]({'id':_0x126526[_0xbedc('0x3b')],'value':_0x126526['content'][_0xbedc('0x2f')]()});}else if(_0x126526['type']===_0xbedc('0x3d')&&_0x126526[_0xbedc('0x3e')]&&_0x126526[_0xbedc('0x3b')]&&_0x126526[_0xbedc('0x38')]){_0x19843f[_0x126526[_0xbedc('0x3e')]]&&_0x297dcd[_0xbedc('0x18')][_0xbedc('0x3c')]({'id':_0x126526['idField'],'value':_0x19843f[_0x126526[_0xbedc('0x3e')]][_0xbedc('0x2f')]()});}else if(_0x126526['type']===_0xbedc('0x3f')&&_0x126526[_0xbedc('0x40')]&&_0x126526[_0xbedc('0x40')][_0xbedc('0x41')]&&_0x126526[_0xbedc('0x3b')]&&_0x126526['customField']){_0x19843f[_0x126526[_0xbedc('0x40')][_0xbedc('0x41')][_0xbedc('0x39')]()]&&_0x297dcd[_0xbedc('0x18')][_0xbedc('0x3c')]({'id':_0x126526[_0xbedc('0x3b')],'value':_0x19843f[_0x126526[_0xbedc('0x40')][_0xbedc('0x41')][_0xbedc('0x39')]()][_0xbedc('0x2f')]()});}});}return _0x297dcd;}exports[_0xbedc('0x42')]=function(_0x4dedc9,_0x3ca81f,_0x1d7d96,_0x4273af,_0x26e51e,_0xb2d6f0){var _0x5314ad,_0x594049;_0xb2d6f0[_0xbedc('0x20')]=intUtil[_0xbedc('0x43')](_0xb2d6f0['remoteUri']);_0xb2d6f0['serverUrl']=intUtil[_0xbedc('0x43')](_0xb2d6f0[_0xbedc('0x44')]);if(_0x26e51e&&_0x26e51e[_0xbedc('0x45')]){logger['info'](_0xbedc('0x46'),'Recording\x20is\x20enabled!');_0x3ca81f['recordingURL']=util[_0xbedc('0x10')](_0xbedc('0x47'),_0xb2d6f0[_0xbedc('0x44')],_0x3ca81f[_0xbedc('0x48')],md5(_0x3ca81f[_0xbedc('0x48')]));}else{_0x3ca81f[_0xbedc('0x49')]='';}headers[_0xbedc('0x4a')]=getAuth(_0xb2d6f0);return getUser(_0xb2d6f0,_0x4273af[_0xbedc('0x25')])[_0xbedc('0x1c')](function(_0x4f208a){_0x5314ad=_0x4f208a;logger['info'](_0xbedc('0x4b'),_0x5314ad['id']);return getEndUser(_0xb2d6f0,_0x3ca81f[_0xbedc('0x12')],_0x3ca81f[_0xbedc('0x4c')]);})['then'](function(_0x276729){_0x594049=_0x276729;logger[_0xbedc('0xd')](_0xbedc('0x4d'),_0x594049['id']);return getTicket(_0xb2d6f0,_0x5314ad,_0x594049,_0x1d7d96,_0x3ca81f);})[_0xbedc('0x1c')](function(_0x1fb561){if(_0x1fb561&&_0x1fb561['id']){logger[_0xbedc('0xd')](_0xbedc('0x1d'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x1fb561['id']);logger['info'](_0xbedc('0x46'),_0xbedc('0x4e'));emit(util['format'](_0xbedc('0x4f'),_0x4273af[_0xbedc('0x41')]),_0xbedc('0x50'),{'uri':util[_0xbedc('0x10')](_0xbedc('0x51'),_0xb2d6f0[_0xbedc('0x20')],_0x1fb561['id'])});}})[_0xbedc('0x52')](function(_0xbc713d){logger[_0xbedc('0x53')]('[QUEUE]',JSON['stringify'](_0xbc713d));});};exports[_0xbedc('0x54')]=function(_0x32f378,_0xdc0614,_0x5d805e,_0x3cd019,_0x161f3d,_0x320329,_0xaba44){var _0x3d580e,_0x407a6e;_0x320329[_0xbedc('0x20')]=intUtil[_0xbedc('0x43')](_0x320329[_0xbedc('0x20')]);_0x320329['serverUrl']=intUtil[_0xbedc('0x43')](_0x320329[_0xbedc('0x44')]);if(_0xaba44&&_0xaba44['recordingFormat']&&_0xaba44[_0xbedc('0x55')]!=='none'){logger[_0xbedc('0xd')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0xdc0614[_0xbedc('0x49')]=util[_0xbedc('0x10')](_0xbedc('0x47'),_0x320329[_0xbedc('0x44')],_0xdc0614[_0xbedc('0x48')],md5(_0xdc0614['uniqueid']));}headers[_0xbedc('0x4a')]=getAuth(_0x320329);return getUser(_0x320329,_0x3cd019['email'])['then'](function(_0x200cff){_0x3d580e=_0x200cff;logger[_0xbedc('0xd')]('The\x20User\x20ID\x20is:',_0x3d580e['id']);return getEndUser(_0x320329,_0xdc0614['destcalleridname'],_0xdc0614[_0xbedc('0x56')]);})[_0xbedc('0x1c')](function(_0x3780f5){_0x407a6e=_0x3780f5;logger[_0xbedc('0xd')](_0xbedc('0x4d'),_0x407a6e['id']);return getTicket(_0x320329,_0x3d580e,_0x407a6e,_0x5d805e,_0xdc0614);})[_0xbedc('0x1c')](function(_0x55d382){if(_0x55d382&&_0x55d382['id']){logger['info'](_0xbedc('0x1d'));logger[_0xbedc('0xd')](_0xbedc('0x57'),_0x55d382['id']);logger[_0xbedc('0xd')](_0xbedc('0x58'),_0xbedc('0x4e'));emit(util[_0xbedc('0x10')](_0xbedc('0x4f'),_0x3cd019[_0xbedc('0x41')]),'trigger:browser:url',{'uri':util[_0xbedc('0x10')](_0xbedc('0x51'),_0x320329['remoteUri'],_0x55d382['id'])});}})[_0xbedc('0x52')](function(_0x34ecb9){logger[_0xbedc('0x53')](_0xbedc('0x58'),JSON[_0xbedc('0x31')](_0x34ecb9));});};exports[_0xbedc('0x59')]=function(_0x47cc14,_0x592c6f,_0x50ed9d,_0x2e08b9,_0x29c5c6,_0x2797b3){var _0x516793,_0x3358f9;_0x2797b3[_0xbedc('0x20')]=intUtil[_0xbedc('0x43')](_0x2797b3[_0xbedc('0x20')]);_0x2797b3[_0xbedc('0x44')]=intUtil['stripTrailingSlash'](_0x2797b3['serverUrl']);if(_0x29c5c6&&_0x29c5c6[_0xbedc('0x45')]){logger[_0xbedc('0xd')]('['+_0x592c6f[_0xbedc('0x5a')][_0xbedc('0x5b')]()+']',_0xbedc('0x5c'));_0x592c6f['recordingURL']=util[_0xbedc('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2797b3[_0xbedc('0x44')],_0x592c6f[_0xbedc('0x48')],md5(_0x592c6f[_0xbedc('0x48')]));}else{_0x592c6f[_0xbedc('0x49')]='';}headers['Authorization']=getAuth(_0x2797b3);return getUser(_0x2797b3,'')[_0xbedc('0x1c')](function(_0x36f2ca){_0x516793=_0x36f2ca;logger[_0xbedc('0xd')](_0xbedc('0x4b'),_0x516793['id']);return getEndUser(_0x2797b3,_0x592c6f[_0xbedc('0x12')],_0x592c6f['calleridnum']);})[_0xbedc('0x1c')](function(_0x4da5d0){_0x3358f9=_0x4da5d0;logger['info'](_0xbedc('0x4d'),_0x3358f9['id']);return getTicket(_0x2797b3,_0x516793,_0x3358f9,_0x50ed9d,_0x592c6f);})[_0xbedc('0x1c')](function(_0x390417){if(_0x390417){logger[_0xbedc('0xd')](_0xbedc('0x1d'));logger[_0xbedc('0xd')](_0xbedc('0x57'),_0x390417['id']);}})['catch'](function(_0x1d1d0d){logger['error']('['+_0x592c6f['lastevent'][_0xbedc('0x5b')]()+']',JSON['stringify'](_0x1d1d0d));});};