99242862514ebb6ff95ae4667c69a1675e03789c
[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 _0xbb7e=['Fields','custom_fields','value','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Admin\x20account\x20selected.','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','base64','[HTTP]','defaults','map','forEach','includes','string','picklist','nameField','customField','toString','type','idField','push','content','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','Authorization','destcalleridname','stringify','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name'];(function(_0x389775,_0x1bd1e0){var _0xad5605=function(_0x1e3f8e){while(--_0x1e3f8e){_0x389775['push'](_0x389775['shift']());}};_0xad5605(++_0x1bd1e0);}(_0xbb7e,0x14e));var _0xebb7=function(_0x2f437d,_0x327508){_0x2f437d=_0x2f437d-0x0;var _0x1d142a=_0xbb7e[_0x2f437d];return _0x1d142a;};'use strict';var _=require(_0xebb7('0x0'));var rp=require(_0xebb7('0x1'));var md5=require('md5');var util=require(_0xebb7('0x2'));var Redis=require(_0xebb7('0x3'));var intUtil=require('./util');var config=require(_0xebb7('0x4'));var logger=require(_0xebb7('0x5'))('freshdesk');config['redis']=_['defaults'](config[_0xebb7('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xebb7('0x6')]));var headers={'Content-Type':_0xebb7('0x7'),'Accept':'application/json'};function emit(_0x15874d,_0x48a51f,_0x5c5977){io['to'](_0x15874d)[_0xebb7('0x8')](_0x48a51f,_0x5c5977);}function getTicket(_0x1d4c2d,_0x412208,_0xc86ce,_0x1425f3,_0x52b576){logger[_0xebb7('0x9')](_0xebb7('0xa'));var _0x34d0e9=_[_0xebb7('0xb')]({'responder_id':_0x412208['id'],'requester_id':_0xc86ce['id'],'name':util[_0xebb7('0xc')](_0xebb7('0xd'),_0x52b576[_0xebb7('0xe')]),'phone':_0x52b576[_0xebb7('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xebb7('0x10')](_0x1425f3[_0xebb7('0x11')],_0x52b576,'\x20'),'description':intUtil['getString'](_0x1425f3[_0xebb7('0x12')],_0x52b576,_0xebb7('0x13')),'tags':getTags(_0x1425f3[_0xebb7('0x14')],_0xebb7('0x15'))},getCustomFields(_0x1425f3[_0xebb7('0x16')],_0x52b576));_0x34d0e9[_0xebb7('0x17')]=_['mapValues'](_['keyBy'](_0x34d0e9[_0xebb7('0x17')],'id'),_0xebb7('0x18'));return request({'uri':util[_0xebb7('0xc')](_0xebb7('0x19'),_0x1d4c2d['remoteUri']),'method':_0xebb7('0x1a'),'body':_0x34d0e9})[_0xebb7('0x1b')](function(_0x1b07d2){logger[_0xebb7('0x9')](_0xebb7('0x1c'));return _0x1b07d2;});}function getUser(_0x23396f,_0x18c654){if(intUtil[_0xebb7('0x1d')](_0x18c654)){return request({'uri':util[_0xebb7('0xc')](_0xebb7('0x1e'),_0x23396f['remoteUri']),'qs':{'email':_0x18c654}})['then'](function(_0xe7c33a){if(_0xe7c33a[_0xebb7('0x1f')]){logger['info'](_0xebb7('0x20'));return _['find'](_0xe7c33a,function(_0x48bc64){return _0x48bc64[_0xebb7('0x21')][_0xebb7('0x22')]===_0x18c654;});}else{logger[_0xebb7('0x9')](_0xebb7('0x23'));return request({'uri':util[_0xebb7('0xc')]('%s/api/v2/agents/me',_0x23396f[_0xebb7('0x24')])})[_0xebb7('0x1b')](function(_0x451508){logger[_0xebb7('0x9')](_0xebb7('0x25'));return _0x451508;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xebb7('0xc')](_0xebb7('0x26'),_0x23396f[_0xebb7('0x24')])})[_0xebb7('0x1b')](function(_0x4fbc20){logger['info'](_0xebb7('0x25'));return _0x4fbc20;});}}function getEndUser(_0x3565bf,_0x3f9131,_0x164032){logger[_0xebb7('0x9')](_0xebb7('0x27'),_0x164032);return request({'uri':util[_0xebb7('0xc')]('%s/api/v2/contacts',_0x3565bf[_0xebb7('0x24')]),'qs':{'phone':_0x164032}})[_0xebb7('0x1b')](function(_0x4bf830){if(_0x4bf830[_0xebb7('0x1f')]){logger[_0xebb7('0x9')](_0xebb7('0x28'));return _['find'](_0x4bf830,{'phone':_0x164032});}else{logger[_0xebb7('0x9')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xebb7('0xc')]('%s/api/v2/contacts',_0x3565bf[_0xebb7('0x24')]),'method':_0xebb7('0x1a'),'body':{'name':_0x3f9131,'phone':_0x164032}})[_0xebb7('0x1b')](function(_0x421ed3){logger['info'](_0xebb7('0x29'));return _0x421ed3;});}});}function getAuth(_0x3d338a){return util[_0xebb7('0xc')](_0xebb7('0x2a'),new Buffer(_0x3d338a['apiKey']+':X')['toString'](_0xebb7('0x2b')));}function request(_0x1e0c9b){logger['debug'](_0xebb7('0x2c'),JSON['stringify'](_0x1e0c9b));return rp(_[_0xebb7('0x2d')](_0x1e0c9b,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x255d8f,_0x1748d2){var _0x525b14=[];if(_0x255d8f&&_0x255d8f[_0xebb7('0x1f')]>0x0){_0x525b14=_[_0xebb7('0x2e')](_0x255d8f,_0x1748d2);}return _0x525b14;}function getCustomFields(_0x42f43b,_0x2a242e){var _0x4be97a=[];var _0x55e391={'custom_fields':[]};if(_0x42f43b[_0xebb7('0x1f')]>0x0){_[_0xebb7('0x2f')](_0x42f43b,function(_0x1e2e67){if(_[_0xebb7('0x30')]([_0xebb7('0x31'),_0xebb7('0x32')],_0x1e2e67['type'])&&_0x1e2e67[_0xebb7('0x33')]&&!_0x1e2e67[_0xebb7('0x34')]){_0x55e391[_0x1e2e67[_0xebb7('0x33')]['toLowerCase']()]=_0x1e2e67['content'][_0xebb7('0x35')]();}else if(_['includes']([_0xebb7('0x31'),_0xebb7('0x32')],_0x1e2e67[_0xebb7('0x36')])&&_0x1e2e67[_0xebb7('0x37')]&&_0x1e2e67[_0xebb7('0x34')]){_0x55e391[_0xebb7('0x17')][_0xebb7('0x38')]({'id':_0x1e2e67['idField'],'value':_0x1e2e67[_0xebb7('0x39')][_0xebb7('0x35')]()});}else if(_0x1e2e67[_0xebb7('0x36')]==='variable'&&_0x1e2e67[_0xebb7('0x3a')]&&_0x1e2e67[_0xebb7('0x37')]&&_0x1e2e67[_0xebb7('0x34')]){_0x2a242e[_0x1e2e67[_0xebb7('0x3a')]]&&_0x55e391[_0xebb7('0x17')][_0xebb7('0x38')]({'id':_0x1e2e67['idField'],'value':_0x2a242e[_0x1e2e67[_0xebb7('0x3a')]][_0xebb7('0x35')]()});}else if(_0x1e2e67[_0xebb7('0x36')]===_0xebb7('0x3b')&&_0x1e2e67[_0xebb7('0x3c')]&&_0x1e2e67[_0xebb7('0x3c')][_0xebb7('0x15')]&&_0x1e2e67['idField']&&_0x1e2e67[_0xebb7('0x34')]){_0x2a242e[_0x1e2e67['Variable']['name'][_0xebb7('0x3d')]()]&&_0x55e391['custom_fields'][_0xebb7('0x38')]({'id':_0x1e2e67['idField'],'value':_0x2a242e[_0x1e2e67[_0xebb7('0x3c')][_0xebb7('0x15')]['toLowerCase']()][_0xebb7('0x35')]()});}});}return _0x55e391;}exports[_0xebb7('0x3e')]=function(_0x2bdbab,_0x10f63a,_0x5ea5a7,_0x1d54ca,_0x48dc8c,_0xa7a65d){var _0xe7051b,_0x213b67;_0xa7a65d[_0xebb7('0x24')]=intUtil[_0xebb7('0x3f')](_0xa7a65d[_0xebb7('0x24')]);_0xa7a65d[_0xebb7('0x40')]=intUtil[_0xebb7('0x3f')](_0xa7a65d[_0xebb7('0x40')]);if(_0x48dc8c&&_0x48dc8c[_0xebb7('0x41')]){logger[_0xebb7('0x9')]('[QUEUE]',_0xebb7('0x42'));_0x10f63a[_0xebb7('0x43')]=util[_0xebb7('0xc')](_0xebb7('0x44'),_0xa7a65d['serverUrl'],_0x10f63a['uniqueid'],md5(_0x10f63a['uniqueid']));}else{_0x10f63a[_0xebb7('0x43')]='';}headers['Authorization']=getAuth(_0xa7a65d);return getUser(_0xa7a65d,_0x1d54ca[_0xebb7('0x22')])[_0xebb7('0x1b')](function(_0x2f87a6){_0xe7051b=_0x2f87a6;logger['info'](_0xebb7('0x45'),_0xe7051b['id']);return getEndUser(_0xa7a65d,_0x10f63a[_0xebb7('0xe')],_0x10f63a[_0xebb7('0xf')]);})['then'](function(_0x599892){_0x213b67=_0x599892;logger[_0xebb7('0x9')](_0xebb7('0x46'),_0x213b67['id']);return getTicket(_0xa7a65d,_0xe7051b,_0x213b67,_0x5ea5a7,_0x10f63a);})[_0xebb7('0x1b')](function(_0x37ce30){if(_0x37ce30&&_0x37ce30['id']){logger[_0xebb7('0x9')](_0xebb7('0x1c'));logger[_0xebb7('0x9')]('The\x20Ticket\x20ID\x20is:',_0x37ce30['id']);logger[_0xebb7('0x9')](_0xebb7('0x47'),_0xebb7('0x48'));emit(util[_0xebb7('0xc')](_0xebb7('0x49'),_0x1d54ca[_0xebb7('0x15')]),_0xebb7('0x4a'),{'uri':util['format'](_0xebb7('0x4b'),_0xa7a65d[_0xebb7('0x24')],_0x37ce30['id'])});}})[_0xebb7('0x4c')](function(_0x16c7ad){logger[_0xebb7('0x4d')]('[QUEUE]',JSON['stringify'](_0x16c7ad));});};exports[_0xebb7('0x4e')]=function(_0x56b392,_0x3ff61c,_0x2c06ea,_0x5e9212,_0x3e2dfb,_0x451d30,_0x80ea7a){var _0x2cd05a,_0x3af54e;_0x451d30[_0xebb7('0x24')]=intUtil[_0xebb7('0x3f')](_0x451d30[_0xebb7('0x24')]);_0x451d30[_0xebb7('0x40')]=intUtil[_0xebb7('0x3f')](_0x451d30[_0xebb7('0x40')]);if(_0x80ea7a&&_0x80ea7a[_0xebb7('0x4f')]&&_0x80ea7a[_0xebb7('0x4f')]!==_0xebb7('0x50')){logger[_0xebb7('0x9')](_0xebb7('0x51'),'Recording\x20is\x20enabled!');_0x3ff61c[_0xebb7('0x43')]=util[_0xebb7('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x451d30['serverUrl'],_0x3ff61c[_0xebb7('0x52')],md5(_0x3ff61c[_0xebb7('0x52')]));}headers[_0xebb7('0x53')]=getAuth(_0x451d30);return getUser(_0x451d30,_0x5e9212[_0xebb7('0x22')])[_0xebb7('0x1b')](function(_0x133ede){_0x2cd05a=_0x133ede;logger['info'](_0xebb7('0x45'),_0x2cd05a['id']);return getEndUser(_0x451d30,_0x3ff61c[_0xebb7('0x54')],_0x3ff61c['destcalleridnum']);})[_0xebb7('0x1b')](function(_0x5091ee){_0x3af54e=_0x5091ee;logger['info'](_0xebb7('0x46'),_0x3af54e['id']);return getTicket(_0x451d30,_0x2cd05a,_0x3af54e,_0x2c06ea,_0x3ff61c);})['then'](function(_0x3a5cf1){if(_0x3a5cf1&&_0x3a5cf1['id']){logger[_0xebb7('0x9')](_0xebb7('0x1c'));logger[_0xebb7('0x9')]('The\x20Ticket\x20ID\x20is:',_0x3a5cf1['id']);logger[_0xebb7('0x9')](_0xebb7('0x51'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xebb7('0xc')](_0xebb7('0x49'),_0x5e9212[_0xebb7('0x15')]),_0xebb7('0x4a'),{'uri':util[_0xebb7('0xc')](_0xebb7('0x4b'),_0x451d30[_0xebb7('0x24')],_0x3a5cf1['id'])});}})[_0xebb7('0x4c')](function(_0x205d0c){logger[_0xebb7('0x4d')](_0xebb7('0x51'),JSON[_0xebb7('0x55')](_0x205d0c));});};exports['unmanaged']=function(_0x40e97d,_0x3d0fa4,_0x37adbb,_0x125269,_0x5605d1,_0xedcbc5){var _0xbed47c,_0x1b6e57;_0xedcbc5[_0xebb7('0x24')]=intUtil[_0xebb7('0x3f')](_0xedcbc5[_0xebb7('0x24')]);_0xedcbc5[_0xebb7('0x40')]=intUtil[_0xebb7('0x3f')](_0xedcbc5[_0xebb7('0x40')]);if(_0x5605d1&&_0x5605d1[_0xebb7('0x41')]){logger[_0xebb7('0x9')]('['+_0x3d0fa4[_0xebb7('0x56')]['toUpperCase']()+']',_0xebb7('0x42'));_0x3d0fa4['recordingURL']=util[_0xebb7('0xc')](_0xebb7('0x44'),_0xedcbc5[_0xebb7('0x40')],_0x3d0fa4[_0xebb7('0x52')],md5(_0x3d0fa4[_0xebb7('0x52')]));}else{_0x3d0fa4[_0xebb7('0x43')]='';}headers[_0xebb7('0x53')]=getAuth(_0xedcbc5);return getUser(_0xedcbc5,'')[_0xebb7('0x1b')](function(_0x7d144a){_0xbed47c=_0x7d144a;logger[_0xebb7('0x9')]('The\x20User\x20ID\x20is:',_0xbed47c['id']);return getEndUser(_0xedcbc5,_0x3d0fa4[_0xebb7('0xe')],_0x3d0fa4[_0xebb7('0xf')]);})[_0xebb7('0x1b')](function(_0x20f38d){_0x1b6e57=_0x20f38d;logger[_0xebb7('0x9')](_0xebb7('0x46'),_0x1b6e57['id']);return getTicket(_0xedcbc5,_0xbed47c,_0x1b6e57,_0x37adbb,_0x3d0fa4);})['then'](function(_0x224db4){if(_0x224db4){logger[_0xebb7('0x9')](_0xebb7('0x1c'));logger[_0xebb7('0x9')](_0xebb7('0x57'),_0x224db4['id']);}})[_0xebb7('0x4c')](function(_0xbb0c54){logger[_0xebb7('0x4d')]('['+_0x3d0fa4[_0xebb7('0x56')][_0xebb7('0x58')]()+']',JSON[_0xebb7('0x55')](_0xbb0c54));});};