Built motion from commit (unavailable).|2.5.15
[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 _0x02c3=['customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','uniqueid','Authorization','destcalleridname','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','unmanaged','monitor_format','lastevent','toUpperCase','error','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','POST','%s/api/v2/agents','remoteUri','then','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Basic\x20%s','apiKey','toString','base64','debug','stringify','map','type','nameField','customField','toLowerCase','content','string','idField','push','variable','variableName'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0x02c3,0x1e6));var _0x302c=function(_0x566259,_0x23edba){_0x566259=_0x566259-0x0;var _0x305521=_0x02c3[_0x566259];return _0x305521;};'use strict';var _=require(_0x302c('0x0'));var rp=require(_0x302c('0x1'));var md5=require('md5');var util=require(_0x302c('0x2'));var Redis=require(_0x302c('0x3'));var intUtil=require(_0x302c('0x4'));var config=require(_0x302c('0x5'));var logger=require(_0x302c('0x6'))(_0x302c('0x7'));config[_0x302c('0x8')]=_[_0x302c('0x9')](config[_0x302c('0x8')],{'host':_0x302c('0xa'),'port':0x18eb});var io=require(_0x302c('0xb'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x2ac149,_0xce11f7,_0x232cf8){io['to'](_0x2ac149)[_0x302c('0xc')](_0xce11f7,_0x232cf8);}function getTicket(_0x30db00,_0x58257c,_0x39dba7,_0x10af8b,_0x4a9825){logger[_0x302c('0xd')](_0x302c('0xe'));var _0x5e684f=_['merge']({'responder_id':_0x58257c['id'],'requester_id':_0x39dba7['id'],'name':util[_0x302c('0xf')](_0x302c('0x10'),_0x4a9825[_0x302c('0x11')]),'phone':_0x4a9825['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x302c('0x12')](_0x10af8b['Subjects'],_0x4a9825,'\x20'),'description':intUtil[_0x302c('0x12')](_0x10af8b[_0x302c('0x13')],_0x4a9825,_0x302c('0x14')),'tags':getTags(_0x10af8b[_0x302c('0x15')],_0x302c('0x16'))},getCustomFields(_0x10af8b[_0x302c('0x17')],_0x4a9825));_0x5e684f[_0x302c('0x18')]=_[_0x302c('0x19')](_[_0x302c('0x1a')](_0x5e684f[_0x302c('0x18')],'id'),'value');return request({'uri':util[_0x302c('0xf')]('%s/api/v2/tickets',_0x30db00['remoteUri']),'method':_0x302c('0x1b'),'body':_0x5e684f})['then'](function(_0x47f707){logger[_0x302c('0xd')]('Ticket\x20created!');return _0x47f707;});}function getUser(_0x556e7a,_0x2d5e22){if(intUtil['validateEmail'](_0x2d5e22)){return request({'uri':util['format'](_0x302c('0x1c'),_0x556e7a[_0x302c('0x1d')]),'qs':{'email':_0x2d5e22}})[_0x302c('0x1e')](function(_0x4271e7){if(_0x4271e7['length']){logger[_0x302c('0xd')](_0x302c('0x1f'));return _[_0x302c('0x20')](_0x4271e7,function(_0x43c9f2){return _0x43c9f2[_0x302c('0x21')][_0x302c('0x22')]===_0x2d5e22;});}else{logger[_0x302c('0xd')](_0x302c('0x23'));return request({'uri':util['format'](_0x302c('0x24'),_0x556e7a[_0x302c('0x1d')])})[_0x302c('0x1e')](function(_0x20c55b){logger['info']('Admin\x20account\x20selected.');return _0x20c55b;});}});}else{logger['info'](_0x302c('0x25'));return request({'uri':util[_0x302c('0xf')](_0x302c('0x24'),_0x556e7a[_0x302c('0x1d')])})['then'](function(_0x4ca2f7){logger[_0x302c('0xd')](_0x302c('0x26'));return _0x4ca2f7;});}}function getEndUser(_0x118614,_0x3f2cd6,_0x4a10cc){logger[_0x302c('0xd')](_0x302c('0x27'),_0x4a10cc);return request({'uri':util[_0x302c('0xf')](_0x302c('0x28'),_0x118614[_0x302c('0x1d')]),'qs':{'phone':_0x4a10cc}})['then'](function(_0x2ab0fb){if(_0x2ab0fb[_0x302c('0x29')]){logger[_0x302c('0xd')](_0x302c('0x2a'));return _[_0x302c('0x20')](_0x2ab0fb,{'phone':_0x4a10cc});}else{logger[_0x302c('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x302c('0xf')](_0x302c('0x28'),_0x118614[_0x302c('0x1d')]),'method':_0x302c('0x1b'),'body':{'name':_0x3f2cd6,'phone':_0x4a10cc}})[_0x302c('0x1e')](function(_0x570bb){logger['info']('Enduser\x20created.');return _0x570bb;});}});}function getAuth(_0x4ab103){return util[_0x302c('0xf')](_0x302c('0x2b'),new Buffer(_0x4ab103[_0x302c('0x2c')]+':X')[_0x302c('0x2d')](_0x302c('0x2e')));}function request(_0x2aef94){logger[_0x302c('0x2f')]('[HTTP]',JSON[_0x302c('0x30')](_0x2aef94));return rp(_['defaults'](_0x2aef94,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x420992,_0x568fe8){var _0x307666=[];if(_0x420992&&_0x420992[_0x302c('0x29')]>0x0){_0x307666=_[_0x302c('0x31')](_0x420992,_0x568fe8);}return _0x307666;}function getCustomFields(_0x504c5,_0x458598){var _0x127135=[];var _0xeeb0e8={'custom_fields':[]};if(_0x504c5[_0x302c('0x29')]>0x0){_['forEach'](_0x504c5,function(_0xdc96be){if(_0xdc96be[_0x302c('0x32')]==='string'&&_0xdc96be[_0x302c('0x33')]&&!_0xdc96be[_0x302c('0x34')]){_0xeeb0e8[_0xdc96be[_0x302c('0x33')][_0x302c('0x35')]()]=_0xdc96be[_0x302c('0x36')]['toString']();}else if(_0xdc96be[_0x302c('0x32')]===_0x302c('0x37')&&_0xdc96be[_0x302c('0x38')]&&_0xdc96be[_0x302c('0x34')]){_0xeeb0e8[_0x302c('0x18')][_0x302c('0x39')]({'id':_0xdc96be['idField'],'value':_0xdc96be['content'][_0x302c('0x2d')]()});}else if(_0xdc96be[_0x302c('0x32')]===_0x302c('0x3a')&&_0xdc96be[_0x302c('0x3b')]&&_0xdc96be[_0x302c('0x38')]&&_0xdc96be[_0x302c('0x34')]){_0x458598[_0xdc96be[_0x302c('0x3b')]]&&_0xeeb0e8['custom_fields'][_0x302c('0x39')]({'id':_0xdc96be['idField'],'value':_0x458598[_0xdc96be[_0x302c('0x3b')]]['toString']()});}else if(_0xdc96be[_0x302c('0x32')]===_0x302c('0x3c')&&_0xdc96be[_0x302c('0x3d')]&&_0xdc96be[_0x302c('0x3d')]['name']&&_0xdc96be[_0x302c('0x38')]&&_0xdc96be[_0x302c('0x34')]){_0x458598[_0xdc96be[_0x302c('0x3d')]['name']['toLowerCase']()]&&_0xeeb0e8[_0x302c('0x18')][_0x302c('0x39')]({'id':_0xdc96be[_0x302c('0x38')],'value':_0x458598[_0xdc96be[_0x302c('0x3d')][_0x302c('0x16')][_0x302c('0x35')]()][_0x302c('0x2d')]()});}});}return _0xeeb0e8;}exports[_0x302c('0x3e')]=function(_0x12d22f,_0x3231f0,_0x5d190c,_0x24f33a,_0x4c0e22,_0xd0ce7d){var _0x5b6225,_0x3de5be;_0xd0ce7d[_0x302c('0x1d')]=intUtil[_0x302c('0x3f')](_0xd0ce7d['remoteUri']);_0xd0ce7d[_0x302c('0x40')]=intUtil['stripTrailingSlash'](_0xd0ce7d[_0x302c('0x40')]);if(_0x4c0e22&&_0x4c0e22['monitor_format']){logger[_0x302c('0xd')](_0x302c('0x41'),'Recording\x20is\x20enabled!');_0x3231f0[_0x302c('0x42')]=util[_0x302c('0xf')](_0x302c('0x43'),_0xd0ce7d[_0x302c('0x40')],_0x3231f0['uniqueid'],md5(_0x3231f0['uniqueid']));}else{_0x3231f0[_0x302c('0x42')]='';}headers['Authorization']=getAuth(_0xd0ce7d);return getUser(_0xd0ce7d,_0x24f33a[_0x302c('0x22')])[_0x302c('0x1e')](function(_0x3d079e){_0x5b6225=_0x3d079e;logger[_0x302c('0xd')](_0x302c('0x44'),_0x5b6225['id']);return getEndUser(_0xd0ce7d,_0x3231f0[_0x302c('0x11')],_0x3231f0[_0x302c('0x45')]);})[_0x302c('0x1e')](function(_0x5e7492){_0x3de5be=_0x5e7492;logger['info'](_0x302c('0x46'),_0x3de5be['id']);return getTicket(_0xd0ce7d,_0x5b6225,_0x3de5be,_0x5d190c,_0x3231f0);})[_0x302c('0x1e')](function(_0x19ed24){if(_0x19ed24&&_0x19ed24['id']){logger[_0x302c('0xd')](_0x302c('0x47'));logger['info'](_0x302c('0x48'),_0x19ed24['id']);logger[_0x302c('0xd')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x302c('0xf')]('user:%s',_0x24f33a[_0x302c('0x16')]),'trigger:browser:url',{'uri':util[_0x302c('0xf')](_0x302c('0x49'),_0xd0ce7d[_0x302c('0x1d')],_0x19ed24['id'])});}})[_0x302c('0x4a')](function(_0x26a8fb){logger['error']('[QUEUE]',JSON[_0x302c('0x30')](_0x26a8fb));});};exports[_0x302c('0x4b')]=function(_0x26eedd,_0x4de006,_0x1c29c7,_0x1d7d4c,_0x5afa85,_0x404fc5,_0x26a0f9){var _0x3f6164,_0x13b340;_0x404fc5[_0x302c('0x1d')]=intUtil['stripTrailingSlash'](_0x404fc5[_0x302c('0x1d')]);_0x404fc5[_0x302c('0x40')]=intUtil[_0x302c('0x3f')](_0x404fc5[_0x302c('0x40')]);if(_0x26a0f9&&_0x26a0f9['recordingFormat']&&_0x26a0f9[_0x302c('0x4c')]!==_0x302c('0x4d')){logger[_0x302c('0xd')](_0x302c('0x4e'),_0x302c('0x4f'));_0x4de006['recordingURL']=util[_0x302c('0xf')](_0x302c('0x43'),_0x404fc5[_0x302c('0x40')],_0x4de006['uniqueid'],md5(_0x4de006[_0x302c('0x50')]));}headers[_0x302c('0x51')]=getAuth(_0x404fc5);return getUser(_0x404fc5,_0x1d7d4c[_0x302c('0x22')])[_0x302c('0x1e')](function(_0x9d97c){_0x3f6164=_0x9d97c;logger[_0x302c('0xd')](_0x302c('0x44'),_0x3f6164['id']);return getEndUser(_0x404fc5,_0x4de006[_0x302c('0x52')],_0x4de006['destcalleridnum']);})[_0x302c('0x1e')](function(_0x370862){_0x13b340=_0x370862;logger[_0x302c('0xd')](_0x302c('0x46'),_0x13b340['id']);return getTicket(_0x404fc5,_0x3f6164,_0x13b340,_0x1c29c7,_0x4de006);})[_0x302c('0x1e')](function(_0x3e8747){if(_0x3e8747&&_0x3e8747['id']){logger['info']('Ticket\x20created!');logger[_0x302c('0xd')](_0x302c('0x48'),_0x3e8747['id']);logger[_0x302c('0xd')](_0x302c('0x4e'),_0x302c('0x53'));emit(util['format'](_0x302c('0x54'),_0x1d7d4c[_0x302c('0x16')]),_0x302c('0x55'),{'uri':util[_0x302c('0xf')](_0x302c('0x49'),_0x404fc5[_0x302c('0x1d')],_0x3e8747['id'])});}})['catch'](function(_0xd92ad){logger['error'](_0x302c('0x4e'),JSON[_0x302c('0x30')](_0xd92ad));});};exports[_0x302c('0x56')]=function(_0x35c6fb,_0x43ca7b,_0x140ddb,_0x1042cd,_0x1b2377,_0x3f0c48){var _0x56779c,_0xfb2d01;_0x3f0c48[_0x302c('0x1d')]=intUtil[_0x302c('0x3f')](_0x3f0c48[_0x302c('0x1d')]);_0x3f0c48['serverUrl']=intUtil[_0x302c('0x3f')](_0x3f0c48[_0x302c('0x40')]);if(_0x1b2377&&_0x1b2377[_0x302c('0x57')]){logger[_0x302c('0xd')]('['+_0x43ca7b[_0x302c('0x58')][_0x302c('0x59')]()+']',_0x302c('0x4f'));_0x43ca7b[_0x302c('0x42')]=util[_0x302c('0xf')](_0x302c('0x43'),_0x3f0c48[_0x302c('0x40')],_0x43ca7b[_0x302c('0x50')],md5(_0x43ca7b[_0x302c('0x50')]));}else{_0x43ca7b[_0x302c('0x42')]='';}headers[_0x302c('0x51')]=getAuth(_0x3f0c48);return getUser(_0x3f0c48,'')[_0x302c('0x1e')](function(_0x3e7b7f){_0x56779c=_0x3e7b7f;logger[_0x302c('0xd')](_0x302c('0x44'),_0x56779c['id']);return getEndUser(_0x3f0c48,_0x43ca7b[_0x302c('0x11')],_0x43ca7b[_0x302c('0x45')]);})[_0x302c('0x1e')](function(_0x362ddb){_0xfb2d01=_0x362ddb;logger[_0x302c('0xd')](_0x302c('0x46'),_0xfb2d01['id']);return getTicket(_0x3f0c48,_0x56779c,_0xfb2d01,_0x140ddb,_0x43ca7b);})['then'](function(_0x194131){if(_0x194131){logger['info'](_0x302c('0x47'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x194131['id']);}})[_0x302c('0x4a')](function(_0xbfb68b){logger[_0x302c('0x5a')]('['+_0x43ca7b[_0x302c('0x58')][_0x302c('0x59')]()+']',JSON[_0x302c('0x30')](_0xbfb68b));});};