Built motion from commit (unavailable).|2.5.25
[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 _0x79ea=['calleridname','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','<br>','name','Fields','custom_fields','mapValues','keyBy','value','remoteUri','POST','then','validateEmail','length','Agent\x20found!','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','%s/api/v2/contacts','find','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','defaults','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','idField','content','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20Enduser\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','[QUEUE]','stringify','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','lastevent','toUpperCase'];(function(_0x2d1da8,_0x5606b9){var _0x53ae73=function(_0x341c0e){while(--_0x341c0e){_0x2d1da8['push'](_0x2d1da8['shift']());}};_0x53ae73(++_0x5606b9);}(_0x79ea,0xbb));var _0xa79e=function(_0x4b775b,_0x2aadc6){_0x4b775b=_0x4b775b-0x0;var _0xf84d39=_0x79ea[_0x4b775b];return _0xf84d39;};'use strict';var _=require(_0xa79e('0x0'));var rp=require(_0xa79e('0x1'));var md5=require(_0xa79e('0x2'));var util=require('util');var Redis=require(_0xa79e('0x3'));var intUtil=require(_0xa79e('0x4'));var config=require(_0xa79e('0x5'));var logger=require(_0xa79e('0x6'))(_0xa79e('0x7'));config[_0xa79e('0x8')]=_['defaults'](config['redis'],{'host':_0xa79e('0x9'),'port':0x18eb});var io=require(_0xa79e('0xa'))(new Redis(config[_0xa79e('0x8')]));var headers={'Content-Type':_0xa79e('0xb'),'Accept':_0xa79e('0xb')};function emit(_0xa88b0d,_0xb12a75,_0x458016){io['to'](_0xa88b0d)[_0xa79e('0xc')](_0xb12a75,_0x458016);}function getTicket(_0x59eb79,_0x5503eb,_0x30f76c,_0x3b1f72,_0x5bffaa){logger[_0xa79e('0xd')](_0xa79e('0xe'));var _0x49e94d=_[_0xa79e('0xf')]({'responder_id':_0x5503eb['id'],'requester_id':_0x30f76c['id'],'name':util[_0xa79e('0x10')](_0xa79e('0x11'),_0x5bffaa['calleridname']),'phone':_0x5bffaa[_0xa79e('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xa79e('0x13')](_0x3b1f72[_0xa79e('0x14')],_0x5bffaa,'\x20'),'description':intUtil[_0xa79e('0x13')](_0x3b1f72[_0xa79e('0x15')],_0x5bffaa,_0xa79e('0x16')),'tags':getTags(_0x3b1f72['Tags'],_0xa79e('0x17'))},getCustomFields(_0x3b1f72[_0xa79e('0x18')],_0x5bffaa));_0x49e94d[_0xa79e('0x19')]=_[_0xa79e('0x1a')](_[_0xa79e('0x1b')](_0x49e94d[_0xa79e('0x19')],'id'),_0xa79e('0x1c'));return request({'uri':util[_0xa79e('0x10')]('%s/api/v2/tickets',_0x59eb79[_0xa79e('0x1d')]),'method':_0xa79e('0x1e'),'body':_0x49e94d})[_0xa79e('0x1f')](function(_0x5bbc50){logger[_0xa79e('0xd')]('Ticket\x20created!');return _0x5bbc50;});}function getUser(_0x5c49ae,_0x302c34){if(intUtil[_0xa79e('0x20')](_0x302c34)){return request({'uri':util[_0xa79e('0x10')]('%s/api/v2/agents',_0x5c49ae[_0xa79e('0x1d')]),'qs':{'email':_0x302c34}})[_0xa79e('0x1f')](function(_0x2ca329){if(_0x2ca329[_0xa79e('0x21')]){logger[_0xa79e('0xd')](_0xa79e('0x22'));return _['find'](_0x2ca329,function(_0x277cd0){return _0x277cd0[_0xa79e('0x23')][_0xa79e('0x24')]===_0x302c34;});}else{logger[_0xa79e('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xa79e('0x25'),_0x5c49ae[_0xa79e('0x1d')])})[_0xa79e('0x1f')](function(_0x636172){logger['info'](_0xa79e('0x26'));return _0x636172;});}});}else{logger[_0xa79e('0xd')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa79e('0x10')]('%s/api/v2/agents/me',_0x5c49ae[_0xa79e('0x1d')])})[_0xa79e('0x1f')](function(_0x3f3804){logger['info'](_0xa79e('0x26'));return _0x3f3804;});}}function getEndUser(_0x637354,_0x420112,_0x2e92f8){logger[_0xa79e('0xd')]('Searching\x20enduser\x20with\x20phone',_0x2e92f8);return request({'uri':util['format'](_0xa79e('0x27'),_0x637354[_0xa79e('0x1d')]),'qs':{'phone':_0x2e92f8}})['then'](function(_0x476b44){if(_0x476b44[_0xa79e('0x21')]){logger[_0xa79e('0xd')]('Enduser\x20found!');return _[_0xa79e('0x28')](_0x476b44,{'phone':_0x2e92f8});}else{logger[_0xa79e('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xa79e('0x10')](_0xa79e('0x27'),_0x637354['remoteUri']),'method':_0xa79e('0x1e'),'body':{'name':_0x420112,'phone':_0x2e92f8}})[_0xa79e('0x1f')](function(_0x4eca2a){logger[_0xa79e('0xd')](_0xa79e('0x29'));return _0x4eca2a;});}});}function getAuth(_0x459e07){return util['format'](_0xa79e('0x2a'),new Buffer(_0x459e07[_0xa79e('0x2b')]+':X')[_0xa79e('0x2c')](_0xa79e('0x2d')));}function request(_0x11cf4a){logger[_0xa79e('0x2e')](_0xa79e('0x2f'),JSON['stringify'](_0x11cf4a));return rp(_[_0xa79e('0x30')](_0x11cf4a,{'method':_0xa79e('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x2f6598,_0x2e367e){var _0x1ec4b8=[];if(_0x2f6598&&_0x2f6598['length']>0x0){_0x1ec4b8=_[_0xa79e('0x32')](_0x2f6598,_0x2e367e);}return _0x1ec4b8;}function getCustomFields(_0x169b61,_0x53fd8e){var _0x12cf54=[];var _0x6abb61={'custom_fields':[]};if(_0x169b61[_0xa79e('0x21')]>0x0){_[_0xa79e('0x33')](_0x169b61,function(_0x1453d2){if(_[_0xa79e('0x34')]([_0xa79e('0x35'),_0xa79e('0x36')],_0x1453d2[_0xa79e('0x37')])&&_0x1453d2[_0xa79e('0x38')]&&!_0x1453d2[_0xa79e('0x39')]){_0x6abb61[_0x1453d2['nameField'][_0xa79e('0x3a')]()]=_0x1453d2['content']['toString']();}else if(_['includes'](['string',_0xa79e('0x36')],_0x1453d2[_0xa79e('0x37')])&&_0x1453d2[_0xa79e('0x3b')]&&_0x1453d2['customField']){_0x6abb61[_0xa79e('0x19')]['push']({'id':_0x1453d2[_0xa79e('0x3b')],'value':_0x1453d2[_0xa79e('0x3c')][_0xa79e('0x2c')]()});}else if(_0x1453d2[_0xa79e('0x37')]==='variable'&&_0x1453d2[_0xa79e('0x3d')]&&_0x1453d2[_0xa79e('0x3b')]&&_0x1453d2[_0xa79e('0x39')]){_0x53fd8e[_0x1453d2[_0xa79e('0x3d')]]&&_0x6abb61[_0xa79e('0x19')][_0xa79e('0x3e')]({'id':_0x1453d2['idField'],'value':_0x53fd8e[_0x1453d2[_0xa79e('0x3d')]][_0xa79e('0x2c')]()});}else if(_0x1453d2['type']===_0xa79e('0x3f')&&_0x1453d2[_0xa79e('0x40')]&&_0x1453d2[_0xa79e('0x40')][_0xa79e('0x17')]&&_0x1453d2[_0xa79e('0x3b')]&&_0x1453d2[_0xa79e('0x39')]){_0x53fd8e[_0x1453d2[_0xa79e('0x40')][_0xa79e('0x17')][_0xa79e('0x3a')]()]&&_0x6abb61[_0xa79e('0x19')][_0xa79e('0x3e')]({'id':_0x1453d2[_0xa79e('0x3b')],'value':_0x53fd8e[_0x1453d2[_0xa79e('0x40')][_0xa79e('0x17')][_0xa79e('0x3a')]()][_0xa79e('0x2c')]()});}});}return _0x6abb61;}exports[_0xa79e('0x41')]=function(_0x19b7dc,_0x447c46,_0x1ffb18,_0x893f99,_0x440a01,_0x53ed89){var _0x568e2a,_0x56d5c1;_0x53ed89[_0xa79e('0x1d')]=intUtil[_0xa79e('0x42')](_0x53ed89[_0xa79e('0x1d')]);_0x53ed89[_0xa79e('0x43')]=intUtil['stripTrailingSlash'](_0x53ed89[_0xa79e('0x43')]);if(_0x440a01&&_0x440a01[_0xa79e('0x44')]){logger[_0xa79e('0xd')]('[QUEUE]','Recording\x20is\x20enabled!');_0x447c46['recordingURL']=util[_0xa79e('0x10')](_0xa79e('0x45'),_0x53ed89[_0xa79e('0x43')],_0x447c46[_0xa79e('0x46')],md5(_0x447c46[_0xa79e('0x46')]));}else{_0x447c46[_0xa79e('0x47')]='';}headers[_0xa79e('0x48')]=getAuth(_0x53ed89);return getUser(_0x53ed89,_0x893f99[_0xa79e('0x24')])[_0xa79e('0x1f')](function(_0x279f6f){_0x568e2a=_0x279f6f;logger[_0xa79e('0xd')]('The\x20User\x20ID\x20is:',_0x568e2a['id']);return getEndUser(_0x53ed89,_0x447c46['calleridname'],_0x447c46[_0xa79e('0x12')]);})[_0xa79e('0x1f')](function(_0x46fdc5){_0x56d5c1=_0x46fdc5;logger['info'](_0xa79e('0x49'),_0x56d5c1['id']);return getTicket(_0x53ed89,_0x568e2a,_0x56d5c1,_0x1ffb18,_0x447c46);})['then'](function(_0x338b43){if(_0x338b43&&_0x338b43['id']){logger[_0xa79e('0xd')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x338b43['id']);logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xa79e('0x4a'),_0x893f99[_0xa79e('0x17')]),_0xa79e('0x4b'),{'uri':util['format'](_0xa79e('0x4c'),_0x53ed89[_0xa79e('0x1d')],_0x338b43['id'])});}})['catch'](function(_0x4d250d){logger['error'](_0xa79e('0x4d'),JSON[_0xa79e('0x4e')](_0x4d250d));});};exports['outbound']=function(_0x5b83a2,_0x41f756,_0x468056,_0x4c9ca0,_0x35aba8,_0x12097b,_0xdfeb29){var _0x30d925,_0x3c7fec;_0x12097b['remoteUri']=intUtil['stripTrailingSlash'](_0x12097b[_0xa79e('0x1d')]);_0x12097b[_0xa79e('0x43')]=intUtil[_0xa79e('0x42')](_0x12097b[_0xa79e('0x43')]);if(_0xdfeb29&&_0xdfeb29[_0xa79e('0x4f')]&&_0xdfeb29['recordingFormat']!=='none'){logger[_0xa79e('0xd')](_0xa79e('0x50'),_0xa79e('0x51'));_0x41f756['recordingURL']=util[_0xa79e('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x12097b['serverUrl'],_0x41f756[_0xa79e('0x46')],md5(_0x41f756[_0xa79e('0x46')]));}headers[_0xa79e('0x48')]=getAuth(_0x12097b);return getUser(_0x12097b,_0x4c9ca0[_0xa79e('0x24')])[_0xa79e('0x1f')](function(_0x563fe2){_0x30d925=_0x563fe2;logger[_0xa79e('0xd')](_0xa79e('0x52'),_0x30d925['id']);return getEndUser(_0x12097b,_0x41f756[_0xa79e('0x53')],_0x41f756[_0xa79e('0x54')]);})[_0xa79e('0x1f')](function(_0x1e077f){_0x3c7fec=_0x1e077f;logger[_0xa79e('0xd')](_0xa79e('0x49'),_0x3c7fec['id']);return getTicket(_0x12097b,_0x30d925,_0x3c7fec,_0x468056,_0x41f756);})['then'](function(_0x135654){if(_0x135654&&_0x135654['id']){logger[_0xa79e('0xd')](_0xa79e('0x55'));logger[_0xa79e('0xd')](_0xa79e('0x56'),_0x135654['id']);logger['info'](_0xa79e('0x50'),_0xa79e('0x57'));emit(util[_0xa79e('0x10')]('user:%s',_0x4c9ca0[_0xa79e('0x17')]),_0xa79e('0x4b'),{'uri':util[_0xa79e('0x10')](_0xa79e('0x4c'),_0x12097b[_0xa79e('0x1d')],_0x135654['id'])});}})[_0xa79e('0x58')](function(_0xdb1fa){logger[_0xa79e('0x59')]('[OUTBOUND]',JSON[_0xa79e('0x4e')](_0xdb1fa));});};exports['unmanaged']=function(_0xc241ff,_0x31428e,_0x18dbf5,_0x5454aa,_0x2bb6cd,_0x6fb7c4){var _0xc554d2,_0x47a03a;_0x6fb7c4[_0xa79e('0x1d')]=intUtil[_0xa79e('0x42')](_0x6fb7c4[_0xa79e('0x1d')]);_0x6fb7c4['serverUrl']=intUtil[_0xa79e('0x42')](_0x6fb7c4[_0xa79e('0x43')]);if(_0x2bb6cd&&_0x2bb6cd['monitor_format']){logger[_0xa79e('0xd')]('['+_0x31428e[_0xa79e('0x5a')][_0xa79e('0x5b')]()+']','Recording\x20is\x20enabled!');_0x31428e[_0xa79e('0x47')]=util['format'](_0xa79e('0x45'),_0x6fb7c4[_0xa79e('0x43')],_0x31428e['uniqueid'],md5(_0x31428e['uniqueid']));}else{_0x31428e[_0xa79e('0x47')]='';}headers[_0xa79e('0x48')]=getAuth(_0x6fb7c4);return getUser(_0x6fb7c4,'')[_0xa79e('0x1f')](function(_0x434714){_0xc554d2=_0x434714;logger[_0xa79e('0xd')](_0xa79e('0x52'),_0xc554d2['id']);return getEndUser(_0x6fb7c4,_0x31428e[_0xa79e('0x5c')],_0x31428e[_0xa79e('0x12')]);})[_0xa79e('0x1f')](function(_0x255e3b){_0x47a03a=_0x255e3b;logger[_0xa79e('0xd')]('The\x20Enduser\x20ID\x20is:',_0x47a03a['id']);return getTicket(_0x6fb7c4,_0xc554d2,_0x47a03a,_0x18dbf5,_0x31428e);})['then'](function(_0x4e8550){if(_0x4e8550){logger[_0xa79e('0xd')](_0xa79e('0x55'));logger[_0xa79e('0xd')](_0xa79e('0x56'),_0x4e8550['id']);}})[_0xa79e('0x58')](function(_0x20c7ea){logger['error']('['+_0x31428e['lastevent'][_0xa79e('0x5b')]()+']',JSON['stringify'](_0x20c7ea));});};