9871385cda8d4e417183567e8929a7c22516c91c
[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 _0x9bdc=['format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','Fields','custom_fields','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','[HTTP]','stringify','GET','map','forEach','string','picklist','type','customField','nameField','content','idField','push','variableName','customVariable','Variable','name','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20Ticket\x20ID\x20is:','catch','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','freshdesk','defaults','redis','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge'];(function(_0x5bc6a6,_0x158e11){var _0x312c55=function(_0x439cdd){while(--_0x439cdd){_0x5bc6a6['push'](_0x5bc6a6['shift']());}};_0x312c55(++_0x158e11);}(_0x9bdc,0x1c6));var _0xc9bd=function(_0x39495e,_0x520bdb){_0x39495e=_0x39495e-0x0;var _0x16691c=_0x9bdc[_0x39495e];return _0x16691c;};'use strict';var _=require(_0xc9bd('0x0'));var rp=require(_0xc9bd('0x1'));var md5=require(_0xc9bd('0x2'));var util=require(_0xc9bd('0x3'));var Redis=require(_0xc9bd('0x4'));var intUtil=require(_0xc9bd('0x5'));var config=require(_0xc9bd('0x6'));var logger=require('../../../../config/logger')(_0xc9bd('0x7'));config['redis']=_[_0xc9bd('0x8')](config[_0xc9bd('0x9')],{'host':_0xc9bd('0xa'),'port':0x18eb});var io=require(_0xc9bd('0xb'))(new Redis(config[_0xc9bd('0x9')]));var headers={'Content-Type':'application/json','Accept':_0xc9bd('0xc')};function emit(_0x4b4d16,_0x3f3f40,_0x1de118){io['to'](_0x4b4d16)['emit'](_0x3f3f40,_0x1de118);}function getTicket(_0x5e1235,_0x55858c,_0x1940eb,_0x28f447,_0x1478de){logger[_0xc9bd('0xd')](_0xc9bd('0xe'));var _0x186bc3=_[_0xc9bd('0xf')]({'responder_id':_0x55858c['id'],'requester_id':_0x1940eb['id'],'name':util[_0xc9bd('0x10')](_0xc9bd('0x11'),_0x1478de[_0xc9bd('0x12')]),'phone':_0x1478de[_0xc9bd('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xc9bd('0x14')](_0x28f447[_0xc9bd('0x15')],_0x1478de,'\x20'),'description':intUtil[_0xc9bd('0x14')](_0x28f447[_0xc9bd('0x16')],_0x1478de,_0xc9bd('0x17')),'tags':getTags(_0x28f447[_0xc9bd('0x18')],'name')},getCustomFields(_0x28f447[_0xc9bd('0x19')],_0x1478de));_0x186bc3[_0xc9bd('0x1a')]=_['mapValues'](_['keyBy'](_0x186bc3[_0xc9bd('0x1a')],'id'),'value');return request({'uri':util[_0xc9bd('0x10')]('%s/api/v2/tickets',_0x5e1235['remoteUri']),'method':_0xc9bd('0x1b'),'body':_0x186bc3})[_0xc9bd('0x1c')](function(_0x48f58f){logger[_0xc9bd('0xd')](_0xc9bd('0x1d'));return _0x48f58f;});}function getUser(_0x354bc7,_0x5ddb4d){if(intUtil[_0xc9bd('0x1e')](_0x5ddb4d)){return request({'uri':util[_0xc9bd('0x10')](_0xc9bd('0x1f'),_0x354bc7['remoteUri']),'qs':{'email':_0x5ddb4d}})[_0xc9bd('0x1c')](function(_0x282434){if(_0x282434[_0xc9bd('0x20')]){logger['info'](_0xc9bd('0x21'));return _[_0xc9bd('0x22')](_0x282434,function(_0x34b6e5){return _0x34b6e5[_0xc9bd('0x23')][_0xc9bd('0x24')]===_0x5ddb4d;});}else{logger[_0xc9bd('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc9bd('0x10')](_0xc9bd('0x25'),_0x354bc7[_0xc9bd('0x26')])})[_0xc9bd('0x1c')](function(_0x28440c){logger[_0xc9bd('0xd')]('Admin\x20account\x20selected.');return _0x28440c;});}});}else{logger[_0xc9bd('0xd')](_0xc9bd('0x27'));return request({'uri':util[_0xc9bd('0x10')](_0xc9bd('0x25'),_0x354bc7['remoteUri'])})[_0xc9bd('0x1c')](function(_0x3744e8){logger['info'](_0xc9bd('0x28'));return _0x3744e8;});}}function getEndUser(_0x37000d,_0x3f41e5,_0x359d5d){logger['info'](_0xc9bd('0x29'),_0x359d5d);return request({'uri':util[_0xc9bd('0x10')]('%s/api/v2/contacts',_0x37000d[_0xc9bd('0x26')]),'qs':{'phone':_0x359d5d}})[_0xc9bd('0x1c')](function(_0x1b9c00){if(_0x1b9c00['length']){logger[_0xc9bd('0xd')](_0xc9bd('0x2a'));return _['find'](_0x1b9c00,{'phone':_0x359d5d});}else{logger[_0xc9bd('0xd')](_0xc9bd('0x2b'));return request({'uri':util[_0xc9bd('0x10')](_0xc9bd('0x2c'),_0x37000d['remoteUri']),'method':_0xc9bd('0x1b'),'body':{'name':_0x3f41e5,'phone':_0x359d5d}})[_0xc9bd('0x1c')](function(_0xfdbf96){logger['info'](_0xc9bd('0x2d'));return _0xfdbf96;});}});}function getAuth(_0x569068){return util[_0xc9bd('0x10')](_0xc9bd('0x2e'),new Buffer(_0x569068[_0xc9bd('0x2f')]+':X')[_0xc9bd('0x30')](_0xc9bd('0x31')));}function request(_0x4c539a){logger['debug'](_0xc9bd('0x32'),JSON[_0xc9bd('0x33')](_0x4c539a));return rp(_['defaults'](_0x4c539a,{'method':_0xc9bd('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x1d06c1,_0x450127){var _0x2d3bce=[];if(_0x1d06c1&&_0x1d06c1[_0xc9bd('0x20')]>0x0){_0x2d3bce=_[_0xc9bd('0x35')](_0x1d06c1,_0x450127);}return _0x2d3bce;}function getCustomFields(_0x3eb1e5,_0x5eb94f){var _0x2c30f4=[];var _0x55c163={'custom_fields':[]};if(_0x3eb1e5[_0xc9bd('0x20')]>0x0){_[_0xc9bd('0x36')](_0x3eb1e5,function(_0x396735){if(_['includes']([_0xc9bd('0x37'),_0xc9bd('0x38')],_0x396735[_0xc9bd('0x39')])&&_0x396735['nameField']&&!_0x396735[_0xc9bd('0x3a')]){_0x55c163[_0x396735[_0xc9bd('0x3b')]['toLowerCase']()]=_0x396735[_0xc9bd('0x3c')][_0xc9bd('0x30')]();}else if(_['includes']([_0xc9bd('0x37'),'picklist'],_0x396735['type'])&&_0x396735[_0xc9bd('0x3d')]&&_0x396735[_0xc9bd('0x3a')]){_0x55c163[_0xc9bd('0x1a')][_0xc9bd('0x3e')]({'id':_0x396735['idField'],'value':_0x396735['content'][_0xc9bd('0x30')]()});}else if(_0x396735[_0xc9bd('0x39')]==='variable'&&_0x396735[_0xc9bd('0x3f')]&&_0x396735[_0xc9bd('0x3d')]&&_0x396735[_0xc9bd('0x3a')]){_0x5eb94f[_0x396735[_0xc9bd('0x3f')]]&&_0x55c163['custom_fields'][_0xc9bd('0x3e')]({'id':_0x396735[_0xc9bd('0x3d')],'value':_0x5eb94f[_0x396735[_0xc9bd('0x3f')]][_0xc9bd('0x30')]()});}else if(_0x396735[_0xc9bd('0x39')]===_0xc9bd('0x40')&&_0x396735['Variable']&&_0x396735[_0xc9bd('0x41')]['name']&&_0x396735[_0xc9bd('0x3d')]&&_0x396735[_0xc9bd('0x3a')]){_0x5eb94f[_0x396735[_0xc9bd('0x41')][_0xc9bd('0x42')][_0xc9bd('0x43')]()]&&_0x55c163[_0xc9bd('0x1a')][_0xc9bd('0x3e')]({'id':_0x396735[_0xc9bd('0x3d')],'value':_0x5eb94f[_0x396735[_0xc9bd('0x41')][_0xc9bd('0x42')][_0xc9bd('0x43')]()][_0xc9bd('0x30')]()});}});}return _0x55c163;}exports[_0xc9bd('0x44')]=function(_0x39783d,_0x36ff7c,_0xd7f837,_0x189eb2,_0x4360e7,_0x1a8bf1){var _0xeb287a,_0x313b15;_0x1a8bf1[_0xc9bd('0x26')]=intUtil['stripTrailingSlash'](_0x1a8bf1[_0xc9bd('0x26')]);_0x1a8bf1[_0xc9bd('0x45')]=intUtil[_0xc9bd('0x46')](_0x1a8bf1[_0xc9bd('0x45')]);if(_0x4360e7&&_0x4360e7[_0xc9bd('0x47')]){logger[_0xc9bd('0xd')](_0xc9bd('0x48'),'Recording\x20is\x20enabled!');_0x36ff7c[_0xc9bd('0x49')]=util[_0xc9bd('0x10')](_0xc9bd('0x4a'),_0x1a8bf1['serverUrl'],_0x36ff7c['uniqueid'],md5(_0x36ff7c[_0xc9bd('0x4b')]));}else{_0x36ff7c[_0xc9bd('0x49')]='';}headers[_0xc9bd('0x4c')]=getAuth(_0x1a8bf1);return getUser(_0x1a8bf1,_0x189eb2[_0xc9bd('0x24')])[_0xc9bd('0x1c')](function(_0x184b9d){_0xeb287a=_0x184b9d;logger[_0xc9bd('0xd')](_0xc9bd('0x4d'),_0xeb287a['id']);return getEndUser(_0x1a8bf1,_0x36ff7c[_0xc9bd('0x12')],_0x36ff7c[_0xc9bd('0x13')]);})[_0xc9bd('0x1c')](function(_0x5991d6){_0x313b15=_0x5991d6;logger[_0xc9bd('0xd')](_0xc9bd('0x4e'),_0x313b15['id']);return getTicket(_0x1a8bf1,_0xeb287a,_0x313b15,_0xd7f837,_0x36ff7c);})[_0xc9bd('0x1c')](function(_0x4d9b87){if(_0x4d9b87&&_0x4d9b87['id']){logger[_0xc9bd('0xd')](_0xc9bd('0x1d'));logger[_0xc9bd('0xd')]('The\x20Ticket\x20ID\x20is:',_0x4d9b87['id']);logger[_0xc9bd('0xd')]('[QUEUE]',_0xc9bd('0x4f'));emit(util[_0xc9bd('0x10')](_0xc9bd('0x50'),_0x189eb2[_0xc9bd('0x42')]),_0xc9bd('0x51'),{'uri':util['format'](_0xc9bd('0x52'),_0x1a8bf1[_0xc9bd('0x26')],_0x4d9b87['id'])});}})['catch'](function(_0x9a1d9e){logger[_0xc9bd('0x53')]('[QUEUE]',JSON[_0xc9bd('0x33')](_0x9a1d9e));});};exports[_0xc9bd('0x54')]=function(_0x2fbc0b,_0x538b82,_0x199bac,_0x2982f3,_0x20a15f,_0xb8018,_0x58d653){var _0x20904a,_0x59c11c;_0xb8018['remoteUri']=intUtil[_0xc9bd('0x46')](_0xb8018[_0xc9bd('0x26')]);_0xb8018[_0xc9bd('0x45')]=intUtil['stripTrailingSlash'](_0xb8018[_0xc9bd('0x45')]);if(_0x58d653&&_0x58d653['recordingFormat']&&_0x58d653[_0xc9bd('0x55')]!==_0xc9bd('0x56')){logger[_0xc9bd('0xd')](_0xc9bd('0x57'),'Recording\x20is\x20enabled!');_0x538b82[_0xc9bd('0x49')]=util[_0xc9bd('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xb8018[_0xc9bd('0x45')],_0x538b82[_0xc9bd('0x4b')],md5(_0x538b82['uniqueid']));}headers[_0xc9bd('0x4c')]=getAuth(_0xb8018);return getUser(_0xb8018,_0x2982f3[_0xc9bd('0x24')])['then'](function(_0xaf503f){_0x20904a=_0xaf503f;logger[_0xc9bd('0xd')]('The\x20User\x20ID\x20is:',_0x20904a['id']);return getEndUser(_0xb8018,_0x538b82['destcalleridname'],_0x538b82['destcalleridnum']);})['then'](function(_0x4c3d98){_0x59c11c=_0x4c3d98;logger[_0xc9bd('0xd')](_0xc9bd('0x4e'),_0x59c11c['id']);return getTicket(_0xb8018,_0x20904a,_0x59c11c,_0x199bac,_0x538b82);})[_0xc9bd('0x1c')](function(_0x3bca41){if(_0x3bca41&&_0x3bca41['id']){logger[_0xc9bd('0xd')]('Ticket\x20created!');logger[_0xc9bd('0xd')](_0xc9bd('0x58'),_0x3bca41['id']);logger[_0xc9bd('0xd')](_0xc9bd('0x57'),_0xc9bd('0x4f'));emit(util[_0xc9bd('0x10')]('user:%s',_0x2982f3[_0xc9bd('0x42')]),'trigger:browser:url',{'uri':util[_0xc9bd('0x10')](_0xc9bd('0x52'),_0xb8018[_0xc9bd('0x26')],_0x3bca41['id'])});}})[_0xc9bd('0x59')](function(_0x45da08){logger[_0xc9bd('0x53')](_0xc9bd('0x57'),JSON[_0xc9bd('0x33')](_0x45da08));});};exports[_0xc9bd('0x5a')]=function(_0x39fd11,_0x418e7a,_0x347c20,_0x5059c4,_0xe7b4b7,_0x25ba95){var _0x4fe164,_0xf43f32;_0x25ba95[_0xc9bd('0x26')]=intUtil[_0xc9bd('0x46')](_0x25ba95[_0xc9bd('0x26')]);_0x25ba95['serverUrl']=intUtil[_0xc9bd('0x46')](_0x25ba95[_0xc9bd('0x45')]);if(_0xe7b4b7&&_0xe7b4b7[_0xc9bd('0x47')]){logger[_0xc9bd('0xd')]('['+_0x418e7a[_0xc9bd('0x5b')][_0xc9bd('0x5c')]()+']',_0xc9bd('0x5d'));_0x418e7a['recordingURL']=util[_0xc9bd('0x10')](_0xc9bd('0x4a'),_0x25ba95['serverUrl'],_0x418e7a[_0xc9bd('0x4b')],md5(_0x418e7a[_0xc9bd('0x4b')]));}else{_0x418e7a[_0xc9bd('0x49')]='';}headers[_0xc9bd('0x4c')]=getAuth(_0x25ba95);return getUser(_0x25ba95,'')[_0xc9bd('0x1c')](function(_0x1542d4){_0x4fe164=_0x1542d4;logger[_0xc9bd('0xd')]('The\x20User\x20ID\x20is:',_0x4fe164['id']);return getEndUser(_0x25ba95,_0x418e7a[_0xc9bd('0x12')],_0x418e7a[_0xc9bd('0x13')]);})[_0xc9bd('0x1c')](function(_0x5a8aac){_0xf43f32=_0x5a8aac;logger[_0xc9bd('0xd')]('The\x20Enduser\x20ID\x20is:',_0xf43f32['id']);return getTicket(_0x25ba95,_0x4fe164,_0xf43f32,_0x347c20,_0x418e7a);})[_0xc9bd('0x1c')](function(_0x18f19c){if(_0x18f19c){logger[_0xc9bd('0xd')]('Ticket\x20created!');logger[_0xc9bd('0xd')]('The\x20Ticket\x20ID\x20is:',_0x18f19c['id']);}})[_0xc9bd('0x59')](function(_0x30a0ed){logger[_0xc9bd('0x53')]('['+_0x418e7a[_0xc9bd('0x5b')]['toUpperCase']()+']',JSON[_0xc9bd('0x33')](_0x30a0ed));});};