Built motion from commit ddca4d0d.|2.5.47
[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 _0xe5cd=['Variable','name','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','recordingFormat','none','[OUTBOUND]','destcalleridnum','The\x20Ticket\x20ID\x20is:','catch','stringify','unmanaged','lastevent','toUpperCase','lodash','md5','util','ioredis','./util','../../../../config/logger','freshdesk','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','length','Agent\x20found!','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','[HTTP]','GET','map','forEach','includes','string','picklist','customField','nameField','content','type','idField','push','variable','variableName','customVariable'];(function(_0xd0310,_0x511c3f){var _0x544560=function(_0x54e217){while(--_0x54e217){_0xd0310['push'](_0xd0310['shift']());}};_0x544560(++_0x511c3f);}(_0xe5cd,0x1dd));var _0xde5c=function(_0x25c044,_0xbd05f8){_0x25c044=_0x25c044-0x0;var _0x558ee5=_0xe5cd[_0x25c044];return _0x558ee5;};'use strict';var _=require(_0xde5c('0x0'));var rp=require('request-promise');var md5=require(_0xde5c('0x1'));var util=require(_0xde5c('0x2'));var Redis=require(_0xde5c('0x3'));var intUtil=require(_0xde5c('0x4'));var config=require('../../../../config/environment');var logger=require(_0xde5c('0x5'))(_0xde5c('0x6'));config['redis']=_[_0xde5c('0x7')](config[_0xde5c('0x8')],{'host':_0xde5c('0x9'),'port':0x18eb});var io=require(_0xde5c('0xa'))(new Redis(config[_0xde5c('0x8')]));var headers={'Content-Type':_0xde5c('0xb'),'Accept':_0xde5c('0xb')};function emit(_0x319144,_0x3892da,_0x40f5b0){io['to'](_0x319144)[_0xde5c('0xc')](_0x3892da,_0x40f5b0);}function getTicket(_0x10e6ef,_0x334986,_0x81551d,_0x3d3616,_0x42f99f){logger[_0xde5c('0xd')](_0xde5c('0xe'));var _0xd40eff=_[_0xde5c('0xf')]({'responder_id':_0x334986['id'],'requester_id':_0x81551d['id'],'name':util[_0xde5c('0x10')](_0xde5c('0x11'),_0x42f99f[_0xde5c('0x12')]),'phone':_0x42f99f[_0xde5c('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xde5c('0x14')](_0x3d3616[_0xde5c('0x15')],_0x42f99f,'\x20'),'description':intUtil[_0xde5c('0x14')](_0x3d3616[_0xde5c('0x16')],_0x42f99f,'<br>'),'tags':getTags(_0x3d3616['Tags'],'name')},getCustomFields(_0x3d3616[_0xde5c('0x17')],_0x42f99f));_0xd40eff[_0xde5c('0x18')]=_[_0xde5c('0x19')](_[_0xde5c('0x1a')](_0xd40eff['custom_fields'],'id'),'value');return request({'uri':util[_0xde5c('0x10')](_0xde5c('0x1b'),_0x10e6ef[_0xde5c('0x1c')]),'method':_0xde5c('0x1d'),'body':_0xd40eff})[_0xde5c('0x1e')](function(_0x4b5a65){logger[_0xde5c('0xd')](_0xde5c('0x1f'));return _0x4b5a65;});}function getUser(_0x385c1d,_0xca58be){if(intUtil['validateEmail'](_0xca58be)){return request({'uri':util[_0xde5c('0x10')]('%s/api/v2/agents',_0x385c1d[_0xde5c('0x1c')]),'qs':{'email':_0xca58be}})[_0xde5c('0x1e')](function(_0x1c6770){if(_0x1c6770[_0xde5c('0x20')]){logger[_0xde5c('0xd')](_0xde5c('0x21'));return _['find'](_0x1c6770,function(_0x1c0388){return _0x1c0388[_0xde5c('0x22')]['email']===_0xca58be;});}else{logger['info'](_0xde5c('0x23'));return request({'uri':util[_0xde5c('0x10')](_0xde5c('0x24'),_0x385c1d[_0xde5c('0x1c')])})['then'](function(_0x37d61a){logger[_0xde5c('0xd')]('Admin\x20account\x20selected.');return _0x37d61a;});}});}else{logger[_0xde5c('0xd')](_0xde5c('0x25'));return request({'uri':util['format'](_0xde5c('0x24'),_0x385c1d[_0xde5c('0x1c')])})['then'](function(_0x4f999f){logger[_0xde5c('0xd')](_0xde5c('0x26'));return _0x4f999f;});}}function getEndUser(_0x5f579,_0x18999e,_0x5c8d80){logger[_0xde5c('0xd')]('Searching\x20enduser\x20with\x20phone',_0x5c8d80);return request({'uri':util[_0xde5c('0x10')](_0xde5c('0x27'),_0x5f579[_0xde5c('0x1c')]),'qs':{'phone':_0x5c8d80}})[_0xde5c('0x1e')](function(_0x329f8e){if(_0x329f8e[_0xde5c('0x20')]){logger[_0xde5c('0xd')](_0xde5c('0x28'));return _[_0xde5c('0x29')](_0x329f8e,{'phone':_0x5c8d80});}else{logger[_0xde5c('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xde5c('0x10')](_0xde5c('0x27'),_0x5f579[_0xde5c('0x1c')]),'method':'POST','body':{'name':_0x18999e,'phone':_0x5c8d80}})['then'](function(_0x3d0b6c){logger['info'](_0xde5c('0x2a'));return _0x3d0b6c;});}});}function getAuth(_0x2e2b06){return util[_0xde5c('0x10')](_0xde5c('0x2b'),new Buffer(_0x2e2b06[_0xde5c('0x2c')]+':X')[_0xde5c('0x2d')](_0xde5c('0x2e')));}function request(_0x5140da){logger['debug'](_0xde5c('0x2f'),JSON['stringify'](_0x5140da));return rp(_[_0xde5c('0x7')](_0x5140da,{'method':_0xde5c('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x5b81cb,_0x5dfde8){var _0x466257=[];if(_0x5b81cb&&_0x5b81cb[_0xde5c('0x20')]>0x0){_0x466257=_[_0xde5c('0x31')](_0x5b81cb,_0x5dfde8);}return _0x466257;}function getCustomFields(_0x1e4620,_0x8bec61){var _0x276508=[];var _0x2f73c9={'custom_fields':[]};if(_0x1e4620[_0xde5c('0x20')]>0x0){_[_0xde5c('0x32')](_0x1e4620,function(_0x34bc20){if(_[_0xde5c('0x33')]([_0xde5c('0x34'),_0xde5c('0x35')],_0x34bc20['type'])&&_0x34bc20['nameField']&&!_0x34bc20[_0xde5c('0x36')]){_0x2f73c9[_0x34bc20[_0xde5c('0x37')]['toLowerCase']()]=_0x34bc20[_0xde5c('0x38')]['toString']();}else if(_[_0xde5c('0x33')]([_0xde5c('0x34'),_0xde5c('0x35')],_0x34bc20[_0xde5c('0x39')])&&_0x34bc20[_0xde5c('0x3a')]&&_0x34bc20[_0xde5c('0x36')]){_0x2f73c9[_0xde5c('0x18')][_0xde5c('0x3b')]({'id':_0x34bc20[_0xde5c('0x3a')],'value':_0x34bc20['content'][_0xde5c('0x2d')]()});}else if(_0x34bc20[_0xde5c('0x39')]===_0xde5c('0x3c')&&_0x34bc20['variableName']&&_0x34bc20[_0xde5c('0x3a')]&&_0x34bc20[_0xde5c('0x36')]){_0x8bec61[_0x34bc20[_0xde5c('0x3d')]]&&_0x2f73c9[_0xde5c('0x18')][_0xde5c('0x3b')]({'id':_0x34bc20[_0xde5c('0x3a')],'value':_0x8bec61[_0x34bc20[_0xde5c('0x3d')]]['toString']()});}else if(_0x34bc20[_0xde5c('0x39')]===_0xde5c('0x3e')&&_0x34bc20[_0xde5c('0x3f')]&&_0x34bc20[_0xde5c('0x3f')]['name']&&_0x34bc20['idField']&&_0x34bc20[_0xde5c('0x36')]){_0x8bec61[_0x34bc20[_0xde5c('0x3f')][_0xde5c('0x40')]['toLowerCase']()]&&_0x2f73c9['custom_fields'][_0xde5c('0x3b')]({'id':_0x34bc20[_0xde5c('0x3a')],'value':_0x8bec61[_0x34bc20[_0xde5c('0x3f')][_0xde5c('0x40')]['toLowerCase']()][_0xde5c('0x2d')]()});}});}return _0x2f73c9;}exports['queue']=function(_0x21c14b,_0x4cb24b,_0x6ec914,_0x10a958,_0x50de18,_0x2e8f3b){var _0x4c713d,_0x376c5d;_0x2e8f3b[_0xde5c('0x1c')]=intUtil['stripTrailingSlash'](_0x2e8f3b[_0xde5c('0x1c')]);_0x2e8f3b['serverUrl']=intUtil[_0xde5c('0x41')](_0x2e8f3b[_0xde5c('0x42')]);if(_0x50de18&&_0x50de18[_0xde5c('0x43')]){logger[_0xde5c('0xd')](_0xde5c('0x44'),_0xde5c('0x45'));_0x4cb24b[_0xde5c('0x46')]=util['format'](_0xde5c('0x47'),_0x2e8f3b['serverUrl'],_0x4cb24b[_0xde5c('0x48')],md5(_0x4cb24b['uniqueid']));}else{_0x4cb24b[_0xde5c('0x46')]='';}headers[_0xde5c('0x49')]=getAuth(_0x2e8f3b);return getUser(_0x2e8f3b,_0x10a958[_0xde5c('0x4a')])[_0xde5c('0x1e')](function(_0x4d535d){_0x4c713d=_0x4d535d;logger['info'](_0xde5c('0x4b'),_0x4c713d['id']);return getEndUser(_0x2e8f3b,_0x4cb24b[_0xde5c('0x12')],_0x4cb24b[_0xde5c('0x13')]);})[_0xde5c('0x1e')](function(_0x5ee081){_0x376c5d=_0x5ee081;logger[_0xde5c('0xd')](_0xde5c('0x4c'),_0x376c5d['id']);return getTicket(_0x2e8f3b,_0x4c713d,_0x376c5d,_0x6ec914,_0x4cb24b);})[_0xde5c('0x1e')](function(_0x4179a9){if(_0x4179a9&&_0x4179a9['id']){logger[_0xde5c('0xd')](_0xde5c('0x1f'));logger[_0xde5c('0xd')]('The\x20Ticket\x20ID\x20is:',_0x4179a9['id']);logger['info'](_0xde5c('0x44'),_0xde5c('0x4d'));emit(util[_0xde5c('0x10')](_0xde5c('0x4e'),_0x10a958[_0xde5c('0x40')]),'trigger:browser:url',{'uri':util[_0xde5c('0x10')](_0xde5c('0x4f'),_0x2e8f3b[_0xde5c('0x1c')],_0x4179a9['id'])});}})['catch'](function(_0x4e481d){logger['error'](_0xde5c('0x44'),JSON['stringify'](_0x4e481d));});};exports['outbound']=function(_0x2039e8,_0x50d6d7,_0x5acaee,_0x46142a,_0x4312e5,_0x48bae3,_0x264b1c){var _0xd46b0c,_0x4f55c9;_0x48bae3[_0xde5c('0x1c')]=intUtil['stripTrailingSlash'](_0x48bae3[_0xde5c('0x1c')]);_0x48bae3['serverUrl']=intUtil[_0xde5c('0x41')](_0x48bae3[_0xde5c('0x42')]);if(_0x264b1c&&_0x264b1c['recordingFormat']&&_0x264b1c[_0xde5c('0x50')]!==_0xde5c('0x51')){logger[_0xde5c('0xd')](_0xde5c('0x52'),_0xde5c('0x45'));_0x50d6d7[_0xde5c('0x46')]=util[_0xde5c('0x10')](_0xde5c('0x47'),_0x48bae3[_0xde5c('0x42')],_0x50d6d7['uniqueid'],md5(_0x50d6d7[_0xde5c('0x48')]));}headers[_0xde5c('0x49')]=getAuth(_0x48bae3);return getUser(_0x48bae3,_0x46142a['email'])[_0xde5c('0x1e')](function(_0x3c80a0){_0xd46b0c=_0x3c80a0;logger[_0xde5c('0xd')]('The\x20User\x20ID\x20is:',_0xd46b0c['id']);return getEndUser(_0x48bae3,_0x50d6d7['destcalleridname'],_0x50d6d7[_0xde5c('0x53')]);})['then'](function(_0x517240){_0x4f55c9=_0x517240;logger['info'](_0xde5c('0x4c'),_0x4f55c9['id']);return getTicket(_0x48bae3,_0xd46b0c,_0x4f55c9,_0x5acaee,_0x50d6d7);})[_0xde5c('0x1e')](function(_0x5b6889){if(_0x5b6889&&_0x5b6889['id']){logger[_0xde5c('0xd')](_0xde5c('0x1f'));logger[_0xde5c('0xd')](_0xde5c('0x54'),_0x5b6889['id']);logger[_0xde5c('0xd')](_0xde5c('0x52'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xde5c('0x10')](_0xde5c('0x4e'),_0x46142a['name']),'trigger:browser:url',{'uri':util[_0xde5c('0x10')](_0xde5c('0x4f'),_0x48bae3['remoteUri'],_0x5b6889['id'])});}})[_0xde5c('0x55')](function(_0x53a73d){logger['error'](_0xde5c('0x52'),JSON[_0xde5c('0x56')](_0x53a73d));});};exports[_0xde5c('0x57')]=function(_0x8de3b9,_0x24dae9,_0x53438c,_0x3b35b6,_0x2d74e6,_0x3a19d7){var _0x3790c2,_0x32d0a4;_0x3a19d7[_0xde5c('0x1c')]=intUtil[_0xde5c('0x41')](_0x3a19d7[_0xde5c('0x1c')]);_0x3a19d7[_0xde5c('0x42')]=intUtil['stripTrailingSlash'](_0x3a19d7[_0xde5c('0x42')]);if(_0x2d74e6&&_0x2d74e6[_0xde5c('0x43')]){logger[_0xde5c('0xd')]('['+_0x24dae9[_0xde5c('0x58')][_0xde5c('0x59')]()+']',_0xde5c('0x45'));_0x24dae9[_0xde5c('0x46')]=util[_0xde5c('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3a19d7[_0xde5c('0x42')],_0x24dae9[_0xde5c('0x48')],md5(_0x24dae9[_0xde5c('0x48')]));}else{_0x24dae9['recordingURL']='';}headers[_0xde5c('0x49')]=getAuth(_0x3a19d7);return getUser(_0x3a19d7,'')[_0xde5c('0x1e')](function(_0x213e0c){_0x3790c2=_0x213e0c;logger['info'](_0xde5c('0x4b'),_0x3790c2['id']);return getEndUser(_0x3a19d7,_0x24dae9[_0xde5c('0x12')],_0x24dae9[_0xde5c('0x13')]);})[_0xde5c('0x1e')](function(_0x1d6438){_0x32d0a4=_0x1d6438;logger[_0xde5c('0xd')](_0xde5c('0x4c'),_0x32d0a4['id']);return getTicket(_0x3a19d7,_0x3790c2,_0x32d0a4,_0x53438c,_0x24dae9);})[_0xde5c('0x1e')](function(_0x40fcff){if(_0x40fcff){logger[_0xde5c('0xd')](_0xde5c('0x1f'));logger[_0xde5c('0xd')](_0xde5c('0x54'),_0x40fcff['id']);}})[_0xde5c('0x55')](function(_0x3a51b0){logger['error']('['+_0x24dae9[_0xde5c('0x58')][_0xde5c('0x59')]()+']',JSON[_0xde5c('0x56')](_0x3a51b0));});};