Built motion from commit (unavailable).|2.4.20
[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 _0x09e4=['variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','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...','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','user:%s','abandoned','[ABANDONED]','lodash','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','<br>','Tags','name','Fields','custom_fields','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','validateEmail','Agent\x20found!','find','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','POST','Basic\x20%s','apiKey','toString','base64','debug','stringify','GET','map','forEach','type','nameField','toLowerCase','content','string','idField','customField','push'];(function(_0x123cea,_0x50a243){var _0xe62c9f=function(_0x260941){while(--_0x260941){_0x123cea['push'](_0x123cea['shift']());}};_0xe62c9f(++_0x50a243);}(_0x09e4,0xc5));var _0x409e=function(_0x1e015f,_0x213a8e){_0x1e015f=_0x1e015f-0x0;var _0xbc58d=_0x09e4[_0x1e015f];return _0xbc58d;};'use strict';var _=require(_0x409e('0x0'));var rp=require(_0x409e('0x1'));var md5=require(_0x409e('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x409e('0x3'));var config=require(_0x409e('0x4'));var logger=require(_0x409e('0x5'))('freshdesk');config[_0x409e('0x6')]=_[_0x409e('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x409e('0x8'))(new Redis(config[_0x409e('0x6')]));var headers={'Content-Type':_0x409e('0x9'),'Accept':'application/json'};function emit(_0x4caab0,_0x4dcf87,_0x8afde9){io['to'](_0x4caab0)[_0x409e('0xa')](_0x4dcf87,_0x8afde9);}function getTicket(_0x5d19a3,_0x5d7187,_0xd2dff2,_0x316e0e,_0x4699fd){logger[_0x409e('0xb')](_0x409e('0xc'));var _0x21c9e0=_['merge']({'responder_id':_0x5d7187['id'],'requester_id':_0xd2dff2['id'],'name':util[_0x409e('0xd')](_0x409e('0xe'),_0x4699fd['calleridname']),'phone':_0x4699fd[_0x409e('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x409e('0x10')](_0x316e0e[_0x409e('0x11')],_0x4699fd,'\x20'),'description':intUtil[_0x409e('0x10')](_0x316e0e['Descriptions'],_0x4699fd,_0x409e('0x12')),'tags':getTags(_0x316e0e[_0x409e('0x13')],_0x409e('0x14'))},getCustomFields(_0x316e0e[_0x409e('0x15')],_0x4699fd));_0x21c9e0[_0x409e('0x16')]=_['mapValues'](_['keyBy'](_0x21c9e0[_0x409e('0x16')],'id'),'value');return request({'uri':util['format'](_0x409e('0x17'),_0x5d19a3[_0x409e('0x18')]),'method':'POST','body':_0x21c9e0})[_0x409e('0x19')](function(_0xa61332){logger[_0x409e('0xb')](_0x409e('0x1a'));return _0xa61332;});}function getUser(_0x1a1ba6,_0x555bf9){if(intUtil[_0x409e('0x1b')](_0x555bf9)){return request({'uri':util[_0x409e('0xd')]('%s/api/v2/agents',_0x1a1ba6[_0x409e('0x18')]),'qs':{'email':_0x555bf9}})[_0x409e('0x19')](function(_0x5ee49d){if(_0x5ee49d['length']){logger[_0x409e('0xb')](_0x409e('0x1c'));return _[_0x409e('0x1d')](_0x5ee49d,function(_0x3d2fc2){return _0x3d2fc2['contact'][_0x409e('0x1e')]===_0x555bf9;});}else{logger[_0x409e('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x409e('0xd')](_0x409e('0x1f'),_0x1a1ba6['remoteUri'])})[_0x409e('0x19')](function(_0x3438d2){logger[_0x409e('0xb')]('Admin\x20account\x20selected.');return _0x3438d2;});}});}else{logger[_0x409e('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x409e('0x1f'),_0x1a1ba6[_0x409e('0x18')])})[_0x409e('0x19')](function(_0x2baa2e){logger['info'](_0x409e('0x20'));return _0x2baa2e;});}}function getEndUser(_0x15d24f,_0x1a2028,_0x425ad5){logger[_0x409e('0xb')](_0x409e('0x21'),_0x425ad5);return request({'uri':util[_0x409e('0xd')](_0x409e('0x22'),_0x15d24f[_0x409e('0x18')]),'qs':{'phone':_0x425ad5}})['then'](function(_0x1f698b){if(_0x1f698b[_0x409e('0x23')]){logger[_0x409e('0xb')](_0x409e('0x24'));return _[_0x409e('0x1d')](_0x1f698b,{'phone':_0x425ad5});}else{logger[_0x409e('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x409e('0xd')]('%s/api/v2/contacts',_0x15d24f[_0x409e('0x18')]),'method':_0x409e('0x25'),'body':{'name':_0x1a2028,'phone':_0x425ad5}})[_0x409e('0x19')](function(_0x56bd36){logger[_0x409e('0xb')]('Enduser\x20created.');return _0x56bd36;});}});}function getAuth(_0x20ba21){return util['format'](_0x409e('0x26'),new Buffer(_0x20ba21[_0x409e('0x27')]+':X')[_0x409e('0x28')](_0x409e('0x29')));}function request(_0x129378){logger[_0x409e('0x2a')]('[HTTP]',JSON[_0x409e('0x2b')](_0x129378));return rp(_[_0x409e('0x7')](_0x129378,{'method':_0x409e('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x21c3f3,_0x2113f2){var _0x4772d7=[];if(_0x21c3f3&&_0x21c3f3[_0x409e('0x23')]>0x0){_0x4772d7=_[_0x409e('0x2d')](_0x21c3f3,_0x2113f2);}return _0x4772d7;}function getCustomFields(_0x39656a,_0x2effb7){var _0x12c63c=[];var _0x26f130={'custom_fields':[]};if(_0x39656a[_0x409e('0x23')]>0x0){_[_0x409e('0x2e')](_0x39656a,function(_0x1164d3){if(_0x1164d3[_0x409e('0x2f')]==='string'&&_0x1164d3[_0x409e('0x30')]&&!_0x1164d3['customField']){_0x26f130[_0x1164d3[_0x409e('0x30')][_0x409e('0x31')]()]=_0x1164d3[_0x409e('0x32')][_0x409e('0x28')]();}else if(_0x1164d3[_0x409e('0x2f')]===_0x409e('0x33')&&_0x1164d3[_0x409e('0x34')]&&_0x1164d3[_0x409e('0x35')]){_0x26f130[_0x409e('0x16')][_0x409e('0x36')]({'id':_0x1164d3['idField'],'value':_0x1164d3[_0x409e('0x32')][_0x409e('0x28')]()});}else if(_0x1164d3[_0x409e('0x2f')]===_0x409e('0x37')&&_0x1164d3[_0x409e('0x38')]&&_0x1164d3[_0x409e('0x34')]&&_0x1164d3[_0x409e('0x35')]){_0x2effb7[_0x1164d3[_0x409e('0x38')]]&&_0x26f130[_0x409e('0x16')]['push']({'id':_0x1164d3[_0x409e('0x34')],'value':_0x2effb7[_0x1164d3['variableName']][_0x409e('0x28')]()});}else if(_0x1164d3[_0x409e('0x2f')]==='customVariable'&&_0x1164d3[_0x409e('0x39')]&&_0x1164d3[_0x409e('0x39')][_0x409e('0x14')]&&_0x1164d3[_0x409e('0x34')]&&_0x1164d3['customField']){_0x2effb7[_0x1164d3[_0x409e('0x39')]['name']['toLowerCase']()]&&_0x26f130[_0x409e('0x16')][_0x409e('0x36')]({'id':_0x1164d3[_0x409e('0x34')],'value':_0x2effb7[_0x1164d3['Variable']['name'][_0x409e('0x31')]()][_0x409e('0x28')]()});}});}return _0x26f130;}exports[_0x409e('0x3a')]=function(_0x24af47,_0x4a38f4,_0x20a5a1,_0x37a3ca,_0x189084,_0x49561c){var _0x5bed43,_0x4bb5c7;_0x49561c['remoteUri']=intUtil[_0x409e('0x3b')](_0x49561c[_0x409e('0x18')]);_0x49561c[_0x409e('0x3c')]=intUtil[_0x409e('0x3b')](_0x49561c['serverUrl']);if(_0x189084&&_0x189084[_0x409e('0x3d')]){logger['info'](_0x409e('0x3e'),_0x409e('0x3f'));_0x4a38f4[_0x409e('0x40')]=util[_0x409e('0xd')](_0x409e('0x41'),_0x49561c[_0x409e('0x3c')],_0x4a38f4['uniqueid'],md5(_0x4a38f4[_0x409e('0x42')]));}else{_0x4a38f4['recordingURL']='';}headers[_0x409e('0x43')]=getAuth(_0x49561c);return getUser(_0x49561c,_0x37a3ca[_0x409e('0x1e')])['then'](function(_0x39239b){_0x5bed43=_0x39239b;logger[_0x409e('0xb')](_0x409e('0x44'),_0x5bed43['id']);return getEndUser(_0x49561c,_0x4a38f4['calleridname'],_0x4a38f4['calleridnum']);})['then'](function(_0x3c6a4a){_0x4bb5c7=_0x3c6a4a;logger[_0x409e('0xb')](_0x409e('0x45'),_0x4bb5c7['id']);return getTicket(_0x49561c,_0x5bed43,_0x4bb5c7,_0x20a5a1,_0x4a38f4);})[_0x409e('0x19')](function(_0x114462){if(_0x114462&&_0x114462['id']){logger[_0x409e('0xb')](_0x409e('0x1a'));logger[_0x409e('0xb')](_0x409e('0x46'),_0x114462['id']);logger[_0x409e('0xb')](_0x409e('0x3e'),_0x409e('0x47'));emit(util[_0x409e('0xd')]('user:%s',_0x37a3ca[_0x409e('0x14')]),_0x409e('0x48'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x49561c[_0x409e('0x18')],_0x114462['id'])});}})[_0x409e('0x49')](function(_0x74e537){logger[_0x409e('0x4a')](_0x409e('0x3e'),JSON[_0x409e('0x2b')](_0x74e537));});};exports[_0x409e('0x4b')]=function(_0x1b8b7d,_0x131be3,_0x51e103,_0x15a4a1,_0x25255a,_0x2aa39e,_0x655cd6){var _0x30688f,_0x22fb3a;_0x2aa39e[_0x409e('0x18')]=intUtil[_0x409e('0x3b')](_0x2aa39e[_0x409e('0x18')]);_0x2aa39e[_0x409e('0x3c')]=intUtil['stripTrailingSlash'](_0x2aa39e[_0x409e('0x3c')]);if(_0x655cd6&&_0x655cd6[_0x409e('0x4c')]&&_0x655cd6[_0x409e('0x4c')]!==_0x409e('0x4d')){logger[_0x409e('0xb')](_0x409e('0x4e'),_0x409e('0x3f'));_0x131be3[_0x409e('0x40')]=util[_0x409e('0xd')](_0x409e('0x41'),_0x2aa39e[_0x409e('0x3c')],_0x131be3[_0x409e('0x42')],md5(_0x131be3[_0x409e('0x42')]));}headers[_0x409e('0x43')]=getAuth(_0x2aa39e);return getUser(_0x2aa39e,_0x15a4a1[_0x409e('0x1e')])['then'](function(_0x1ca171){_0x30688f=_0x1ca171;logger[_0x409e('0xb')]('The\x20User\x20ID\x20is:',_0x30688f['id']);return getEndUser(_0x2aa39e,_0x131be3[_0x409e('0x4f')],_0x131be3[_0x409e('0x50')]);})['then'](function(_0x8c2eb0){_0x22fb3a=_0x8c2eb0;logger[_0x409e('0xb')](_0x409e('0x45'),_0x22fb3a['id']);return getTicket(_0x2aa39e,_0x30688f,_0x22fb3a,_0x51e103,_0x131be3);})[_0x409e('0x19')](function(_0x5e4262){if(_0x5e4262&&_0x5e4262['id']){logger[_0x409e('0xb')](_0x409e('0x1a'));logger[_0x409e('0xb')](_0x409e('0x46'),_0x5e4262['id']);logger[_0x409e('0xb')](_0x409e('0x4e'),_0x409e('0x47'));emit(util[_0x409e('0xd')](_0x409e('0x51'),_0x15a4a1[_0x409e('0x14')]),'trigger:browser:url',{'uri':util[_0x409e('0xd')]('%s/helpdesk/tickets/%d',_0x2aa39e[_0x409e('0x18')],_0x5e4262['id'])});}})[_0x409e('0x49')](function(_0x2689f1){logger[_0x409e('0x4a')](_0x409e('0x4e'),JSON[_0x409e('0x2b')](_0x2689f1));});};exports[_0x409e('0x52')]=function(_0x192216,_0x29ce50,_0x3a9afb,_0x188881,_0x3f4911,_0x1a587f){var _0x2f4a5e,_0x151ca4;_0x1a587f['remoteUri']=intUtil[_0x409e('0x3b')](_0x1a587f['remoteUri']);_0x1a587f[_0x409e('0x3c')]=intUtil[_0x409e('0x3b')](_0x1a587f[_0x409e('0x3c')]);if(_0x3f4911&&_0x3f4911['monitor_format']){logger['info'](_0x409e('0x53'),_0x409e('0x3f'));_0x29ce50['recordingURL']=util['format'](_0x409e('0x41'),_0x1a587f['serverUrl'],_0x29ce50['uniqueid'],md5(_0x29ce50[_0x409e('0x42')]));}else{_0x29ce50[_0x409e('0x40')]='';}headers['Authorization']=getAuth(_0x1a587f);return getUser(_0x1a587f,'')[_0x409e('0x19')](function(_0x2b0fef){_0x2f4a5e=_0x2b0fef;logger[_0x409e('0xb')](_0x409e('0x44'),_0x2f4a5e['id']);return getEndUser(_0x1a587f,_0x29ce50['calleridname'],_0x29ce50[_0x409e('0xf')]);})[_0x409e('0x19')](function(_0x366f25){_0x151ca4=_0x366f25;logger[_0x409e('0xb')](_0x409e('0x45'),_0x151ca4['id']);return getTicket(_0x1a587f,_0x2f4a5e,_0x151ca4,_0x3a9afb,_0x29ce50);})[_0x409e('0x19')](function(_0x336f6d){if(_0x336f6d){logger['info']('Ticket\x20created!');logger[_0x409e('0xb')]('The\x20Ticket\x20ID\x20is:',_0x336f6d['id']);}})[_0x409e('0x49')](function(_0xf8564c){logger[_0x409e('0x4a')](_0x409e('0x53'),JSON[_0x409e('0x2b')](_0xf8564c));});};