dfdb6f74a0f4303d597dc329bb00d33c065db6f2
[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 _0x2763=['md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','defaults','redis','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','Descriptions','<br>','Tags','Fields','custom_fields','keyBy','value','remoteUri','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','map','forEach','nameField','customField','toLowerCase','content','type','idField','push','variable','variableName','Variable','name','stripTrailingSlash','serverUrl','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','Authorization','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','[OUTBOUND]','monitor_format','toUpperCase','lastevent','lodash'];(function(_0x2230ac,_0x38d892){var _0x4ac181=function(_0xcf74fa){while(--_0xcf74fa){_0x2230ac['push'](_0x2230ac['shift']());}};_0x4ac181(++_0x38d892);}(_0x2763,0x1bc));var _0x3276=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2763[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3276('0x0'));var rp=require('request-promise');var md5=require(_0x3276('0x1'));var util=require('util');var Redis=require(_0x3276('0x2'));var intUtil=require(_0x3276('0x3'));var config=require(_0x3276('0x4'));var logger=require(_0x3276('0x5'))(_0x3276('0x6'));config['redis']=_[_0x3276('0x7')](config[_0x3276('0x8')],{'host':_0x3276('0x9'),'port':0x18eb});var io=require(_0x3276('0xa'))(new Redis(config[_0x3276('0x8')]));var headers={'Content-Type':_0x3276('0xb'),'Accept':_0x3276('0xb')};function emit(_0x5939ce,_0x58444d,_0x14b997){io['to'](_0x5939ce)['emit'](_0x58444d,_0x14b997);}function getTicket(_0x218d0d,_0x52110d,_0x41db84,_0x2057ea,_0x19ca68){logger['info'](_0x3276('0xc'));var _0x2d9fb7=_[_0x3276('0xd')]({'responder_id':_0x52110d['id'],'requester_id':_0x41db84['id'],'name':util[_0x3276('0xe')]('Caller\x20-\x20%s',_0x19ca68[_0x3276('0xf')]),'phone':_0x19ca68[_0x3276('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2057ea['Subjects'],_0x19ca68,'\x20'),'description':intUtil['getString'](_0x2057ea[_0x3276('0x11')],_0x19ca68,_0x3276('0x12')),'tags':getTags(_0x2057ea[_0x3276('0x13')],'name')},getCustomFields(_0x2057ea[_0x3276('0x14')],_0x19ca68));_0x2d9fb7[_0x3276('0x15')]=_['mapValues'](_[_0x3276('0x16')](_0x2d9fb7[_0x3276('0x15')],'id'),_0x3276('0x17'));return request({'uri':util[_0x3276('0xe')]('%s/api/v2/tickets',_0x218d0d[_0x3276('0x18')]),'method':'POST','body':_0x2d9fb7})[_0x3276('0x19')](function(_0x398f0d){logger[_0x3276('0x1a')](_0x3276('0x1b'));return _0x398f0d;});}function getUser(_0x108771,_0x244f0c){if(intUtil[_0x3276('0x1c')](_0x244f0c)){return request({'uri':util[_0x3276('0xe')](_0x3276('0x1d'),_0x108771[_0x3276('0x18')]),'qs':{'email':_0x244f0c}})['then'](function(_0x334477){if(_0x334477[_0x3276('0x1e')]){logger['info'](_0x3276('0x1f'));return _[_0x3276('0x20')](_0x334477,function(_0x3bab9e){return _0x3bab9e[_0x3276('0x21')][_0x3276('0x22')]===_0x244f0c;});}else{logger['info'](_0x3276('0x23'));return request({'uri':util[_0x3276('0xe')]('%s/api/v2/agents/me',_0x108771['remoteUri'])})[_0x3276('0x19')](function(_0x4abddf){logger[_0x3276('0x1a')]('Admin\x20account\x20selected.');return _0x4abddf;});}});}else{logger[_0x3276('0x1a')](_0x3276('0x24'));return request({'uri':util[_0x3276('0xe')](_0x3276('0x25'),_0x108771[_0x3276('0x18')])})['then'](function(_0x1d3c9f){logger[_0x3276('0x1a')](_0x3276('0x26'));return _0x1d3c9f;});}}function getEndUser(_0x231ff8,_0x6731c9,_0x3d9e22){logger[_0x3276('0x1a')](_0x3276('0x27'),_0x3d9e22);return request({'uri':util['format']('%s/api/v2/contacts',_0x231ff8[_0x3276('0x18')]),'qs':{'phone':_0x3d9e22}})[_0x3276('0x19')](function(_0x15ac43){if(_0x15ac43[_0x3276('0x1e')]){logger[_0x3276('0x1a')](_0x3276('0x28'));return _[_0x3276('0x20')](_0x15ac43,{'phone':_0x3d9e22});}else{logger[_0x3276('0x1a')](_0x3276('0x29'));return request({'uri':util[_0x3276('0xe')]('%s/api/v2/contacts',_0x231ff8[_0x3276('0x18')]),'method':_0x3276('0x2a'),'body':{'name':_0x6731c9,'phone':_0x3d9e22}})[_0x3276('0x19')](function(_0xb3c7e9){logger[_0x3276('0x1a')]('Enduser\x20created.');return _0xb3c7e9;});}});}function getAuth(_0x5511d1){return util[_0x3276('0xe')](_0x3276('0x2b'),new Buffer(_0x5511d1[_0x3276('0x2c')]+':X')[_0x3276('0x2d')](_0x3276('0x2e')));}function request(_0x227f81){logger[_0x3276('0x2f')](_0x3276('0x30'),JSON[_0x3276('0x31')](_0x227f81));return rp(_[_0x3276('0x7')](_0x227f81,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x394133,_0x596a22){var _0x470eba=[];if(_0x394133&&_0x394133['length']>0x0){_0x470eba=_[_0x3276('0x32')](_0x394133,_0x596a22);}return _0x470eba;}function getCustomFields(_0x747d21,_0x21b001){var _0x4966c2=[];var _0x42d1bc={'custom_fields':[]};if(_0x747d21[_0x3276('0x1e')]>0x0){_[_0x3276('0x33')](_0x747d21,function(_0x2a6eb5){if(_0x2a6eb5['type']==='string'&&_0x2a6eb5[_0x3276('0x34')]&&!_0x2a6eb5[_0x3276('0x35')]){_0x42d1bc[_0x2a6eb5[_0x3276('0x34')][_0x3276('0x36')]()]=_0x2a6eb5[_0x3276('0x37')]['toString']();}else if(_0x2a6eb5[_0x3276('0x38')]==='string'&&_0x2a6eb5[_0x3276('0x39')]&&_0x2a6eb5[_0x3276('0x35')]){_0x42d1bc[_0x3276('0x15')][_0x3276('0x3a')]({'id':_0x2a6eb5['idField'],'value':_0x2a6eb5['content']['toString']()});}else if(_0x2a6eb5[_0x3276('0x38')]===_0x3276('0x3b')&&_0x2a6eb5[_0x3276('0x3c')]&&_0x2a6eb5[_0x3276('0x39')]&&_0x2a6eb5[_0x3276('0x35')]){_0x21b001[_0x2a6eb5['variableName']]&&_0x42d1bc[_0x3276('0x15')][_0x3276('0x3a')]({'id':_0x2a6eb5[_0x3276('0x39')],'value':_0x21b001[_0x2a6eb5[_0x3276('0x3c')]][_0x3276('0x2d')]()});}else if(_0x2a6eb5[_0x3276('0x38')]==='customVariable'&&_0x2a6eb5[_0x3276('0x3d')]&&_0x2a6eb5[_0x3276('0x3d')]['name']&&_0x2a6eb5[_0x3276('0x39')]&&_0x2a6eb5['customField']){_0x21b001[_0x2a6eb5[_0x3276('0x3d')][_0x3276('0x3e')][_0x3276('0x36')]()]&&_0x42d1bc[_0x3276('0x15')][_0x3276('0x3a')]({'id':_0x2a6eb5[_0x3276('0x39')],'value':_0x21b001[_0x2a6eb5[_0x3276('0x3d')][_0x3276('0x3e')]['toLowerCase']()][_0x3276('0x2d')]()});}});}return _0x42d1bc;}exports['queue']=function(_0x3d9924,_0x55ae14,_0x299f4c,_0x1289e2,_0x125a96,_0x112e0b){var _0x3f6c5e,_0x77103f;_0x112e0b[_0x3276('0x18')]=intUtil['stripTrailingSlash'](_0x112e0b['remoteUri']);_0x112e0b['serverUrl']=intUtil[_0x3276('0x3f')](_0x112e0b[_0x3276('0x40')]);if(_0x125a96&&_0x125a96['monitor_format']){logger[_0x3276('0x1a')]('[QUEUE]',_0x3276('0x41'));_0x55ae14[_0x3276('0x42')]=util[_0x3276('0xe')](_0x3276('0x43'),_0x112e0b['serverUrl'],_0x55ae14[_0x3276('0x44')],md5(_0x55ae14['uniqueid']));}else{_0x55ae14[_0x3276('0x42')]='';}headers['Authorization']=getAuth(_0x112e0b);return getUser(_0x112e0b,_0x1289e2[_0x3276('0x22')])[_0x3276('0x19')](function(_0x41f52d){_0x3f6c5e=_0x41f52d;logger[_0x3276('0x1a')](_0x3276('0x45'),_0x3f6c5e['id']);return getEndUser(_0x112e0b,_0x55ae14[_0x3276('0xf')],_0x55ae14['calleridnum']);})[_0x3276('0x19')](function(_0x29a39f){_0x77103f=_0x29a39f;logger[_0x3276('0x1a')](_0x3276('0x46'),_0x77103f['id']);return getTicket(_0x112e0b,_0x3f6c5e,_0x77103f,_0x299f4c,_0x55ae14);})[_0x3276('0x19')](function(_0x178818){if(_0x178818&&_0x178818['id']){logger[_0x3276('0x1a')](_0x3276('0x1b'));logger['info'](_0x3276('0x47'),_0x178818['id']);logger['info'](_0x3276('0x48'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3276('0xe')](_0x3276('0x49'),_0x1289e2[_0x3276('0x3e')]),_0x3276('0x4a'),{'uri':util[_0x3276('0xe')](_0x3276('0x4b'),_0x112e0b[_0x3276('0x18')],_0x178818['id'])});}})[_0x3276('0x4c')](function(_0x291c5a){logger[_0x3276('0x4d')](_0x3276('0x48'),JSON['stringify'](_0x291c5a));});};exports[_0x3276('0x4e')]=function(_0x37aa4a,_0x22e557,_0x48fede,_0x42e84e,_0xc56718,_0x2eb14a,_0x225c37){var _0x32b694,_0x4c76f0;_0x2eb14a['remoteUri']=intUtil[_0x3276('0x3f')](_0x2eb14a[_0x3276('0x18')]);_0x2eb14a[_0x3276('0x40')]=intUtil['stripTrailingSlash'](_0x2eb14a[_0x3276('0x40')]);if(_0x225c37&&_0x225c37[_0x3276('0x4f')]&&_0x225c37[_0x3276('0x4f')]!==_0x3276('0x50')){logger[_0x3276('0x1a')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x22e557['recordingURL']=util[_0x3276('0xe')](_0x3276('0x43'),_0x2eb14a[_0x3276('0x40')],_0x22e557[_0x3276('0x44')],md5(_0x22e557[_0x3276('0x44')]));}headers[_0x3276('0x51')]=getAuth(_0x2eb14a);return getUser(_0x2eb14a,_0x42e84e['email'])[_0x3276('0x19')](function(_0x51c634){_0x32b694=_0x51c634;logger[_0x3276('0x1a')]('The\x20User\x20ID\x20is:',_0x32b694['id']);return getEndUser(_0x2eb14a,_0x22e557[_0x3276('0x52')],_0x22e557[_0x3276('0x53')]);})[_0x3276('0x19')](function(_0xe2d92e){_0x4c76f0=_0xe2d92e;logger['info'](_0x3276('0x46'),_0x4c76f0['id']);return getTicket(_0x2eb14a,_0x32b694,_0x4c76f0,_0x48fede,_0x22e557);})[_0x3276('0x19')](function(_0x341b2e){if(_0x341b2e&&_0x341b2e['id']){logger[_0x3276('0x1a')](_0x3276('0x1b'));logger['info'](_0x3276('0x47'),_0x341b2e['id']);logger[_0x3276('0x1a')]('[OUTBOUND]',_0x3276('0x54'));emit(util[_0x3276('0xe')](_0x3276('0x49'),_0x42e84e[_0x3276('0x3e')]),'trigger:browser:url',{'uri':util['format'](_0x3276('0x4b'),_0x2eb14a[_0x3276('0x18')],_0x341b2e['id'])});}})[_0x3276('0x4c')](function(_0x55969f){logger['error'](_0x3276('0x55'),JSON[_0x3276('0x31')](_0x55969f));});};exports['unmanaged']=function(_0x525358,_0x20a1ad,_0x2588da,_0x12876a,_0x29a4c7,_0x200c90){var _0x408ffa,_0x48fbfd;_0x200c90[_0x3276('0x18')]=intUtil[_0x3276('0x3f')](_0x200c90[_0x3276('0x18')]);_0x200c90[_0x3276('0x40')]=intUtil[_0x3276('0x3f')](_0x200c90[_0x3276('0x40')]);if(_0x29a4c7&&_0x29a4c7[_0x3276('0x56')]){logger[_0x3276('0x1a')]('['+_0x20a1ad['lastevent'][_0x3276('0x57')]()+']',_0x3276('0x41'));_0x20a1ad['recordingURL']=util[_0x3276('0xe')](_0x3276('0x43'),_0x200c90[_0x3276('0x40')],_0x20a1ad[_0x3276('0x44')],md5(_0x20a1ad[_0x3276('0x44')]));}else{_0x20a1ad[_0x3276('0x42')]='';}headers[_0x3276('0x51')]=getAuth(_0x200c90);return getUser(_0x200c90,'')[_0x3276('0x19')](function(_0x5d2b45){_0x408ffa=_0x5d2b45;logger[_0x3276('0x1a')](_0x3276('0x45'),_0x408ffa['id']);return getEndUser(_0x200c90,_0x20a1ad[_0x3276('0xf')],_0x20a1ad['calleridnum']);})[_0x3276('0x19')](function(_0x8eb9){_0x48fbfd=_0x8eb9;logger[_0x3276('0x1a')]('The\x20Enduser\x20ID\x20is:',_0x48fbfd['id']);return getTicket(_0x200c90,_0x408ffa,_0x48fbfd,_0x2588da,_0x20a1ad);})['then'](function(_0x4d9713){if(_0x4d9713){logger[_0x3276('0x1a')]('Ticket\x20created!');logger[_0x3276('0x1a')](_0x3276('0x47'),_0x4d9713['id']);}})[_0x3276('0x4c')](function(_0x189f23){logger['error']('['+_0x20a1ad[_0x3276('0x58')]['toUpperCase']()+']',JSON[_0x3276('0x31')](_0x189f23));});};