8d44e7cb9155badb385d68b8e3baa248c26d5831
[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 _0xcdfc=['customVariable','Variable','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','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','catch','error','outbound','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','[OUTBOUND]','unmanaged','lastevent','Ticket\x20created!','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','keyBy','value','POST','info','validateEmail','%s/api/v2/agents','remoteUri','then','length','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','defaults','GET','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','push','idField','variableName'];(function(_0xfd64e2,_0x3aeab5){var _0x1bb025=function(_0x1b3428){while(--_0x1b3428){_0xfd64e2['push'](_0xfd64e2['shift']());}};_0x1bb025(++_0x3aeab5);}(_0xcdfc,0x1ac));var _0xccdf=function(_0x274690,_0x20bb79){_0x274690=_0x274690-0x0;var _0x3bba2a=_0xcdfc[_0x274690];return _0x3bba2a;};'use strict';var _=require(_0xccdf('0x0'));var rp=require(_0xccdf('0x1'));var md5=require(_0xccdf('0x2'));var util=require(_0xccdf('0x3'));var Redis=require(_0xccdf('0x4'));var intUtil=require(_0xccdf('0x5'));var config=require(_0xccdf('0x6'));var logger=require('../../../../config/logger')(_0xccdf('0x7'));config['redis']=_['defaults'](config[_0xccdf('0x8')],{'host':_0xccdf('0x9'),'port':0x18eb});var io=require(_0xccdf('0xa'))(new Redis(config[_0xccdf('0x8')]));var headers={'Content-Type':_0xccdf('0xb'),'Accept':_0xccdf('0xb')};function emit(_0x12779a,_0x1f9c50,_0x198a38){io['to'](_0x12779a)[_0xccdf('0xc')](_0x1f9c50,_0x198a38);}function getTicket(_0x3029a7,_0x248ce5,_0x1092b4,_0x386474,_0x409925){logger['info'](_0xccdf('0xd'));var _0x161e34=_[_0xccdf('0xe')]({'responder_id':_0x248ce5['id'],'requester_id':_0x1092b4['id'],'name':util[_0xccdf('0xf')](_0xccdf('0x10'),_0x409925[_0xccdf('0x11')]),'phone':_0x409925['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xccdf('0x12')](_0x386474[_0xccdf('0x13')],_0x409925,'\x20'),'description':intUtil['getString'](_0x386474[_0xccdf('0x14')],_0x409925,_0xccdf('0x15')),'tags':getTags(_0x386474[_0xccdf('0x16')],_0xccdf('0x17'))},getCustomFields(_0x386474[_0xccdf('0x18')],_0x409925));_0x161e34[_0xccdf('0x19')]=_['mapValues'](_[_0xccdf('0x1a')](_0x161e34[_0xccdf('0x19')],'id'),_0xccdf('0x1b'));return request({'uri':util[_0xccdf('0xf')]('%s/api/v2/tickets',_0x3029a7['remoteUri']),'method':_0xccdf('0x1c'),'body':_0x161e34})['then'](function(_0x538ec5){logger[_0xccdf('0x1d')]('Ticket\x20created!');return _0x538ec5;});}function getUser(_0xf1ea2,_0x34f195){if(intUtil[_0xccdf('0x1e')](_0x34f195)){return request({'uri':util[_0xccdf('0xf')](_0xccdf('0x1f'),_0xf1ea2[_0xccdf('0x20')]),'qs':{'email':_0x34f195}})[_0xccdf('0x21')](function(_0x4d64cd){if(_0x4d64cd[_0xccdf('0x22')]){logger[_0xccdf('0x1d')](_0xccdf('0x23'));return _[_0xccdf('0x24')](_0x4d64cd,function(_0x7ba51){return _0x7ba51[_0xccdf('0x25')][_0xccdf('0x26')]===_0x34f195;});}else{logger[_0xccdf('0x1d')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xccdf('0xf')](_0xccdf('0x27'),_0xf1ea2[_0xccdf('0x20')])})[_0xccdf('0x21')](function(_0x22fcad){logger[_0xccdf('0x1d')](_0xccdf('0x28'));return _0x22fcad;});}});}else{logger['info'](_0xccdf('0x29'));return request({'uri':util[_0xccdf('0xf')]('%s/api/v2/agents/me',_0xf1ea2['remoteUri'])})[_0xccdf('0x21')](function(_0x1e9aa7){logger[_0xccdf('0x1d')](_0xccdf('0x28'));return _0x1e9aa7;});}}function getEndUser(_0x5c86cd,_0x541d7d,_0x4cd6db){logger[_0xccdf('0x1d')](_0xccdf('0x2a'),_0x4cd6db);return request({'uri':util[_0xccdf('0xf')](_0xccdf('0x2b'),_0x5c86cd['remoteUri']),'qs':{'phone':_0x4cd6db}})[_0xccdf('0x21')](function(_0x577dc7){if(_0x577dc7[_0xccdf('0x22')]){logger['info'](_0xccdf('0x2c'));return _[_0xccdf('0x24')](_0x577dc7,{'phone':_0x4cd6db});}else{logger[_0xccdf('0x1d')](_0xccdf('0x2d'));return request({'uri':util[_0xccdf('0xf')](_0xccdf('0x2b'),_0x5c86cd[_0xccdf('0x20')]),'method':_0xccdf('0x1c'),'body':{'name':_0x541d7d,'phone':_0x4cd6db}})[_0xccdf('0x21')](function(_0x33ddf5){logger[_0xccdf('0x1d')](_0xccdf('0x2e'));return _0x33ddf5;});}});}function getAuth(_0x1acfa9){return util[_0xccdf('0xf')](_0xccdf('0x2f'),new Buffer(_0x1acfa9[_0xccdf('0x30')]+':X')[_0xccdf('0x31')]('base64'));}function request(_0x47be0e){logger[_0xccdf('0x32')](_0xccdf('0x33'),JSON[_0xccdf('0x34')](_0x47be0e));return rp(_[_0xccdf('0x35')](_0x47be0e,{'method':_0xccdf('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x161bd6,_0x1d668e){var _0x3439dd=[];if(_0x161bd6&&_0x161bd6[_0xccdf('0x22')]>0x0){_0x3439dd=_['map'](_0x161bd6,_0x1d668e);}return _0x3439dd;}function getCustomFields(_0x4aab36,_0x16726a){var _0x5c9eff=[];var _0x43c5f6={'custom_fields':[]};if(_0x4aab36[_0xccdf('0x22')]>0x0){_[_0xccdf('0x37')](_0x4aab36,function(_0x474a89){if(_[_0xccdf('0x38')]([_0xccdf('0x39'),_0xccdf('0x3a')],_0x474a89['type'])&&_0x474a89[_0xccdf('0x3b')]&&!_0x474a89[_0xccdf('0x3c')]){_0x43c5f6[_0x474a89[_0xccdf('0x3b')][_0xccdf('0x3d')]()]=_0x474a89[_0xccdf('0x3e')]['toString']();}else if(_['includes']([_0xccdf('0x39'),_0xccdf('0x3a')],_0x474a89[_0xccdf('0x3f')])&&_0x474a89['idField']&&_0x474a89[_0xccdf('0x3c')]){_0x43c5f6[_0xccdf('0x19')][_0xccdf('0x40')]({'id':_0x474a89[_0xccdf('0x41')],'value':_0x474a89[_0xccdf('0x3e')]['toString']()});}else if(_0x474a89['type']==='variable'&&_0x474a89[_0xccdf('0x42')]&&_0x474a89[_0xccdf('0x41')]&&_0x474a89[_0xccdf('0x3c')]){_0x16726a[_0x474a89[_0xccdf('0x42')]]&&_0x43c5f6['custom_fields'][_0xccdf('0x40')]({'id':_0x474a89[_0xccdf('0x41')],'value':_0x16726a[_0x474a89[_0xccdf('0x42')]]['toString']()});}else if(_0x474a89[_0xccdf('0x3f')]===_0xccdf('0x43')&&_0x474a89[_0xccdf('0x44')]&&_0x474a89['Variable'][_0xccdf('0x17')]&&_0x474a89[_0xccdf('0x41')]&&_0x474a89[_0xccdf('0x3c')]){_0x16726a[_0x474a89[_0xccdf('0x44')]['name']['toLowerCase']()]&&_0x43c5f6['custom_fields'][_0xccdf('0x40')]({'id':_0x474a89[_0xccdf('0x41')],'value':_0x16726a[_0x474a89['Variable']['name'][_0xccdf('0x3d')]()][_0xccdf('0x31')]()});}});}return _0x43c5f6;}exports[_0xccdf('0x45')]=function(_0x3f3689,_0xe0cec2,_0x55d797,_0x560cd7,_0x46ea12,_0x556344){var _0xd35501,_0x299299;_0x556344[_0xccdf('0x20')]=intUtil['stripTrailingSlash'](_0x556344['remoteUri']);_0x556344[_0xccdf('0x46')]=intUtil[_0xccdf('0x47')](_0x556344[_0xccdf('0x46')]);if(_0x46ea12&&_0x46ea12[_0xccdf('0x48')]){logger['info'](_0xccdf('0x49'),'Recording\x20is\x20enabled!');_0xe0cec2[_0xccdf('0x4a')]=util[_0xccdf('0xf')](_0xccdf('0x4b'),_0x556344[_0xccdf('0x46')],_0xe0cec2[_0xccdf('0x4c')],md5(_0xe0cec2[_0xccdf('0x4c')]));}else{_0xe0cec2[_0xccdf('0x4a')]='';}headers[_0xccdf('0x4d')]=getAuth(_0x556344);return getUser(_0x556344,_0x560cd7[_0xccdf('0x26')])['then'](function(_0x1ca427){_0xd35501=_0x1ca427;logger[_0xccdf('0x1d')](_0xccdf('0x4e'),_0xd35501['id']);return getEndUser(_0x556344,_0xe0cec2[_0xccdf('0x11')],_0xe0cec2[_0xccdf('0x4f')]);})[_0xccdf('0x21')](function(_0x5b7e11){_0x299299=_0x5b7e11;logger[_0xccdf('0x1d')](_0xccdf('0x50'),_0x299299['id']);return getTicket(_0x556344,_0xd35501,_0x299299,_0x55d797,_0xe0cec2);})[_0xccdf('0x21')](function(_0x240235){if(_0x240235&&_0x240235['id']){logger['info']('Ticket\x20created!');logger[_0xccdf('0x1d')](_0xccdf('0x51'),_0x240235['id']);logger[_0xccdf('0x1d')](_0xccdf('0x49'),_0xccdf('0x52'));emit(util[_0xccdf('0xf')](_0xccdf('0x53'),_0x560cd7[_0xccdf('0x17')]),_0xccdf('0x54'),{'uri':util[_0xccdf('0xf')](_0xccdf('0x55'),_0x556344['remoteUri'],_0x240235['id'])});}})[_0xccdf('0x56')](function(_0x231c30){logger[_0xccdf('0x57')]('[QUEUE]',JSON[_0xccdf('0x34')](_0x231c30));});};exports[_0xccdf('0x58')]=function(_0x35f480,_0x5deb83,_0x2c257a,_0x26dc5c,_0x574529,_0x19e368,_0xb433e){var _0x6dbf11,_0x5217ad;_0x19e368[_0xccdf('0x20')]=intUtil[_0xccdf('0x47')](_0x19e368[_0xccdf('0x20')]);_0x19e368[_0xccdf('0x46')]=intUtil['stripTrailingSlash'](_0x19e368['serverUrl']);if(_0xb433e&&_0xb433e[_0xccdf('0x59')]&&_0xb433e[_0xccdf('0x59')]!==_0xccdf('0x5a')){logger[_0xccdf('0x1d')]('[OUTBOUND]',_0xccdf('0x5b'));_0x5deb83['recordingURL']=util[_0xccdf('0xf')](_0xccdf('0x4b'),_0x19e368[_0xccdf('0x46')],_0x5deb83[_0xccdf('0x4c')],md5(_0x5deb83['uniqueid']));}headers['Authorization']=getAuth(_0x19e368);return getUser(_0x19e368,_0x26dc5c[_0xccdf('0x26')])['then'](function(_0x3e6c3c){_0x6dbf11=_0x3e6c3c;logger[_0xccdf('0x1d')](_0xccdf('0x4e'),_0x6dbf11['id']);return getEndUser(_0x19e368,_0x5deb83[_0xccdf('0x5c')],_0x5deb83[_0xccdf('0x5d')]);})[_0xccdf('0x21')](function(_0x5bd284){_0x5217ad=_0x5bd284;logger[_0xccdf('0x1d')](_0xccdf('0x50'),_0x5217ad['id']);return getTicket(_0x19e368,_0x6dbf11,_0x5217ad,_0x2c257a,_0x5deb83);})[_0xccdf('0x21')](function(_0x41d191){if(_0x41d191&&_0x41d191['id']){logger['info']('Ticket\x20created!');logger['info'](_0xccdf('0x51'),_0x41d191['id']);logger[_0xccdf('0x1d')](_0xccdf('0x5e'),_0xccdf('0x52'));emit(util['format']('user:%s',_0x26dc5c[_0xccdf('0x17')]),_0xccdf('0x54'),{'uri':util[_0xccdf('0xf')](_0xccdf('0x55'),_0x19e368[_0xccdf('0x20')],_0x41d191['id'])});}})[_0xccdf('0x56')](function(_0x374664){logger['error'](_0xccdf('0x5e'),JSON[_0xccdf('0x34')](_0x374664));});};exports[_0xccdf('0x5f')]=function(_0x4ff106,_0x35eaf8,_0x51bf5f,_0x15d86b,_0x27907c,_0x5e5777){var _0x24ad97,_0x28ddee;_0x5e5777[_0xccdf('0x20')]=intUtil[_0xccdf('0x47')](_0x5e5777[_0xccdf('0x20')]);_0x5e5777[_0xccdf('0x46')]=intUtil[_0xccdf('0x47')](_0x5e5777['serverUrl']);if(_0x27907c&&_0x27907c[_0xccdf('0x48')]){logger[_0xccdf('0x1d')]('['+_0x35eaf8[_0xccdf('0x60')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x35eaf8[_0xccdf('0x4a')]=util['format'](_0xccdf('0x4b'),_0x5e5777[_0xccdf('0x46')],_0x35eaf8['uniqueid'],md5(_0x35eaf8[_0xccdf('0x4c')]));}else{_0x35eaf8[_0xccdf('0x4a')]='';}headers[_0xccdf('0x4d')]=getAuth(_0x5e5777);return getUser(_0x5e5777,'')[_0xccdf('0x21')](function(_0x80c43b){_0x24ad97=_0x80c43b;logger[_0xccdf('0x1d')](_0xccdf('0x4e'),_0x24ad97['id']);return getEndUser(_0x5e5777,_0x35eaf8['calleridname'],_0x35eaf8['calleridnum']);})['then'](function(_0x1c8d6c){_0x28ddee=_0x1c8d6c;logger['info'](_0xccdf('0x50'),_0x28ddee['id']);return getTicket(_0x5e5777,_0x24ad97,_0x28ddee,_0x51bf5f,_0x35eaf8);})['then'](function(_0x52fda7){if(_0x52fda7){logger[_0xccdf('0x1d')](_0xccdf('0x61'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x52fda7['id']);}})[_0xccdf('0x56')](function(_0x27c0f7){logger['error']('['+_0x35eaf8[_0xccdf('0x60')][_0xccdf('0x62')]()+']',JSON[_0xccdf('0x34')](_0x27c0f7));});};