4a719e2bbafdc97ebe9e38d5782dfc2969ea8184
[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 _0x982a=['toLowerCase','string','push','idField','content','type','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','merge','Caller\x20-\x20%s','calleridname','getString','Descriptions','<br>','name','Fields','custom_fields','keyBy','value','format','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','picklist','nameField','customField'];(function(_0x2c0b4f,_0xd2fbcb){var _0x2fe3b6=function(_0x8e5306){while(--_0x8e5306){_0x2c0b4f['push'](_0x2c0b4f['shift']());}};_0x2fe3b6(++_0xd2fbcb);}(_0x982a,0x1f1));var _0xa982=function(_0x50fab9,_0x3e4c3e){_0x50fab9=_0x50fab9-0x0;var _0x555339=_0x982a[_0x50fab9];return _0x555339;};'use strict';var _=require(_0xa982('0x0'));var rp=require(_0xa982('0x1'));var md5=require(_0xa982('0x2'));var util=require(_0xa982('0x3'));var Redis=require(_0xa982('0x4'));var intUtil=require(_0xa982('0x5'));var config=require('../../../../config/environment');var logger=require(_0xa982('0x6'))(_0xa982('0x7'));config[_0xa982('0x8')]=_[_0xa982('0x9')](config[_0xa982('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xa982('0xa'))(new Redis(config['redis']));var headers={'Content-Type':_0xa982('0xb'),'Accept':_0xa982('0xb')};function emit(_0x4581bf,_0x5ba4e6,_0x48fb33){io['to'](_0x4581bf)[_0xa982('0xc')](_0x5ba4e6,_0x48fb33);}function getTicket(_0x4210e1,_0x513638,_0x5b768b,_0x498ce6,_0xa0af41){logger[_0xa982('0xd')]('Creating\x20new\x20ticket...');var _0x2f2550=_[_0xa982('0xe')]({'responder_id':_0x513638['id'],'requester_id':_0x5b768b['id'],'name':util['format'](_0xa982('0xf'),_0xa0af41[_0xa982('0x10')]),'phone':_0xa0af41['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xa982('0x11')](_0x498ce6['Subjects'],_0xa0af41,'\x20'),'description':intUtil['getString'](_0x498ce6[_0xa982('0x12')],_0xa0af41,_0xa982('0x13')),'tags':getTags(_0x498ce6['Tags'],_0xa982('0x14'))},getCustomFields(_0x498ce6[_0xa982('0x15')],_0xa0af41));_0x2f2550[_0xa982('0x16')]=_['mapValues'](_[_0xa982('0x17')](_0x2f2550['custom_fields'],'id'),_0xa982('0x18'));return request({'uri':util[_0xa982('0x19')]('%s/api/v2/tickets',_0x4210e1[_0xa982('0x1a')]),'method':_0xa982('0x1b'),'body':_0x2f2550})[_0xa982('0x1c')](function(_0x253a3a){logger[_0xa982('0xd')](_0xa982('0x1d'));return _0x253a3a;});}function getUser(_0x3c47ef,_0x3b5458){if(intUtil[_0xa982('0x1e')](_0x3b5458)){return request({'uri':util[_0xa982('0x19')]('%s/api/v2/agents',_0x3c47ef[_0xa982('0x1a')]),'qs':{'email':_0x3b5458}})['then'](function(_0x3a387c){if(_0x3a387c[_0xa982('0x1f')]){logger[_0xa982('0xd')](_0xa982('0x20'));return _[_0xa982('0x21')](_0x3a387c,function(_0x314038){return _0x314038[_0xa982('0x22')]['email']===_0x3b5458;});}else{logger[_0xa982('0xd')](_0xa982('0x23'));return request({'uri':util[_0xa982('0x19')](_0xa982('0x24'),_0x3c47ef[_0xa982('0x1a')])})[_0xa982('0x1c')](function(_0xecae04){logger[_0xa982('0xd')]('Admin\x20account\x20selected.');return _0xecae04;});}});}else{logger[_0xa982('0xd')](_0xa982('0x25'));return request({'uri':util[_0xa982('0x19')](_0xa982('0x24'),_0x3c47ef['remoteUri'])})[_0xa982('0x1c')](function(_0x1a9bb2){logger[_0xa982('0xd')]('Admin\x20account\x20selected.');return _0x1a9bb2;});}}function getEndUser(_0x304786,_0x2e685e,_0x246e91){logger['info'](_0xa982('0x26'),_0x246e91);return request({'uri':util[_0xa982('0x19')](_0xa982('0x27'),_0x304786[_0xa982('0x1a')]),'qs':{'phone':_0x246e91}})[_0xa982('0x1c')](function(_0x14496a){if(_0x14496a[_0xa982('0x1f')]){logger[_0xa982('0xd')](_0xa982('0x28'));return _[_0xa982('0x21')](_0x14496a,{'phone':_0x246e91});}else{logger['info'](_0xa982('0x29'));return request({'uri':util[_0xa982('0x19')](_0xa982('0x27'),_0x304786[_0xa982('0x1a')]),'method':_0xa982('0x1b'),'body':{'name':_0x2e685e,'phone':_0x246e91}})[_0xa982('0x1c')](function(_0x1db69b){logger['info']('Enduser\x20created.');return _0x1db69b;});}});}function getAuth(_0x102d4f){return util[_0xa982('0x19')]('Basic\x20%s',new Buffer(_0x102d4f[_0xa982('0x2a')]+':X')[_0xa982('0x2b')](_0xa982('0x2c')));}function request(_0x2d732d){logger[_0xa982('0x2d')](_0xa982('0x2e'),JSON[_0xa982('0x2f')](_0x2d732d));return rp(_[_0xa982('0x9')](_0x2d732d,{'method':_0xa982('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x59cfc2,_0x111996){var _0x519e17=[];if(_0x59cfc2&&_0x59cfc2[_0xa982('0x1f')]>0x0){_0x519e17=_[_0xa982('0x31')](_0x59cfc2,_0x111996);}return _0x519e17;}function getCustomFields(_0x51e453,_0x1fd86f){var _0x1deaed=[];var _0x1971af={'custom_fields':[]};if(_0x51e453[_0xa982('0x1f')]>0x0){_[_0xa982('0x32')](_0x51e453,function(_0x2685b1){if(_[_0xa982('0x33')](['string',_0xa982('0x34')],_0x2685b1['type'])&&_0x2685b1[_0xa982('0x35')]&&!_0x2685b1[_0xa982('0x36')]){_0x1971af[_0x2685b1['nameField'][_0xa982('0x37')]()]=_0x2685b1['content'][_0xa982('0x2b')]();}else if(_[_0xa982('0x33')]([_0xa982('0x38'),_0xa982('0x34')],_0x2685b1['type'])&&_0x2685b1['idField']&&_0x2685b1['customField']){_0x1971af[_0xa982('0x16')][_0xa982('0x39')]({'id':_0x2685b1[_0xa982('0x3a')],'value':_0x2685b1[_0xa982('0x3b')][_0xa982('0x2b')]()});}else if(_0x2685b1[_0xa982('0x3c')]==='variable'&&_0x2685b1[_0xa982('0x3d')]&&_0x2685b1[_0xa982('0x3a')]&&_0x2685b1[_0xa982('0x36')]){_0x1fd86f[_0x2685b1['variableName']]&&_0x1971af[_0xa982('0x16')][_0xa982('0x39')]({'id':_0x2685b1[_0xa982('0x3a')],'value':_0x1fd86f[_0x2685b1[_0xa982('0x3d')]][_0xa982('0x2b')]()});}else if(_0x2685b1[_0xa982('0x3c')]===_0xa982('0x3e')&&_0x2685b1[_0xa982('0x3f')]&&_0x2685b1[_0xa982('0x3f')][_0xa982('0x14')]&&_0x2685b1[_0xa982('0x3a')]&&_0x2685b1[_0xa982('0x36')]){_0x1fd86f[_0x2685b1[_0xa982('0x3f')][_0xa982('0x14')][_0xa982('0x37')]()]&&_0x1971af[_0xa982('0x16')][_0xa982('0x39')]({'id':_0x2685b1[_0xa982('0x3a')],'value':_0x1fd86f[_0x2685b1[_0xa982('0x3f')][_0xa982('0x14')][_0xa982('0x37')]()][_0xa982('0x2b')]()});}});}return _0x1971af;}exports['queue']=function(_0x21e0d8,_0x512f5f,_0xc48cdf,_0x3f00d9,_0x11bf45,_0x45ee5f){var _0x571198,_0x5b2f71;_0x45ee5f[_0xa982('0x1a')]=intUtil[_0xa982('0x40')](_0x45ee5f[_0xa982('0x1a')]);_0x45ee5f[_0xa982('0x41')]=intUtil[_0xa982('0x40')](_0x45ee5f[_0xa982('0x41')]);if(_0x11bf45&&_0x11bf45[_0xa982('0x42')]){logger[_0xa982('0xd')](_0xa982('0x43'),'Recording\x20is\x20enabled!');_0x512f5f[_0xa982('0x44')]=util[_0xa982('0x19')](_0xa982('0x45'),_0x45ee5f[_0xa982('0x41')],_0x512f5f[_0xa982('0x46')],md5(_0x512f5f[_0xa982('0x46')]));}else{_0x512f5f[_0xa982('0x44')]='';}headers[_0xa982('0x47')]=getAuth(_0x45ee5f);return getUser(_0x45ee5f,_0x3f00d9[_0xa982('0x48')])['then'](function(_0x244a0c){_0x571198=_0x244a0c;logger[_0xa982('0xd')]('The\x20User\x20ID\x20is:',_0x571198['id']);return getEndUser(_0x45ee5f,_0x512f5f[_0xa982('0x10')],_0x512f5f[_0xa982('0x49')]);})[_0xa982('0x1c')](function(_0x167435){_0x5b2f71=_0x167435;logger[_0xa982('0xd')](_0xa982('0x4a'),_0x5b2f71['id']);return getTicket(_0x45ee5f,_0x571198,_0x5b2f71,_0xc48cdf,_0x512f5f);})[_0xa982('0x1c')](function(_0x382879){if(_0x382879&&_0x382879['id']){logger['info'](_0xa982('0x1d'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x382879['id']);logger['info']('[QUEUE]',_0xa982('0x4b'));emit(util['format'](_0xa982('0x4c'),_0x3f00d9[_0xa982('0x14')]),_0xa982('0x4d'),{'uri':util['format'](_0xa982('0x4e'),_0x45ee5f[_0xa982('0x1a')],_0x382879['id'])});}})[_0xa982('0x4f')](function(_0x3daf18){logger[_0xa982('0x50')](_0xa982('0x43'),JSON[_0xa982('0x2f')](_0x3daf18));});};exports['outbound']=function(_0x4854d3,_0x166b46,_0x55293d,_0x472054,_0x4b657b,_0x3a8ce0,_0x399409){var _0x561949,_0x47418d;_0x3a8ce0[_0xa982('0x1a')]=intUtil[_0xa982('0x40')](_0x3a8ce0[_0xa982('0x1a')]);_0x3a8ce0[_0xa982('0x41')]=intUtil['stripTrailingSlash'](_0x3a8ce0[_0xa982('0x41')]);if(_0x399409&&_0x399409[_0xa982('0x51')]&&_0x399409[_0xa982('0x51')]!==_0xa982('0x52')){logger[_0xa982('0xd')](_0xa982('0x53'),_0xa982('0x54'));_0x166b46[_0xa982('0x44')]=util[_0xa982('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3a8ce0[_0xa982('0x41')],_0x166b46[_0xa982('0x46')],md5(_0x166b46[_0xa982('0x46')]));}headers[_0xa982('0x47')]=getAuth(_0x3a8ce0);return getUser(_0x3a8ce0,_0x472054[_0xa982('0x48')])[_0xa982('0x1c')](function(_0x5e31cd){_0x561949=_0x5e31cd;logger[_0xa982('0xd')](_0xa982('0x55'),_0x561949['id']);return getEndUser(_0x3a8ce0,_0x166b46[_0xa982('0x56')],_0x166b46[_0xa982('0x57')]);})[_0xa982('0x1c')](function(_0x335cf8){_0x47418d=_0x335cf8;logger['info'](_0xa982('0x4a'),_0x47418d['id']);return getTicket(_0x3a8ce0,_0x561949,_0x47418d,_0x55293d,_0x166b46);})[_0xa982('0x1c')](function(_0x24d180){if(_0x24d180&&_0x24d180['id']){logger[_0xa982('0xd')]('Ticket\x20created!');logger[_0xa982('0xd')](_0xa982('0x58'),_0x24d180['id']);logger[_0xa982('0xd')](_0xa982('0x53'),_0xa982('0x4b'));emit(util[_0xa982('0x19')](_0xa982('0x4c'),_0x472054[_0xa982('0x14')]),_0xa982('0x4d'),{'uri':util[_0xa982('0x19')]('%s/helpdesk/tickets/%d',_0x3a8ce0[_0xa982('0x1a')],_0x24d180['id'])});}})[_0xa982('0x4f')](function(_0x21b4b9){logger[_0xa982('0x50')](_0xa982('0x53'),JSON[_0xa982('0x2f')](_0x21b4b9));});};exports[_0xa982('0x59')]=function(_0x2efce6,_0xe56e8d,_0x3e855f,_0xaea0aa,_0x680cb,_0x240359){var _0x4fef95,_0x34a1ed;_0x240359['remoteUri']=intUtil[_0xa982('0x40')](_0x240359[_0xa982('0x1a')]);_0x240359[_0xa982('0x41')]=intUtil[_0xa982('0x40')](_0x240359[_0xa982('0x41')]);if(_0x680cb&&_0x680cb[_0xa982('0x42')]){logger[_0xa982('0xd')]('['+_0xe56e8d[_0xa982('0x5a')][_0xa982('0x5b')]()+']',_0xa982('0x54'));_0xe56e8d[_0xa982('0x44')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x240359[_0xa982('0x41')],_0xe56e8d['uniqueid'],md5(_0xe56e8d[_0xa982('0x46')]));}else{_0xe56e8d[_0xa982('0x44')]='';}headers[_0xa982('0x47')]=getAuth(_0x240359);return getUser(_0x240359,'')[_0xa982('0x1c')](function(_0x1cd465){_0x4fef95=_0x1cd465;logger[_0xa982('0xd')](_0xa982('0x55'),_0x4fef95['id']);return getEndUser(_0x240359,_0xe56e8d[_0xa982('0x10')],_0xe56e8d[_0xa982('0x49')]);})[_0xa982('0x1c')](function(_0x5658bd){_0x34a1ed=_0x5658bd;logger[_0xa982('0xd')](_0xa982('0x4a'),_0x34a1ed['id']);return getTicket(_0x240359,_0x4fef95,_0x34a1ed,_0x3e855f,_0xe56e8d);})['then'](function(_0x28142b){if(_0x28142b){logger[_0xa982('0xd')]('Ticket\x20created!');logger['info'](_0xa982('0x58'),_0x28142b['id']);}})[_0xa982('0x4f')](function(_0x5be088){logger['error']('['+_0xe56e8d[_0xa982('0x5a')][_0xa982('0x5b')]()+']',JSON[_0xa982('0x2f')](_0x5be088));});};