c63c8ec1385443290b78f278f5d6dc9542717e52
[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 _0x3912=['Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','apiKey','base64','debug','[HTTP]','stringify','defaults','GET','forEach','includes','string','picklist','nameField','toLowerCase','toString','type','customField','push','content','variable','variableName','idField','customVariable','Variable','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','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]','email','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','toUpperCase','lastevent','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Tags','name','custom_fields','mapValues','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','Agent\x20found!','find','contact'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x3912,0x95));var _0x2391=function(_0x335d86,_0x1782a2){_0x335d86=_0x335d86-0x0;var _0x36dfa1=_0x3912[_0x335d86];return _0x36dfa1;};'use strict';var _=require('lodash');var rp=require(_0x2391('0x0'));var md5=require(_0x2391('0x1'));var util=require(_0x2391('0x2'));var Redis=require(_0x2391('0x3'));var intUtil=require(_0x2391('0x4'));var config=require('../../../../config/environment');var logger=require(_0x2391('0x5'))(_0x2391('0x6'));config[_0x2391('0x7')]=_['defaults'](config[_0x2391('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x2391('0x8'))(new Redis(config[_0x2391('0x7')]));var headers={'Content-Type':_0x2391('0x9'),'Accept':_0x2391('0x9')};function emit(_0x12dd6f,_0x36f01a,_0x13a9d2){io['to'](_0x12dd6f)[_0x2391('0xa')](_0x36f01a,_0x13a9d2);}function getTicket(_0x9884c2,_0x48ddeb,_0x10f8fd,_0x44f89f,_0x458a26){logger[_0x2391('0xb')](_0x2391('0xc'));var _0x3d1045=_[_0x2391('0xd')]({'responder_id':_0x48ddeb['id'],'requester_id':_0x10f8fd['id'],'name':util[_0x2391('0xe')](_0x2391('0xf'),_0x458a26['calleridname']),'phone':_0x458a26[_0x2391('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x2391('0x11')](_0x44f89f[_0x2391('0x12')],_0x458a26,'\x20'),'description':intUtil[_0x2391('0x11')](_0x44f89f['Descriptions'],_0x458a26,'<br>'),'tags':getTags(_0x44f89f[_0x2391('0x13')],_0x2391('0x14'))},getCustomFields(_0x44f89f['Fields'],_0x458a26));_0x3d1045[_0x2391('0x15')]=_[_0x2391('0x16')](_['keyBy'](_0x3d1045['custom_fields'],'id'),'value');return request({'uri':util['format'](_0x2391('0x17'),_0x9884c2[_0x2391('0x18')]),'method':_0x2391('0x19'),'body':_0x3d1045})[_0x2391('0x1a')](function(_0x50b470){logger[_0x2391('0xb')](_0x2391('0x1b'));return _0x50b470;});}function getUser(_0x39f20e,_0x5d1de7){if(intUtil[_0x2391('0x1c')](_0x5d1de7)){return request({'uri':util[_0x2391('0xe')]('%s/api/v2/agents',_0x39f20e[_0x2391('0x18')]),'qs':{'email':_0x5d1de7}})['then'](function(_0x3932b7){if(_0x3932b7[_0x2391('0x1d')]){logger[_0x2391('0xb')](_0x2391('0x1e'));return _[_0x2391('0x1f')](_0x3932b7,function(_0x25a33e){return _0x25a33e[_0x2391('0x20')]['email']===_0x5d1de7;});}else{logger[_0x2391('0xb')](_0x2391('0x21'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x39f20e[_0x2391('0x18')])})['then'](function(_0x4f8345){logger['info'](_0x2391('0x22'));return _0x4f8345;});}});}else{logger[_0x2391('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x2391('0xe')]('%s/api/v2/agents/me',_0x39f20e[_0x2391('0x18')])})[_0x2391('0x1a')](function(_0x4468a3){logger['info']('Admin\x20account\x20selected.');return _0x4468a3;});}}function getEndUser(_0x4520d5,_0x21c422,_0x4c57ef){logger[_0x2391('0xb')](_0x2391('0x23'),_0x4c57ef);return request({'uri':util['format'](_0x2391('0x24'),_0x4520d5['remoteUri']),'qs':{'phone':_0x4c57ef}})[_0x2391('0x1a')](function(_0x21947c){if(_0x21947c[_0x2391('0x1d')]){logger[_0x2391('0xb')]('Enduser\x20found!');return _[_0x2391('0x1f')](_0x21947c,{'phone':_0x4c57ef});}else{logger['info'](_0x2391('0x25'));return request({'uri':util[_0x2391('0xe')](_0x2391('0x24'),_0x4520d5['remoteUri']),'method':_0x2391('0x19'),'body':{'name':_0x21c422,'phone':_0x4c57ef}})[_0x2391('0x1a')](function(_0x51cc47){logger[_0x2391('0xb')]('Enduser\x20created.');return _0x51cc47;});}});}function getAuth(_0x102438){return util[_0x2391('0xe')](_0x2391('0x26'),new Buffer(_0x102438[_0x2391('0x27')]+':X')['toString'](_0x2391('0x28')));}function request(_0x2e9b84){logger[_0x2391('0x29')](_0x2391('0x2a'),JSON[_0x2391('0x2b')](_0x2e9b84));return rp(_[_0x2391('0x2c')](_0x2e9b84,{'method':_0x2391('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x5ef921,_0x48c2cf){var _0x13fbe9=[];if(_0x5ef921&&_0x5ef921['length']>0x0){_0x13fbe9=_['map'](_0x5ef921,_0x48c2cf);}return _0x13fbe9;}function getCustomFields(_0x181a02,_0x1e9f25){var _0x37b27a=[];var _0x5ed6e3={'custom_fields':[]};if(_0x181a02[_0x2391('0x1d')]>0x0){_[_0x2391('0x2e')](_0x181a02,function(_0x517ac5){if(_[_0x2391('0x2f')]([_0x2391('0x30'),_0x2391('0x31')],_0x517ac5['type'])&&_0x517ac5[_0x2391('0x32')]&&!_0x517ac5['customField']){_0x5ed6e3[_0x517ac5['nameField'][_0x2391('0x33')]()]=_0x517ac5['content'][_0x2391('0x34')]();}else if(_[_0x2391('0x2f')]([_0x2391('0x30'),'picklist'],_0x517ac5[_0x2391('0x35')])&&_0x517ac5['idField']&&_0x517ac5[_0x2391('0x36')]){_0x5ed6e3[_0x2391('0x15')][_0x2391('0x37')]({'id':_0x517ac5['idField'],'value':_0x517ac5[_0x2391('0x38')][_0x2391('0x34')]()});}else if(_0x517ac5[_0x2391('0x35')]===_0x2391('0x39')&&_0x517ac5[_0x2391('0x3a')]&&_0x517ac5[_0x2391('0x3b')]&&_0x517ac5['customField']){_0x1e9f25[_0x517ac5[_0x2391('0x3a')]]&&_0x5ed6e3[_0x2391('0x15')][_0x2391('0x37')]({'id':_0x517ac5['idField'],'value':_0x1e9f25[_0x517ac5[_0x2391('0x3a')]][_0x2391('0x34')]()});}else if(_0x517ac5['type']===_0x2391('0x3c')&&_0x517ac5[_0x2391('0x3d')]&&_0x517ac5[_0x2391('0x3d')][_0x2391('0x14')]&&_0x517ac5[_0x2391('0x3b')]&&_0x517ac5[_0x2391('0x36')]){_0x1e9f25[_0x517ac5[_0x2391('0x3d')][_0x2391('0x14')]['toLowerCase']()]&&_0x5ed6e3[_0x2391('0x15')][_0x2391('0x37')]({'id':_0x517ac5[_0x2391('0x3b')],'value':_0x1e9f25[_0x517ac5[_0x2391('0x3d')][_0x2391('0x14')][_0x2391('0x33')]()]['toString']()});}});}return _0x5ed6e3;}exports[_0x2391('0x3e')]=function(_0x7a11ee,_0x6e6fde,_0x1dac11,_0xa9c837,_0x2ad330,_0xfb58ff){var _0x2dcf65,_0x1c8bbf;_0xfb58ff[_0x2391('0x18')]=intUtil['stripTrailingSlash'](_0xfb58ff[_0x2391('0x18')]);_0xfb58ff[_0x2391('0x3f')]=intUtil[_0x2391('0x40')](_0xfb58ff['serverUrl']);if(_0x2ad330&&_0x2ad330[_0x2391('0x41')]){logger['info']('[QUEUE]',_0x2391('0x42'));_0x6e6fde[_0x2391('0x43')]=util[_0x2391('0xe')](_0x2391('0x44'),_0xfb58ff['serverUrl'],_0x6e6fde[_0x2391('0x45')],md5(_0x6e6fde[_0x2391('0x45')]));}else{_0x6e6fde['recordingURL']='';}headers[_0x2391('0x46')]=getAuth(_0xfb58ff);return getUser(_0xfb58ff,_0xa9c837['email'])[_0x2391('0x1a')](function(_0x37aaa2){_0x2dcf65=_0x37aaa2;logger[_0x2391('0xb')](_0x2391('0x47'),_0x2dcf65['id']);return getEndUser(_0xfb58ff,_0x6e6fde[_0x2391('0x48')],_0x6e6fde[_0x2391('0x10')]);})[_0x2391('0x1a')](function(_0x5c7a01){_0x1c8bbf=_0x5c7a01;logger['info'](_0x2391('0x49'),_0x1c8bbf['id']);return getTicket(_0xfb58ff,_0x2dcf65,_0x1c8bbf,_0x1dac11,_0x6e6fde);})[_0x2391('0x1a')](function(_0x30c376){if(_0x30c376&&_0x30c376['id']){logger[_0x2391('0xb')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x30c376['id']);logger[_0x2391('0xb')](_0x2391('0x4a'),_0x2391('0x4b'));emit(util[_0x2391('0xe')](_0x2391('0x4c'),_0xa9c837[_0x2391('0x14')]),_0x2391('0x4d'),{'uri':util[_0x2391('0xe')](_0x2391('0x4e'),_0xfb58ff['remoteUri'],_0x30c376['id'])});}})[_0x2391('0x4f')](function(_0xeeb96b){logger[_0x2391('0x50')](_0x2391('0x4a'),JSON['stringify'](_0xeeb96b));});};exports[_0x2391('0x51')]=function(_0x594ed6,_0x1c8132,_0x431990,_0x145023,_0x83f839,_0x4725e9,_0x483b6f){var _0x438d63,_0x5a8761;_0x4725e9[_0x2391('0x18')]=intUtil[_0x2391('0x40')](_0x4725e9[_0x2391('0x18')]);_0x4725e9[_0x2391('0x3f')]=intUtil[_0x2391('0x40')](_0x4725e9[_0x2391('0x3f')]);if(_0x483b6f&&_0x483b6f['recordingFormat']&&_0x483b6f[_0x2391('0x52')]!==_0x2391('0x53')){logger[_0x2391('0xb')](_0x2391('0x54'),_0x2391('0x42'));_0x1c8132['recordingURL']=util[_0x2391('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4725e9['serverUrl'],_0x1c8132[_0x2391('0x45')],md5(_0x1c8132['uniqueid']));}headers[_0x2391('0x46')]=getAuth(_0x4725e9);return getUser(_0x4725e9,_0x145023[_0x2391('0x55')])['then'](function(_0x54223d){_0x438d63=_0x54223d;logger[_0x2391('0xb')]('The\x20User\x20ID\x20is:',_0x438d63['id']);return getEndUser(_0x4725e9,_0x1c8132[_0x2391('0x56')],_0x1c8132[_0x2391('0x57')]);})[_0x2391('0x1a')](function(_0x323912){_0x5a8761=_0x323912;logger['info'](_0x2391('0x49'),_0x5a8761['id']);return getTicket(_0x4725e9,_0x438d63,_0x5a8761,_0x431990,_0x1c8132);})[_0x2391('0x1a')](function(_0x3adcc5){if(_0x3adcc5&&_0x3adcc5['id']){logger[_0x2391('0xb')](_0x2391('0x1b'));logger['info'](_0x2391('0x58'),_0x3adcc5['id']);logger[_0x2391('0xb')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2391('0xe')]('user:%s',_0x145023[_0x2391('0x14')]),_0x2391('0x4d'),{'uri':util[_0x2391('0xe')]('%s/helpdesk/tickets/%d',_0x4725e9[_0x2391('0x18')],_0x3adcc5['id'])});}})[_0x2391('0x4f')](function(_0x30bdc6){logger[_0x2391('0x50')](_0x2391('0x54'),JSON[_0x2391('0x2b')](_0x30bdc6));});};exports['unmanaged']=function(_0x399c3c,_0x376053,_0x40d7f3,_0x1674f3,_0x647cce,_0x698d48){var _0x1d70df,_0x3e6316;_0x698d48[_0x2391('0x18')]=intUtil[_0x2391('0x40')](_0x698d48[_0x2391('0x18')]);_0x698d48[_0x2391('0x3f')]=intUtil[_0x2391('0x40')](_0x698d48[_0x2391('0x3f')]);if(_0x647cce&&_0x647cce[_0x2391('0x41')]){logger['info']('['+_0x376053['lastevent'][_0x2391('0x59')]()+']',_0x2391('0x42'));_0x376053[_0x2391('0x43')]=util[_0x2391('0xe')](_0x2391('0x44'),_0x698d48['serverUrl'],_0x376053[_0x2391('0x45')],md5(_0x376053[_0x2391('0x45')]));}else{_0x376053['recordingURL']='';}headers[_0x2391('0x46')]=getAuth(_0x698d48);return getUser(_0x698d48,'')[_0x2391('0x1a')](function(_0x239370){_0x1d70df=_0x239370;logger['info'](_0x2391('0x47'),_0x1d70df['id']);return getEndUser(_0x698d48,_0x376053[_0x2391('0x48')],_0x376053[_0x2391('0x10')]);})[_0x2391('0x1a')](function(_0x3abded){_0x3e6316=_0x3abded;logger[_0x2391('0xb')]('The\x20Enduser\x20ID\x20is:',_0x3e6316['id']);return getTicket(_0x698d48,_0x1d70df,_0x3e6316,_0x40d7f3,_0x376053);})[_0x2391('0x1a')](function(_0x4be44e){if(_0x4be44e){logger[_0x2391('0xb')](_0x2391('0x1b'));logger[_0x2391('0xb')](_0x2391('0x58'),_0x4be44e['id']);}})[_0x2391('0x4f')](function(_0x12ab0c){logger[_0x2391('0x50')]('['+_0x376053[_0x2391('0x5a')]['toUpperCase']()+']',JSON[_0x2391('0x2b')](_0x12ab0c));});};