Built motion from commit (unavailable).|2.5.14
[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 _0xa017=['format','calleridname','calleridnum','getString','Subjects','Tags','name','Fields','custom_fields','mapValues','keyBy','value','remoteUri','then','info','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!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','POST','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','stringify','GET','forEach','type','string','nameField','toLowerCase','content','idField','customField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','unmanaged','monitor_format','lastevent','toUpperCase','request-promise','md5','./util','../../../../config/environment','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','merge'];(function(_0x2e9361,_0x471c93){var _0x3c2162=function(_0x5793d8){while(--_0x5793d8){_0x2e9361['push'](_0x2e9361['shift']());}};_0x3c2162(++_0x471c93);}(_0xa017,0x1b6));var _0x7a01=function(_0x32b715,_0x8f0a4d){_0x32b715=_0x32b715-0x0;var _0x198fdd=_0xa017[_0x32b715];return _0x198fdd;};'use strict';var _=require('lodash');var rp=require(_0x7a01('0x0'));var md5=require(_0x7a01('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x7a01('0x2'));var config=require(_0x7a01('0x3'));var logger=require('../../../../config/logger')(_0x7a01('0x4'));config[_0x7a01('0x5')]=_[_0x7a01('0x6')](config[_0x7a01('0x5')],{'host':_0x7a01('0x7'),'port':0x18eb});var io=require(_0x7a01('0x8'))(new Redis(config[_0x7a01('0x5')]));var headers={'Content-Type':_0x7a01('0x9'),'Accept':_0x7a01('0x9')};function emit(_0x1935bc,_0x1223a3,_0x1cf932){io['to'](_0x1935bc)['emit'](_0x1223a3,_0x1cf932);}function getTicket(_0x47e105,_0x1a585c,_0x4d07d4,_0x5a7fa1,_0x4ff59b){logger['info'](_0x7a01('0xa'));var _0x4d2baf=_[_0x7a01('0xb')]({'responder_id':_0x1a585c['id'],'requester_id':_0x4d07d4['id'],'name':util[_0x7a01('0xc')]('Caller\x20-\x20%s',_0x4ff59b[_0x7a01('0xd')]),'phone':_0x4ff59b[_0x7a01('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x7a01('0xf')](_0x5a7fa1[_0x7a01('0x10')],_0x4ff59b,'\x20'),'description':intUtil[_0x7a01('0xf')](_0x5a7fa1['Descriptions'],_0x4ff59b,'<br>'),'tags':getTags(_0x5a7fa1[_0x7a01('0x11')],_0x7a01('0x12'))},getCustomFields(_0x5a7fa1[_0x7a01('0x13')],_0x4ff59b));_0x4d2baf[_0x7a01('0x14')]=_[_0x7a01('0x15')](_[_0x7a01('0x16')](_0x4d2baf[_0x7a01('0x14')],'id'),_0x7a01('0x17'));return request({'uri':util[_0x7a01('0xc')]('%s/api/v2/tickets',_0x47e105[_0x7a01('0x18')]),'method':'POST','body':_0x4d2baf})[_0x7a01('0x19')](function(_0x4b8a42){logger[_0x7a01('0x1a')](_0x7a01('0x1b'));return _0x4b8a42;});}function getUser(_0x3b5e60,_0x198eb6){if(intUtil['validateEmail'](_0x198eb6)){return request({'uri':util[_0x7a01('0xc')](_0x7a01('0x1c'),_0x3b5e60['remoteUri']),'qs':{'email':_0x198eb6}})[_0x7a01('0x19')](function(_0x5f4346){if(_0x5f4346[_0x7a01('0x1d')]){logger[_0x7a01('0x1a')](_0x7a01('0x1e'));return _[_0x7a01('0x1f')](_0x5f4346,function(_0x37cf7c){return _0x37cf7c[_0x7a01('0x20')][_0x7a01('0x21')]===_0x198eb6;});}else{logger[_0x7a01('0x1a')](_0x7a01('0x22'));return request({'uri':util[_0x7a01('0xc')](_0x7a01('0x23'),_0x3b5e60[_0x7a01('0x18')])})[_0x7a01('0x19')](function(_0x2db819){logger['info']('Admin\x20account\x20selected.');return _0x2db819;});}});}else{logger[_0x7a01('0x1a')](_0x7a01('0x24'));return request({'uri':util[_0x7a01('0xc')](_0x7a01('0x23'),_0x3b5e60['remoteUri'])})['then'](function(_0x2f0c5e){logger[_0x7a01('0x1a')](_0x7a01('0x25'));return _0x2f0c5e;});}}function getEndUser(_0x3bce6e,_0x22e3b4,_0x5bd43e){logger[_0x7a01('0x1a')](_0x7a01('0x26'),_0x5bd43e);return request({'uri':util['format']('%s/api/v2/contacts',_0x3bce6e['remoteUri']),'qs':{'phone':_0x5bd43e}})[_0x7a01('0x19')](function(_0x3ed806){if(_0x3ed806['length']){logger[_0x7a01('0x1a')](_0x7a01('0x27'));return _['find'](_0x3ed806,{'phone':_0x5bd43e});}else{logger[_0x7a01('0x1a')](_0x7a01('0x28'));return request({'uri':util[_0x7a01('0xc')](_0x7a01('0x29'),_0x3bce6e[_0x7a01('0x18')]),'method':_0x7a01('0x2a'),'body':{'name':_0x22e3b4,'phone':_0x5bd43e}})[_0x7a01('0x19')](function(_0x19d867){logger[_0x7a01('0x1a')](_0x7a01('0x2b'));return _0x19d867;});}});}function getAuth(_0x1c191c){return util[_0x7a01('0xc')](_0x7a01('0x2c'),new Buffer(_0x1c191c[_0x7a01('0x2d')]+':X')[_0x7a01('0x2e')](_0x7a01('0x2f')));}function request(_0xb84f12){logger[_0x7a01('0x30')]('[HTTP]',JSON[_0x7a01('0x31')](_0xb84f12));return rp(_[_0x7a01('0x6')](_0xb84f12,{'method':_0x7a01('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x5e6558,_0x92e4a0){var _0x23a4bc=[];if(_0x5e6558&&_0x5e6558['length']>0x0){_0x23a4bc=_['map'](_0x5e6558,_0x92e4a0);}return _0x23a4bc;}function getCustomFields(_0x8f6aa0,_0x5ae9bd){var _0x5e96ce=[];var _0x5df70d={'custom_fields':[]};if(_0x8f6aa0['length']>0x0){_[_0x7a01('0x33')](_0x8f6aa0,function(_0x6cbe18){if(_0x6cbe18[_0x7a01('0x34')]===_0x7a01('0x35')&&_0x6cbe18[_0x7a01('0x36')]&&!_0x6cbe18['customField']){_0x5df70d[_0x6cbe18[_0x7a01('0x36')][_0x7a01('0x37')]()]=_0x6cbe18[_0x7a01('0x38')][_0x7a01('0x2e')]();}else if(_0x6cbe18[_0x7a01('0x34')]==='string'&&_0x6cbe18[_0x7a01('0x39')]&&_0x6cbe18[_0x7a01('0x3a')]){_0x5df70d[_0x7a01('0x14')][_0x7a01('0x3b')]({'id':_0x6cbe18['idField'],'value':_0x6cbe18[_0x7a01('0x38')][_0x7a01('0x2e')]()});}else if(_0x6cbe18[_0x7a01('0x34')]===_0x7a01('0x3c')&&_0x6cbe18[_0x7a01('0x3d')]&&_0x6cbe18[_0x7a01('0x39')]&&_0x6cbe18[_0x7a01('0x3a')]){_0x5ae9bd[_0x6cbe18['variableName']]&&_0x5df70d[_0x7a01('0x14')][_0x7a01('0x3b')]({'id':_0x6cbe18['idField'],'value':_0x5ae9bd[_0x6cbe18[_0x7a01('0x3d')]]['toString']()});}else if(_0x6cbe18[_0x7a01('0x34')]===_0x7a01('0x3e')&&_0x6cbe18[_0x7a01('0x3f')]&&_0x6cbe18[_0x7a01('0x3f')][_0x7a01('0x12')]&&_0x6cbe18[_0x7a01('0x39')]&&_0x6cbe18[_0x7a01('0x3a')]){_0x5ae9bd[_0x6cbe18[_0x7a01('0x3f')]['name']['toLowerCase']()]&&_0x5df70d[_0x7a01('0x14')][_0x7a01('0x3b')]({'id':_0x6cbe18[_0x7a01('0x39')],'value':_0x5ae9bd[_0x6cbe18[_0x7a01('0x3f')][_0x7a01('0x12')]['toLowerCase']()][_0x7a01('0x2e')]()});}});}return _0x5df70d;}exports[_0x7a01('0x40')]=function(_0x521584,_0x9bd05b,_0xc725d2,_0x3ef43b,_0x5090ba,_0x3331d3){var _0x24477f,_0x4c1ff4;_0x3331d3['remoteUri']=intUtil[_0x7a01('0x41')](_0x3331d3[_0x7a01('0x18')]);_0x3331d3['serverUrl']=intUtil[_0x7a01('0x41')](_0x3331d3[_0x7a01('0x42')]);if(_0x5090ba&&_0x5090ba['monitor_format']){logger[_0x7a01('0x1a')](_0x7a01('0x43'),_0x7a01('0x44'));_0x9bd05b['recordingURL']=util[_0x7a01('0xc')](_0x7a01('0x45'),_0x3331d3[_0x7a01('0x42')],_0x9bd05b['uniqueid'],md5(_0x9bd05b[_0x7a01('0x46')]));}else{_0x9bd05b[_0x7a01('0x47')]='';}headers[_0x7a01('0x48')]=getAuth(_0x3331d3);return getUser(_0x3331d3,_0x3ef43b[_0x7a01('0x21')])[_0x7a01('0x19')](function(_0x38fa9b){_0x24477f=_0x38fa9b;logger[_0x7a01('0x1a')](_0x7a01('0x49'),_0x24477f['id']);return getEndUser(_0x3331d3,_0x9bd05b['calleridname'],_0x9bd05b[_0x7a01('0xe')]);})['then'](function(_0x14c6cc){_0x4c1ff4=_0x14c6cc;logger[_0x7a01('0x1a')](_0x7a01('0x4a'),_0x4c1ff4['id']);return getTicket(_0x3331d3,_0x24477f,_0x4c1ff4,_0xc725d2,_0x9bd05b);})['then'](function(_0x11d1b9){if(_0x11d1b9&&_0x11d1b9['id']){logger[_0x7a01('0x1a')](_0x7a01('0x1b'));logger[_0x7a01('0x1a')](_0x7a01('0x4b'),_0x11d1b9['id']);logger[_0x7a01('0x1a')](_0x7a01('0x43'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x7a01('0x4c'),_0x3ef43b[_0x7a01('0x12')]),_0x7a01('0x4d'),{'uri':util[_0x7a01('0xc')](_0x7a01('0x4e'),_0x3331d3[_0x7a01('0x18')],_0x11d1b9['id'])});}})[_0x7a01('0x4f')](function(_0x5e161f){logger[_0x7a01('0x50')](_0x7a01('0x43'),JSON['stringify'](_0x5e161f));});};exports[_0x7a01('0x51')]=function(_0x29259b,_0x8f55ab,_0x20abf1,_0x14463f,_0x4c48fb,_0x55689c,_0x2f2035){var _0x24cfd6,_0x450456;_0x55689c[_0x7a01('0x18')]=intUtil[_0x7a01('0x41')](_0x55689c[_0x7a01('0x18')]);_0x55689c['serverUrl']=intUtil[_0x7a01('0x41')](_0x55689c[_0x7a01('0x42')]);if(_0x2f2035&&_0x2f2035[_0x7a01('0x52')]&&_0x2f2035[_0x7a01('0x52')]!==_0x7a01('0x53')){logger[_0x7a01('0x1a')](_0x7a01('0x54'),'Recording\x20is\x20enabled!');_0x8f55ab['recordingURL']=util[_0x7a01('0xc')](_0x7a01('0x45'),_0x55689c[_0x7a01('0x42')],_0x8f55ab[_0x7a01('0x46')],md5(_0x8f55ab[_0x7a01('0x46')]));}headers[_0x7a01('0x48')]=getAuth(_0x55689c);return getUser(_0x55689c,_0x14463f[_0x7a01('0x21')])['then'](function(_0x3bfd0a){_0x24cfd6=_0x3bfd0a;logger[_0x7a01('0x1a')](_0x7a01('0x49'),_0x24cfd6['id']);return getEndUser(_0x55689c,_0x8f55ab[_0x7a01('0x55')],_0x8f55ab['destcalleridnum']);})['then'](function(_0x10a1b5){_0x450456=_0x10a1b5;logger[_0x7a01('0x1a')](_0x7a01('0x4a'),_0x450456['id']);return getTicket(_0x55689c,_0x24cfd6,_0x450456,_0x20abf1,_0x8f55ab);})['then'](function(_0xd7ebab){if(_0xd7ebab&&_0xd7ebab['id']){logger['info'](_0x7a01('0x1b'));logger['info'](_0x7a01('0x4b'),_0xd7ebab['id']);logger[_0x7a01('0x1a')](_0x7a01('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7a01('0xc')](_0x7a01('0x4c'),_0x14463f[_0x7a01('0x12')]),'trigger:browser:url',{'uri':util['format'](_0x7a01('0x4e'),_0x55689c['remoteUri'],_0xd7ebab['id'])});}})[_0x7a01('0x4f')](function(_0x1e3910){logger[_0x7a01('0x50')]('[OUTBOUND]',JSON['stringify'](_0x1e3910));});};exports[_0x7a01('0x56')]=function(_0x558298,_0x23fb0f,_0x516222,_0x2ff22e,_0xd373d0,_0x4cd87f){var _0x14ba5e,_0x35771e;_0x4cd87f['remoteUri']=intUtil['stripTrailingSlash'](_0x4cd87f[_0x7a01('0x18')]);_0x4cd87f[_0x7a01('0x42')]=intUtil['stripTrailingSlash'](_0x4cd87f[_0x7a01('0x42')]);if(_0xd373d0&&_0xd373d0[_0x7a01('0x57')]){logger[_0x7a01('0x1a')]('['+_0x23fb0f[_0x7a01('0x58')][_0x7a01('0x59')]()+']',_0x7a01('0x44'));_0x23fb0f[_0x7a01('0x47')]=util[_0x7a01('0xc')](_0x7a01('0x45'),_0x4cd87f['serverUrl'],_0x23fb0f[_0x7a01('0x46')],md5(_0x23fb0f[_0x7a01('0x46')]));}else{_0x23fb0f[_0x7a01('0x47')]='';}headers[_0x7a01('0x48')]=getAuth(_0x4cd87f);return getUser(_0x4cd87f,'')[_0x7a01('0x19')](function(_0x272d9d){_0x14ba5e=_0x272d9d;logger[_0x7a01('0x1a')](_0x7a01('0x49'),_0x14ba5e['id']);return getEndUser(_0x4cd87f,_0x23fb0f[_0x7a01('0xd')],_0x23fb0f[_0x7a01('0xe')]);})[_0x7a01('0x19')](function(_0x3f11f7){_0x35771e=_0x3f11f7;logger[_0x7a01('0x1a')](_0x7a01('0x4a'),_0x35771e['id']);return getTicket(_0x4cd87f,_0x14ba5e,_0x35771e,_0x516222,_0x23fb0f);})['then'](function(_0x544850){if(_0x544850){logger[_0x7a01('0x1a')](_0x7a01('0x1b'));logger[_0x7a01('0x1a')](_0x7a01('0x4b'),_0x544850['id']);}})[_0x7a01('0x4f')](function(_0x51ad5f){logger[_0x7a01('0x50')]('['+_0x23fb0f[_0x7a01('0x58')][_0x7a01('0x59')]()+']',JSON[_0x7a01('0x31')](_0x51ad5f));});};