Built motion from commit d13fb11b.|2.6.34
[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 _0x5651=['stringify','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Ticket\x20ID\x20is:','%s/helpdesk/tickets/%d','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','calleridnum','lastevent','lodash','md5','util','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','calleridname','getString','Descriptions','<br>','Tags','name','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','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\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','includes','picklist','type','nameField','customField','toLowerCase','string','idField','push','content','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','[QUEUE]'];(function(_0x1a86c9,_0x51cc3b){var _0xdf85e9=function(_0x5b2811){while(--_0x5b2811){_0x1a86c9['push'](_0x1a86c9['shift']());}};_0xdf85e9(++_0x51cc3b);}(_0x5651,0x69));var _0x1565=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5651[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x1565('0x0'));var rp=require('request-promise');var md5=require(_0x1565('0x1'));var util=require(_0x1565('0x2'));var Redis=require('ioredis');var intUtil=require(_0x1565('0x3'));var config=require('../../../../config/environment');var logger=require(_0x1565('0x4'))(_0x1565('0x5'));config[_0x1565('0x6')]=_[_0x1565('0x7')](config['redis'],{'host':_0x1565('0x8'),'port':0x18eb});var io=require(_0x1565('0x9'))(new Redis(config[_0x1565('0x6')]));var headers={'Content-Type':_0x1565('0xa'),'Accept':'application/json'};function emit(_0x1e7345,_0x53021f,_0x25f368){io['to'](_0x1e7345)[_0x1565('0xb')](_0x53021f,_0x25f368);}function getTicket(_0x30a63f,_0x180340,_0x576b9d,_0x52538e,_0x39fa70){logger[_0x1565('0xc')](_0x1565('0xd'));var _0x7634b5=_[_0x1565('0xe')]({'responder_id':_0x180340['id'],'requester_id':_0x576b9d['id'],'name':util[_0x1565('0xf')]('Caller\x20-\x20%s',_0x39fa70[_0x1565('0x10')]),'phone':_0x39fa70['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x1565('0x11')](_0x52538e['Subjects'],_0x39fa70,'\x20'),'description':intUtil[_0x1565('0x11')](_0x52538e[_0x1565('0x12')],_0x39fa70,_0x1565('0x13')),'tags':getTags(_0x52538e[_0x1565('0x14')],_0x1565('0x15'))},getCustomFields(_0x52538e['Fields'],_0x39fa70));_0x7634b5[_0x1565('0x16')]=_[_0x1565('0x17')](_[_0x1565('0x18')](_0x7634b5['custom_fields'],'id'),_0x1565('0x19'));return request({'uri':util[_0x1565('0xf')](_0x1565('0x1a'),_0x30a63f[_0x1565('0x1b')]),'method':_0x1565('0x1c'),'body':_0x7634b5})[_0x1565('0x1d')](function(_0x152bd3){logger[_0x1565('0xc')](_0x1565('0x1e'));return _0x152bd3;});}function getUser(_0x4570b4,_0xa8263a){if(intUtil['validateEmail'](_0xa8263a)){return request({'uri':util[_0x1565('0xf')](_0x1565('0x1f'),_0x4570b4[_0x1565('0x1b')]),'qs':{'email':_0xa8263a}})[_0x1565('0x1d')](function(_0x4c8d8c){if(_0x4c8d8c[_0x1565('0x20')]){logger['info'](_0x1565('0x21'));return _[_0x1565('0x22')](_0x4c8d8c,function(_0x83638a){return _0x83638a[_0x1565('0x23')]['email']===_0xa8263a;});}else{logger[_0x1565('0xc')](_0x1565('0x24'));return request({'uri':util['format'](_0x1565('0x25'),_0x4570b4[_0x1565('0x1b')])})[_0x1565('0x1d')](function(_0x1520be){logger[_0x1565('0xc')]('Admin\x20account\x20selected.');return _0x1520be;});}});}else{logger['info'](_0x1565('0x26'));return request({'uri':util[_0x1565('0xf')](_0x1565('0x25'),_0x4570b4[_0x1565('0x1b')])})[_0x1565('0x1d')](function(_0x39e54c){logger[_0x1565('0xc')]('Admin\x20account\x20selected.');return _0x39e54c;});}}function getEndUser(_0x5a91d3,_0x554c32,_0x3650b9){logger[_0x1565('0xc')](_0x1565('0x27'),_0x3650b9);return request({'uri':util[_0x1565('0xf')](_0x1565('0x28'),_0x5a91d3[_0x1565('0x1b')]),'qs':{'phone':_0x3650b9}})['then'](function(_0x29de0c){if(_0x29de0c['length']){logger[_0x1565('0xc')]('Enduser\x20found!');return _[_0x1565('0x22')](_0x29de0c,{'phone':_0x3650b9});}else{logger['info'](_0x1565('0x29'));return request({'uri':util[_0x1565('0xf')](_0x1565('0x28'),_0x5a91d3[_0x1565('0x1b')]),'method':'POST','body':{'name':_0x554c32,'phone':_0x3650b9}})['then'](function(_0x1a0434){logger['info'](_0x1565('0x2a'));return _0x1a0434;});}});}function getAuth(_0x49d1b1){return util[_0x1565('0xf')](_0x1565('0x2b'),new Buffer(_0x49d1b1['apiKey']+':X')[_0x1565('0x2c')](_0x1565('0x2d')));}function request(_0x3d43d7){logger[_0x1565('0x2e')](_0x1565('0x2f'),JSON['stringify'](_0x3d43d7));return rp(_[_0x1565('0x7')](_0x3d43d7,{'method':_0x1565('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x2ca99e,_0x42ff9f){var _0x3e938c=[];if(_0x2ca99e&&_0x2ca99e['length']>0x0){_0x3e938c=_[_0x1565('0x31')](_0x2ca99e,_0x42ff9f);}return _0x3e938c;}function getCustomFields(_0x2bcaa1,_0x4e042b){var _0x5a74e2=[];var _0x593de2={'custom_fields':[]};if(_0x2bcaa1[_0x1565('0x20')]>0x0){_['forEach'](_0x2bcaa1,function(_0x119c60){if(_[_0x1565('0x32')](['string',_0x1565('0x33')],_0x119c60[_0x1565('0x34')])&&_0x119c60[_0x1565('0x35')]&&!_0x119c60[_0x1565('0x36')]){_0x593de2[_0x119c60[_0x1565('0x35')][_0x1565('0x37')]()]=_0x119c60['content'][_0x1565('0x2c')]();}else if(_['includes']([_0x1565('0x38'),_0x1565('0x33')],_0x119c60['type'])&&_0x119c60[_0x1565('0x39')]&&_0x119c60[_0x1565('0x36')]){_0x593de2[_0x1565('0x16')][_0x1565('0x3a')]({'id':_0x119c60[_0x1565('0x39')],'value':_0x119c60[_0x1565('0x3b')][_0x1565('0x2c')]()});}else if(_0x119c60[_0x1565('0x34')]===_0x1565('0x3c')&&_0x119c60[_0x1565('0x3d')]&&_0x119c60[_0x1565('0x39')]&&_0x119c60[_0x1565('0x36')]){_0x4e042b[_0x119c60[_0x1565('0x3d')]]&&_0x593de2[_0x1565('0x16')]['push']({'id':_0x119c60[_0x1565('0x39')],'value':_0x4e042b[_0x119c60[_0x1565('0x3d')]]['toString']()});}else if(_0x119c60[_0x1565('0x34')]===_0x1565('0x3e')&&_0x119c60[_0x1565('0x3f')]&&_0x119c60[_0x1565('0x3f')][_0x1565('0x15')]&&_0x119c60[_0x1565('0x39')]&&_0x119c60[_0x1565('0x36')]){_0x4e042b[_0x119c60[_0x1565('0x3f')][_0x1565('0x15')]['toLowerCase']()]&&_0x593de2[_0x1565('0x16')]['push']({'id':_0x119c60['idField'],'value':_0x4e042b[_0x119c60['Variable'][_0x1565('0x15')][_0x1565('0x37')]()]['toString']()});}});}return _0x593de2;}exports[_0x1565('0x40')]=function(_0x34e909,_0x83834a,_0xbc3668,_0x1074a3,_0x1e09af,_0x17dded){var _0x51aa0a,_0x4e69f5;_0x17dded['remoteUri']=intUtil[_0x1565('0x41')](_0x17dded[_0x1565('0x1b')]);_0x17dded['serverUrl']=intUtil[_0x1565('0x41')](_0x17dded[_0x1565('0x42')]);if(_0x1e09af&&_0x1e09af['monitor_format']){logger[_0x1565('0xc')]('[QUEUE]','Recording\x20is\x20enabled!');_0x83834a[_0x1565('0x43')]=util[_0x1565('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x17dded[_0x1565('0x42')],_0x83834a['uniqueid'],md5(_0x83834a[_0x1565('0x44')]));}else{_0x83834a[_0x1565('0x43')]='';}headers[_0x1565('0x45')]=getAuth(_0x17dded);return getUser(_0x17dded,_0x1074a3[_0x1565('0x46')])[_0x1565('0x1d')](function(_0x51a269){_0x51aa0a=_0x51a269;logger['info'](_0x1565('0x47'),_0x51aa0a['id']);return getEndUser(_0x17dded,_0x83834a[_0x1565('0x10')],_0x83834a['calleridnum']);})[_0x1565('0x1d')](function(_0x53d56f){_0x4e69f5=_0x53d56f;logger[_0x1565('0xc')](_0x1565('0x48'),_0x4e69f5['id']);return getTicket(_0x17dded,_0x51aa0a,_0x4e69f5,_0xbc3668,_0x83834a);})['then'](function(_0x12865b){if(_0x12865b&&_0x12865b['id']){logger['info']('Ticket\x20created!');logger[_0x1565('0xc')]('The\x20Ticket\x20ID\x20is:',_0x12865b['id']);logger['info']('[QUEUE]',_0x1565('0x49'));emit(util[_0x1565('0xf')](_0x1565('0x4a'),_0x1074a3[_0x1565('0x15')]),_0x1565('0x4b'),{'uri':util[_0x1565('0xf')]('%s/helpdesk/tickets/%d',_0x17dded[_0x1565('0x1b')],_0x12865b['id'])});}})[_0x1565('0x4c')](function(_0x1663fd){logger[_0x1565('0x4d')](_0x1565('0x4e'),JSON[_0x1565('0x4f')](_0x1663fd));});};exports[_0x1565('0x50')]=function(_0x22047b,_0x511331,_0x5b9403,_0x4be230,_0x2fbc31,_0x411e6b,_0x6f05ba){var _0x178588,_0x1ea53b;_0x411e6b[_0x1565('0x1b')]=intUtil[_0x1565('0x41')](_0x411e6b['remoteUri']);_0x411e6b[_0x1565('0x42')]=intUtil[_0x1565('0x41')](_0x411e6b[_0x1565('0x42')]);if(_0x6f05ba&&_0x6f05ba[_0x1565('0x51')]&&_0x6f05ba[_0x1565('0x51')]!==_0x1565('0x52')){logger[_0x1565('0xc')](_0x1565('0x53'),_0x1565('0x54'));_0x511331['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x411e6b[_0x1565('0x42')],_0x511331['uniqueid'],md5(_0x511331[_0x1565('0x44')]));}headers[_0x1565('0x45')]=getAuth(_0x411e6b);return getUser(_0x411e6b,_0x4be230[_0x1565('0x46')])['then'](function(_0x5d0bed){_0x178588=_0x5d0bed;logger[_0x1565('0xc')](_0x1565('0x47'),_0x178588['id']);return getEndUser(_0x411e6b,_0x511331['destcalleridname'],_0x511331[_0x1565('0x55')]);})[_0x1565('0x1d')](function(_0x23a33b){_0x1ea53b=_0x23a33b;logger[_0x1565('0xc')](_0x1565('0x48'),_0x1ea53b['id']);return getTicket(_0x411e6b,_0x178588,_0x1ea53b,_0x5b9403,_0x511331);})[_0x1565('0x1d')](function(_0x3ac52d){if(_0x3ac52d&&_0x3ac52d['id']){logger['info'](_0x1565('0x1e'));logger[_0x1565('0xc')](_0x1565('0x56'),_0x3ac52d['id']);logger[_0x1565('0xc')](_0x1565('0x53'),_0x1565('0x49'));emit(util[_0x1565('0xf')]('user:%s',_0x4be230['name']),_0x1565('0x4b'),{'uri':util[_0x1565('0xf')](_0x1565('0x57'),_0x411e6b[_0x1565('0x1b')],_0x3ac52d['id'])});}})[_0x1565('0x4c')](function(_0xef2e53){logger[_0x1565('0x4d')](_0x1565('0x53'),JSON[_0x1565('0x4f')](_0xef2e53));});};exports['unmanaged']=function(_0x59e992,_0x4e3e92,_0x41960b,_0x2d62b3,_0x2b8d97,_0xb60391){var _0x3feb9d,_0x26d5d0;_0xb60391[_0x1565('0x1b')]=intUtil[_0x1565('0x41')](_0xb60391['remoteUri']);_0xb60391[_0x1565('0x42')]=intUtil[_0x1565('0x41')](_0xb60391['serverUrl']);if(_0x2b8d97&&_0x2b8d97[_0x1565('0x58')]){logger[_0x1565('0xc')]('['+_0x4e3e92['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x4e3e92['recordingURL']=util[_0x1565('0xf')](_0x1565('0x59'),_0xb60391[_0x1565('0x42')],_0x4e3e92[_0x1565('0x44')],md5(_0x4e3e92[_0x1565('0x44')]));}else{_0x4e3e92[_0x1565('0x43')]='';}headers[_0x1565('0x45')]=getAuth(_0xb60391);return getUser(_0xb60391,'')[_0x1565('0x1d')](function(_0x2673c2){_0x3feb9d=_0x2673c2;logger[_0x1565('0xc')]('The\x20User\x20ID\x20is:',_0x3feb9d['id']);return getEndUser(_0xb60391,_0x4e3e92[_0x1565('0x10')],_0x4e3e92[_0x1565('0x5a')]);})[_0x1565('0x1d')](function(_0x4cd187){_0x26d5d0=_0x4cd187;logger[_0x1565('0xc')](_0x1565('0x48'),_0x26d5d0['id']);return getTicket(_0xb60391,_0x3feb9d,_0x26d5d0,_0x41960b,_0x4e3e92);})[_0x1565('0x1d')](function(_0x389d83){if(_0x389d83){logger[_0x1565('0xc')](_0x1565('0x1e'));logger[_0x1565('0xc')]('The\x20Ticket\x20ID\x20is:',_0x389d83['id']);}})[_0x1565('0x4c')](function(_0x231fa7){logger['error']('['+_0x4e3e92[_0x1565('0x5b')]['toUpperCase']()+']',JSON[_0x1565('0x4f')](_0x231fa7));});};