0c6c2f0ae39ea62408be285f4e2edafb0ab12fae
[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 _0xac70=['The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','user:%s','catch','error','unmanaged','lastevent','toUpperCase','The\x20Ticket\x20ID\x20is:','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','format','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','keyBy','%s/api/v2/tickets','remoteUri','POST','then','info','validateEmail','%s/api/v2/agents','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','apiKey','toString','base64','[HTTP]','stringify','defaults','GET','map','includes','string','type','nameField','customField','toLowerCase','picklist','push','idField','variable','variableName','Variable','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','serverUrl','uniqueid','email'];(function(_0x318eb2,_0x51aca4){var _0x59e3e9=function(_0x496c65){while(--_0x496c65){_0x318eb2['push'](_0x318eb2['shift']());}};_0x59e3e9(++_0x51aca4);}(_0xac70,0x180));var _0x0ac7=function(_0x47bb19,_0x17a096){_0x47bb19=_0x47bb19-0x0;var _0x4ef57a=_0xac70[_0x47bb19];return _0x4ef57a;};'use strict';var _=require(_0x0ac7('0x0'));var rp=require(_0x0ac7('0x1'));var md5=require(_0x0ac7('0x2'));var util=require(_0x0ac7('0x3'));var Redis=require(_0x0ac7('0x4'));var intUtil=require(_0x0ac7('0x5'));var config=require(_0x0ac7('0x6'));var logger=require('../../../../config/logger')(_0x0ac7('0x7'));config[_0x0ac7('0x8')]=_['defaults'](config[_0x0ac7('0x8')],{'host':_0x0ac7('0x9'),'port':0x18eb});var io=require(_0x0ac7('0xa'))(new Redis(config[_0x0ac7('0x8')]));var headers={'Content-Type':_0x0ac7('0xb'),'Accept':_0x0ac7('0xb')};function emit(_0x2362b8,_0x41d274,_0x331572){io['to'](_0x2362b8)[_0x0ac7('0xc')](_0x41d274,_0x331572);}function getTicket(_0x3a3730,_0x2e632c,_0x4d4e4f,_0x4a6423,_0x2dc219){logger['info']('Creating\x20new\x20ticket...');var _0x449b6=_['merge']({'responder_id':_0x2e632c['id'],'requester_id':_0x4d4e4f['id'],'name':util[_0x0ac7('0xd')]('Caller\x20-\x20%s',_0x2dc219[_0x0ac7('0xe')]),'phone':_0x2dc219[_0x0ac7('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0ac7('0x10')](_0x4a6423['Subjects'],_0x2dc219,'\x20'),'description':intUtil[_0x0ac7('0x10')](_0x4a6423[_0x0ac7('0x11')],_0x2dc219,_0x0ac7('0x12')),'tags':getTags(_0x4a6423[_0x0ac7('0x13')],_0x0ac7('0x14'))},getCustomFields(_0x4a6423[_0x0ac7('0x15')],_0x2dc219));_0x449b6[_0x0ac7('0x16')]=_['mapValues'](_[_0x0ac7('0x17')](_0x449b6['custom_fields'],'id'),'value');return request({'uri':util['format'](_0x0ac7('0x18'),_0x3a3730[_0x0ac7('0x19')]),'method':_0x0ac7('0x1a'),'body':_0x449b6})[_0x0ac7('0x1b')](function(_0xf76db1){logger[_0x0ac7('0x1c')]('Ticket\x20created!');return _0xf76db1;});}function getUser(_0x4c8e34,_0xb6da57){if(intUtil[_0x0ac7('0x1d')](_0xb6da57)){return request({'uri':util[_0x0ac7('0xd')](_0x0ac7('0x1e'),_0x4c8e34['remoteUri']),'qs':{'email':_0xb6da57}})['then'](function(_0x3f3016){if(_0x3f3016['length']){logger[_0x0ac7('0x1c')](_0x0ac7('0x1f'));return _[_0x0ac7('0x20')](_0x3f3016,function(_0x53f413){return _0x53f413[_0x0ac7('0x21')]['email']===_0xb6da57;});}else{logger[_0x0ac7('0x1c')](_0x0ac7('0x22'));return request({'uri':util[_0x0ac7('0xd')](_0x0ac7('0x23'),_0x4c8e34[_0x0ac7('0x19')])})['then'](function(_0x4e6164){logger['info'](_0x0ac7('0x24'));return _0x4e6164;});}});}else{logger[_0x0ac7('0x1c')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x0ac7('0xd')]('%s/api/v2/agents/me',_0x4c8e34[_0x0ac7('0x19')])})[_0x0ac7('0x1b')](function(_0x4ca3fe){logger['info']('Admin\x20account\x20selected.');return _0x4ca3fe;});}}function getEndUser(_0xfb6d3a,_0x5c9df1,_0x258646){logger['info'](_0x0ac7('0x25'),_0x258646);return request({'uri':util['format'](_0x0ac7('0x26'),_0xfb6d3a[_0x0ac7('0x19')]),'qs':{'phone':_0x258646}})[_0x0ac7('0x1b')](function(_0x1daec4){if(_0x1daec4[_0x0ac7('0x27')]){logger[_0x0ac7('0x1c')](_0x0ac7('0x28'));return _[_0x0ac7('0x20')](_0x1daec4,{'phone':_0x258646});}else{logger[_0x0ac7('0x1c')](_0x0ac7('0x29'));return request({'uri':util['format'](_0x0ac7('0x26'),_0xfb6d3a[_0x0ac7('0x19')]),'method':_0x0ac7('0x1a'),'body':{'name':_0x5c9df1,'phone':_0x258646}})[_0x0ac7('0x1b')](function(_0x4a8cee){logger[_0x0ac7('0x1c')]('Enduser\x20created.');return _0x4a8cee;});}});}function getAuth(_0x3e06de){return util['format']('Basic\x20%s',new Buffer(_0x3e06de[_0x0ac7('0x2a')]+':X')[_0x0ac7('0x2b')](_0x0ac7('0x2c')));}function request(_0x5a5cf5){logger['debug'](_0x0ac7('0x2d'),JSON[_0x0ac7('0x2e')](_0x5a5cf5));return rp(_[_0x0ac7('0x2f')](_0x5a5cf5,{'method':_0x0ac7('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x94f7,_0x1e4031){var _0x20d1f0=[];if(_0x94f7&&_0x94f7[_0x0ac7('0x27')]>0x0){_0x20d1f0=_[_0x0ac7('0x31')](_0x94f7,_0x1e4031);}return _0x20d1f0;}function getCustomFields(_0x4390b2,_0x43b33e){var _0x5e96a5=[];var _0x3c3220={'custom_fields':[]};if(_0x4390b2[_0x0ac7('0x27')]>0x0){_['forEach'](_0x4390b2,function(_0x3af0d9){if(_[_0x0ac7('0x32')]([_0x0ac7('0x33'),'picklist'],_0x3af0d9[_0x0ac7('0x34')])&&_0x3af0d9[_0x0ac7('0x35')]&&!_0x3af0d9[_0x0ac7('0x36')]){_0x3c3220[_0x3af0d9[_0x0ac7('0x35')][_0x0ac7('0x37')]()]=_0x3af0d9['content'][_0x0ac7('0x2b')]();}else if(_['includes']([_0x0ac7('0x33'),_0x0ac7('0x38')],_0x3af0d9[_0x0ac7('0x34')])&&_0x3af0d9['idField']&&_0x3af0d9[_0x0ac7('0x36')]){_0x3c3220['custom_fields'][_0x0ac7('0x39')]({'id':_0x3af0d9[_0x0ac7('0x3a')],'value':_0x3af0d9['content'][_0x0ac7('0x2b')]()});}else if(_0x3af0d9[_0x0ac7('0x34')]===_0x0ac7('0x3b')&&_0x3af0d9['variableName']&&_0x3af0d9['idField']&&_0x3af0d9['customField']){_0x43b33e[_0x3af0d9[_0x0ac7('0x3c')]]&&_0x3c3220[_0x0ac7('0x16')][_0x0ac7('0x39')]({'id':_0x3af0d9['idField'],'value':_0x43b33e[_0x3af0d9[_0x0ac7('0x3c')]]['toString']()});}else if(_0x3af0d9[_0x0ac7('0x34')]==='customVariable'&&_0x3af0d9['Variable']&&_0x3af0d9[_0x0ac7('0x3d')][_0x0ac7('0x14')]&&_0x3af0d9[_0x0ac7('0x3a')]&&_0x3af0d9[_0x0ac7('0x36')]){_0x43b33e[_0x3af0d9[_0x0ac7('0x3d')][_0x0ac7('0x14')][_0x0ac7('0x37')]()]&&_0x3c3220[_0x0ac7('0x16')]['push']({'id':_0x3af0d9['idField'],'value':_0x43b33e[_0x3af0d9['Variable'][_0x0ac7('0x14')][_0x0ac7('0x37')]()][_0x0ac7('0x2b')]()});}});}return _0x3c3220;}exports[_0x0ac7('0x3e')]=function(_0x261ec9,_0x197461,_0x2b686a,_0x4cbd21,_0x2e9bed,_0x4c8314){var _0x50241c,_0x6a93c9;_0x4c8314[_0x0ac7('0x19')]=intUtil[_0x0ac7('0x3f')](_0x4c8314[_0x0ac7('0x19')]);_0x4c8314['serverUrl']=intUtil[_0x0ac7('0x3f')](_0x4c8314['serverUrl']);if(_0x2e9bed&&_0x2e9bed[_0x0ac7('0x40')]){logger['info'](_0x0ac7('0x41'),_0x0ac7('0x42'));_0x197461[_0x0ac7('0x43')]=util[_0x0ac7('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4c8314[_0x0ac7('0x44')],_0x197461[_0x0ac7('0x45')],md5(_0x197461[_0x0ac7('0x45')]));}else{_0x197461[_0x0ac7('0x43')]='';}headers['Authorization']=getAuth(_0x4c8314);return getUser(_0x4c8314,_0x4cbd21[_0x0ac7('0x46')])[_0x0ac7('0x1b')](function(_0xa35566){_0x50241c=_0xa35566;logger[_0x0ac7('0x1c')](_0x0ac7('0x47'),_0x50241c['id']);return getEndUser(_0x4c8314,_0x197461[_0x0ac7('0xe')],_0x197461['calleridnum']);})[_0x0ac7('0x1b')](function(_0x9c5b86){_0x6a93c9=_0x9c5b86;logger['info'](_0x0ac7('0x48'),_0x6a93c9['id']);return getTicket(_0x4c8314,_0x50241c,_0x6a93c9,_0x2b686a,_0x197461);})['then'](function(_0x5cb8a4){if(_0x5cb8a4&&_0x5cb8a4['id']){logger['info'](_0x0ac7('0x49'));logger[_0x0ac7('0x1c')]('The\x20Ticket\x20ID\x20is:',_0x5cb8a4['id']);logger[_0x0ac7('0x1c')](_0x0ac7('0x41'),_0x0ac7('0x4a'));emit(util[_0x0ac7('0xd')]('user:%s',_0x4cbd21[_0x0ac7('0x14')]),_0x0ac7('0x4b'),{'uri':util[_0x0ac7('0xd')](_0x0ac7('0x4c'),_0x4c8314['remoteUri'],_0x5cb8a4['id'])});}})['catch'](function(_0xa092d9){logger['error'](_0x0ac7('0x41'),JSON[_0x0ac7('0x2e')](_0xa092d9));});};exports[_0x0ac7('0x4d')]=function(_0x22d386,_0x10fc71,_0x12776b,_0x27a33d,_0x25b831,_0x2c92af,_0x280da7){var _0x24ea7d,_0x34e058;_0x2c92af[_0x0ac7('0x19')]=intUtil['stripTrailingSlash'](_0x2c92af[_0x0ac7('0x19')]);_0x2c92af[_0x0ac7('0x44')]=intUtil[_0x0ac7('0x3f')](_0x2c92af[_0x0ac7('0x44')]);if(_0x280da7&&_0x280da7[_0x0ac7('0x4e')]&&_0x280da7[_0x0ac7('0x4e')]!==_0x0ac7('0x4f')){logger[_0x0ac7('0x1c')](_0x0ac7('0x50'),_0x0ac7('0x42'));_0x10fc71[_0x0ac7('0x43')]=util[_0x0ac7('0xd')](_0x0ac7('0x51'),_0x2c92af[_0x0ac7('0x44')],_0x10fc71[_0x0ac7('0x45')],md5(_0x10fc71[_0x0ac7('0x45')]));}headers[_0x0ac7('0x52')]=getAuth(_0x2c92af);return getUser(_0x2c92af,_0x27a33d[_0x0ac7('0x46')])[_0x0ac7('0x1b')](function(_0x58abf5){_0x24ea7d=_0x58abf5;logger[_0x0ac7('0x1c')](_0x0ac7('0x47'),_0x24ea7d['id']);return getEndUser(_0x2c92af,_0x10fc71[_0x0ac7('0x53')],_0x10fc71['destcalleridnum']);})['then'](function(_0x567897){_0x34e058=_0x567897;logger['info'](_0x0ac7('0x48'),_0x34e058['id']);return getTicket(_0x2c92af,_0x24ea7d,_0x34e058,_0x12776b,_0x10fc71);})[_0x0ac7('0x1b')](function(_0x1e4d46){if(_0x1e4d46&&_0x1e4d46['id']){logger[_0x0ac7('0x1c')](_0x0ac7('0x49'));logger[_0x0ac7('0x1c')]('The\x20Ticket\x20ID\x20is:',_0x1e4d46['id']);logger['info'](_0x0ac7('0x50'),_0x0ac7('0x4a'));emit(util[_0x0ac7('0xd')](_0x0ac7('0x54'),_0x27a33d['name']),'trigger:browser:url',{'uri':util[_0x0ac7('0xd')](_0x0ac7('0x4c'),_0x2c92af[_0x0ac7('0x19')],_0x1e4d46['id'])});}})[_0x0ac7('0x55')](function(_0x3135d4){logger[_0x0ac7('0x56')](_0x0ac7('0x50'),JSON[_0x0ac7('0x2e')](_0x3135d4));});};exports[_0x0ac7('0x57')]=function(_0x162e7b,_0x44f1f9,_0x40ac9d,_0x1b0366,_0x3aa47a,_0xa0c592){var _0x384149,_0x3c9612;_0xa0c592[_0x0ac7('0x19')]=intUtil[_0x0ac7('0x3f')](_0xa0c592['remoteUri']);_0xa0c592['serverUrl']=intUtil[_0x0ac7('0x3f')](_0xa0c592['serverUrl']);if(_0x3aa47a&&_0x3aa47a[_0x0ac7('0x40')]){logger[_0x0ac7('0x1c')]('['+_0x44f1f9[_0x0ac7('0x58')][_0x0ac7('0x59')]()+']',_0x0ac7('0x42'));_0x44f1f9[_0x0ac7('0x43')]=util['format'](_0x0ac7('0x51'),_0xa0c592[_0x0ac7('0x44')],_0x44f1f9[_0x0ac7('0x45')],md5(_0x44f1f9['uniqueid']));}else{_0x44f1f9[_0x0ac7('0x43')]='';}headers[_0x0ac7('0x52')]=getAuth(_0xa0c592);return getUser(_0xa0c592,'')[_0x0ac7('0x1b')](function(_0x384885){_0x384149=_0x384885;logger[_0x0ac7('0x1c')](_0x0ac7('0x47'),_0x384149['id']);return getEndUser(_0xa0c592,_0x44f1f9[_0x0ac7('0xe')],_0x44f1f9[_0x0ac7('0xf')]);})[_0x0ac7('0x1b')](function(_0x16c98e){_0x3c9612=_0x16c98e;logger[_0x0ac7('0x1c')]('The\x20Enduser\x20ID\x20is:',_0x3c9612['id']);return getTicket(_0xa0c592,_0x384149,_0x3c9612,_0x40ac9d,_0x44f1f9);})[_0x0ac7('0x1b')](function(_0x8b7481){if(_0x8b7481){logger['info'](_0x0ac7('0x49'));logger[_0x0ac7('0x1c')](_0x0ac7('0x5a'),_0x8b7481['id']);}})[_0x0ac7('0x55')](function(_0x56f7f7){logger[_0x0ac7('0x56')]('['+_0x44f1f9[_0x0ac7('0x58')][_0x0ac7('0x59')]()+']',JSON['stringify'](_0x56f7f7));});};