b9b8f69d13ab967ac42f2a6b3ae2621054d7f6ab
[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 _0xddda=['find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','[HTTP]','stringify','GET','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','push','idField','variable','variableName','customVariable','Variable','queue','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','catch','unmanaged','stripTrailingSlash','lastevent','toUpperCase','Recording\x20is\x20enabled!','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','Creating\x20new\x20ticket...','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','custom_fields','mapValues','keyBy','value','format','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!'];(function(_0x5e761b,_0x355e38){var _0x98502c=function(_0x4e52d5){while(--_0x4e52d5){_0x5e761b['push'](_0x5e761b['shift']());}};_0x98502c(++_0x355e38);}(_0xddda,0xfb));var _0xaddd=function(_0x523196,_0x1d6d0a){_0x523196=_0x523196-0x0;var _0x3c75a1=_0xddda[_0x523196];return _0x3c75a1;};'use strict';var _=require('lodash');var rp=require(_0xaddd('0x0'));var md5=require(_0xaddd('0x1'));var util=require(_0xaddd('0x2'));var Redis=require(_0xaddd('0x3'));var intUtil=require(_0xaddd('0x4'));var config=require(_0xaddd('0x5'));var logger=require(_0xaddd('0x6'))(_0xaddd('0x7'));config[_0xaddd('0x8')]=_[_0xaddd('0x9')](config['redis'],{'host':_0xaddd('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xaddd('0x8')]));var headers={'Content-Type':_0xaddd('0xb'),'Accept':_0xaddd('0xb')};function emit(_0xb13e2e,_0x1c9c3d,_0x22b599){io['to'](_0xb13e2e)[_0xaddd('0xc')](_0x1c9c3d,_0x22b599);}function getTicket(_0x491bc5,_0x5d1f1a,_0x2f97fc,_0x42562b,_0x5dcd9f){logger['info'](_0xaddd('0xd'));var _0x42482c=_['merge']({'responder_id':_0x5d1f1a['id'],'requester_id':_0x2f97fc['id'],'name':util['format']('Caller\x20-\x20%s',_0x5dcd9f[_0xaddd('0xe')]),'phone':_0x5dcd9f[_0xaddd('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xaddd('0x10')](_0x42562b[_0xaddd('0x11')],_0x5dcd9f,'\x20'),'description':intUtil[_0xaddd('0x10')](_0x42562b[_0xaddd('0x12')],_0x5dcd9f,_0xaddd('0x13')),'tags':getTags(_0x42562b[_0xaddd('0x14')],_0xaddd('0x15'))},getCustomFields(_0x42562b['Fields'],_0x5dcd9f));_0x42482c[_0xaddd('0x16')]=_[_0xaddd('0x17')](_[_0xaddd('0x18')](_0x42482c['custom_fields'],'id'),_0xaddd('0x19'));return request({'uri':util[_0xaddd('0x1a')](_0xaddd('0x1b'),_0x491bc5[_0xaddd('0x1c')]),'method':_0xaddd('0x1d'),'body':_0x42482c})[_0xaddd('0x1e')](function(_0x3aa556){logger[_0xaddd('0x1f')](_0xaddd('0x20'));return _0x3aa556;});}function getUser(_0x1a3215,_0x544dcf){if(intUtil[_0xaddd('0x21')](_0x544dcf)){return request({'uri':util[_0xaddd('0x1a')](_0xaddd('0x22'),_0x1a3215[_0xaddd('0x1c')]),'qs':{'email':_0x544dcf}})[_0xaddd('0x1e')](function(_0x1f216e){if(_0x1f216e[_0xaddd('0x23')]){logger[_0xaddd('0x1f')](_0xaddd('0x24'));return _[_0xaddd('0x25')](_0x1f216e,function(_0x29ab52){return _0x29ab52[_0xaddd('0x26')][_0xaddd('0x27')]===_0x544dcf;});}else{logger['info'](_0xaddd('0x28'));return request({'uri':util[_0xaddd('0x1a')](_0xaddd('0x29'),_0x1a3215['remoteUri'])})[_0xaddd('0x1e')](function(_0x5af4c5){logger[_0xaddd('0x1f')](_0xaddd('0x2a'));return _0x5af4c5;});}});}else{logger[_0xaddd('0x1f')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xaddd('0x1a')](_0xaddd('0x29'),_0x1a3215[_0xaddd('0x1c')])})['then'](function(_0x675e53){logger[_0xaddd('0x1f')]('Admin\x20account\x20selected.');return _0x675e53;});}}function getEndUser(_0x197e73,_0x144dbf,_0x1dc85f){logger['info'](_0xaddd('0x2b'),_0x1dc85f);return request({'uri':util[_0xaddd('0x1a')](_0xaddd('0x2c'),_0x197e73['remoteUri']),'qs':{'phone':_0x1dc85f}})[_0xaddd('0x1e')](function(_0x4dba1a){if(_0x4dba1a[_0xaddd('0x23')]){logger['info'](_0xaddd('0x2d'));return _[_0xaddd('0x25')](_0x4dba1a,{'phone':_0x1dc85f});}else{logger[_0xaddd('0x1f')](_0xaddd('0x2e'));return request({'uri':util[_0xaddd('0x1a')](_0xaddd('0x2c'),_0x197e73[_0xaddd('0x1c')]),'method':_0xaddd('0x1d'),'body':{'name':_0x144dbf,'phone':_0x1dc85f}})[_0xaddd('0x1e')](function(_0xfa7976){logger['info'](_0xaddd('0x2f'));return _0xfa7976;});}});}function getAuth(_0x36980c){return util[_0xaddd('0x1a')](_0xaddd('0x30'),new Buffer(_0x36980c[_0xaddd('0x31')]+':X')[_0xaddd('0x32')]('base64'));}function request(_0x196276){logger['debug'](_0xaddd('0x33'),JSON[_0xaddd('0x34')](_0x196276));return rp(_[_0xaddd('0x9')](_0x196276,{'method':_0xaddd('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x2b2911,_0x2df516){var _0x346c23=[];if(_0x2b2911&&_0x2b2911['length']>0x0){_0x346c23=_['map'](_0x2b2911,_0x2df516);}return _0x346c23;}function getCustomFields(_0x33f5eb,_0x16ee13){var _0x2d9876=[];var _0x4365d5={'custom_fields':[]};if(_0x33f5eb[_0xaddd('0x23')]>0x0){_[_0xaddd('0x36')](_0x33f5eb,function(_0x33d4c4){if(_[_0xaddd('0x37')]([_0xaddd('0x38'),_0xaddd('0x39')],_0x33d4c4[_0xaddd('0x3a')])&&_0x33d4c4[_0xaddd('0x3b')]&&!_0x33d4c4[_0xaddd('0x3c')]){_0x4365d5[_0x33d4c4[_0xaddd('0x3b')][_0xaddd('0x3d')]()]=_0x33d4c4[_0xaddd('0x3e')][_0xaddd('0x32')]();}else if(_['includes']([_0xaddd('0x38'),_0xaddd('0x39')],_0x33d4c4[_0xaddd('0x3a')])&&_0x33d4c4['idField']&&_0x33d4c4[_0xaddd('0x3c')]){_0x4365d5[_0xaddd('0x16')][_0xaddd('0x3f')]({'id':_0x33d4c4[_0xaddd('0x40')],'value':_0x33d4c4[_0xaddd('0x3e')]['toString']()});}else if(_0x33d4c4['type']===_0xaddd('0x41')&&_0x33d4c4['variableName']&&_0x33d4c4[_0xaddd('0x40')]&&_0x33d4c4[_0xaddd('0x3c')]){_0x16ee13[_0x33d4c4['variableName']]&&_0x4365d5[_0xaddd('0x16')][_0xaddd('0x3f')]({'id':_0x33d4c4[_0xaddd('0x40')],'value':_0x16ee13[_0x33d4c4[_0xaddd('0x42')]][_0xaddd('0x32')]()});}else if(_0x33d4c4['type']===_0xaddd('0x43')&&_0x33d4c4[_0xaddd('0x44')]&&_0x33d4c4['Variable'][_0xaddd('0x15')]&&_0x33d4c4[_0xaddd('0x40')]&&_0x33d4c4[_0xaddd('0x3c')]){_0x16ee13[_0x33d4c4[_0xaddd('0x44')][_0xaddd('0x15')]['toLowerCase']()]&&_0x4365d5['custom_fields']['push']({'id':_0x33d4c4[_0xaddd('0x40')],'value':_0x16ee13[_0x33d4c4['Variable'][_0xaddd('0x15')][_0xaddd('0x3d')]()][_0xaddd('0x32')]()});}});}return _0x4365d5;}exports[_0xaddd('0x45')]=function(_0x10b4f1,_0x8c12d,_0x25eaf9,_0x388572,_0x2fab04,_0x33e348){var _0x1d8337,_0x4d521d;_0x33e348['remoteUri']=intUtil['stripTrailingSlash'](_0x33e348[_0xaddd('0x1c')]);_0x33e348[_0xaddd('0x46')]=intUtil['stripTrailingSlash'](_0x33e348['serverUrl']);if(_0x2fab04&&_0x2fab04['monitor_format']){logger[_0xaddd('0x1f')](_0xaddd('0x47'),'Recording\x20is\x20enabled!');_0x8c12d[_0xaddd('0x48')]=util['format'](_0xaddd('0x49'),_0x33e348['serverUrl'],_0x8c12d[_0xaddd('0x4a')],md5(_0x8c12d['uniqueid']));}else{_0x8c12d[_0xaddd('0x48')]='';}headers[_0xaddd('0x4b')]=getAuth(_0x33e348);return getUser(_0x33e348,_0x388572[_0xaddd('0x27')])[_0xaddd('0x1e')](function(_0x33686b){_0x1d8337=_0x33686b;logger[_0xaddd('0x1f')](_0xaddd('0x4c'),_0x1d8337['id']);return getEndUser(_0x33e348,_0x8c12d[_0xaddd('0xe')],_0x8c12d[_0xaddd('0xf')]);})['then'](function(_0x57c2db){_0x4d521d=_0x57c2db;logger[_0xaddd('0x1f')](_0xaddd('0x4d'),_0x4d521d['id']);return getTicket(_0x33e348,_0x1d8337,_0x4d521d,_0x25eaf9,_0x8c12d);})[_0xaddd('0x1e')](function(_0x2ac95a){if(_0x2ac95a&&_0x2ac95a['id']){logger['info'](_0xaddd('0x20'));logger[_0xaddd('0x1f')](_0xaddd('0x4e'),_0x2ac95a['id']);logger[_0xaddd('0x1f')](_0xaddd('0x47'),_0xaddd('0x4f'));emit(util[_0xaddd('0x1a')](_0xaddd('0x50'),_0x388572[_0xaddd('0x15')]),_0xaddd('0x51'),{'uri':util[_0xaddd('0x1a')](_0xaddd('0x52'),_0x33e348[_0xaddd('0x1c')],_0x2ac95a['id'])});}})['catch'](function(_0x4ffaa0){logger[_0xaddd('0x53')](_0xaddd('0x47'),JSON['stringify'](_0x4ffaa0));});};exports[_0xaddd('0x54')]=function(_0x5f312b,_0x10403b,_0x5ce166,_0x1464b2,_0x2229af,_0x3c0014,_0x3651a5){var _0x26ed38,_0x4f2a33;_0x3c0014[_0xaddd('0x1c')]=intUtil['stripTrailingSlash'](_0x3c0014[_0xaddd('0x1c')]);_0x3c0014[_0xaddd('0x46')]=intUtil['stripTrailingSlash'](_0x3c0014['serverUrl']);if(_0x3651a5&&_0x3651a5[_0xaddd('0x55')]&&_0x3651a5['recordingFormat']!==_0xaddd('0x56')){logger['info'](_0xaddd('0x57'),'Recording\x20is\x20enabled!');_0x10403b[_0xaddd('0x48')]=util['format'](_0xaddd('0x49'),_0x3c0014[_0xaddd('0x46')],_0x10403b[_0xaddd('0x4a')],md5(_0x10403b[_0xaddd('0x4a')]));}headers[_0xaddd('0x4b')]=getAuth(_0x3c0014);return getUser(_0x3c0014,_0x1464b2['email'])[_0xaddd('0x1e')](function(_0xd1e1e2){_0x26ed38=_0xd1e1e2;logger[_0xaddd('0x1f')](_0xaddd('0x4c'),_0x26ed38['id']);return getEndUser(_0x3c0014,_0x10403b[_0xaddd('0x58')],_0x10403b[_0xaddd('0x59')]);})['then'](function(_0x24ba5c){_0x4f2a33=_0x24ba5c;logger['info'](_0xaddd('0x4d'),_0x4f2a33['id']);return getTicket(_0x3c0014,_0x26ed38,_0x4f2a33,_0x5ce166,_0x10403b);})[_0xaddd('0x1e')](function(_0x528879){if(_0x528879&&_0x528879['id']){logger[_0xaddd('0x1f')]('Ticket\x20created!');logger[_0xaddd('0x1f')](_0xaddd('0x4e'),_0x528879['id']);logger[_0xaddd('0x1f')](_0xaddd('0x57'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xaddd('0x1a')](_0xaddd('0x50'),_0x1464b2[_0xaddd('0x15')]),_0xaddd('0x51'),{'uri':util[_0xaddd('0x1a')](_0xaddd('0x52'),_0x3c0014[_0xaddd('0x1c')],_0x528879['id'])});}})[_0xaddd('0x5a')](function(_0x5c2606){logger[_0xaddd('0x53')](_0xaddd('0x57'),JSON['stringify'](_0x5c2606));});};exports[_0xaddd('0x5b')]=function(_0x25735e,_0x2d4b01,_0x1d8983,_0x277e97,_0x3ed476,_0x20ae98){var _0x8b3806,_0x2b54f9;_0x20ae98[_0xaddd('0x1c')]=intUtil[_0xaddd('0x5c')](_0x20ae98[_0xaddd('0x1c')]);_0x20ae98[_0xaddd('0x46')]=intUtil[_0xaddd('0x5c')](_0x20ae98[_0xaddd('0x46')]);if(_0x3ed476&&_0x3ed476['monitor_format']){logger[_0xaddd('0x1f')]('['+_0x2d4b01[_0xaddd('0x5d')][_0xaddd('0x5e')]()+']',_0xaddd('0x5f'));_0x2d4b01[_0xaddd('0x48')]=util['format'](_0xaddd('0x49'),_0x20ae98[_0xaddd('0x46')],_0x2d4b01[_0xaddd('0x4a')],md5(_0x2d4b01[_0xaddd('0x4a')]));}else{_0x2d4b01[_0xaddd('0x48')]='';}headers[_0xaddd('0x4b')]=getAuth(_0x20ae98);return getUser(_0x20ae98,'')[_0xaddd('0x1e')](function(_0x533849){_0x8b3806=_0x533849;logger['info'](_0xaddd('0x4c'),_0x8b3806['id']);return getEndUser(_0x20ae98,_0x2d4b01[_0xaddd('0xe')],_0x2d4b01[_0xaddd('0xf')]);})['then'](function(_0x55cb9f){_0x2b54f9=_0x55cb9f;logger['info'](_0xaddd('0x4d'),_0x2b54f9['id']);return getTicket(_0x20ae98,_0x8b3806,_0x2b54f9,_0x1d8983,_0x2d4b01);})['then'](function(_0x33f217){if(_0x33f217){logger[_0xaddd('0x1f')](_0xaddd('0x20'));logger[_0xaddd('0x1f')]('The\x20Ticket\x20ID\x20is:',_0x33f217['id']);}})[_0xaddd('0x5a')](function(_0x3092d8){logger['error']('['+_0x2d4b01[_0xaddd('0x5d')][_0xaddd('0x5e')]()+']',JSON[_0xaddd('0x34')](_0x3092d8));});};