d3cc24e1b5dc0a3b50185df1c6aae4ab234982f9
[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 _0xe4f6=['custom_fields','keyBy','value','%s/api/v2/tickets','remoteUri','then','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','debug','[HTTP]','defaults','GET','forEach','includes','picklist','nameField','customField','content','toString','string','idField','push','variable','variableName','type','Variable','toLowerCase','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:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','stringify','outbound','recordingFormat','[OUTBOUND]','destcalleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','unmanaged','lastevent','toUpperCase','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Descriptions','Tags','name','Fields'];(function(_0x10ea3c,_0x5a2abd){var _0x25c6ee=function(_0x3e341a){while(--_0x3e341a){_0x10ea3c['push'](_0x10ea3c['shift']());}};_0x25c6ee(++_0x5a2abd);}(_0xe4f6,0x19a));var _0x6e4f=function(_0x576185,_0x5d0390){_0x576185=_0x576185-0x0;var _0x16b86b=_0xe4f6[_0x576185];return _0x16b86b;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x6e4f('0x0'));var util=require(_0x6e4f('0x1'));var Redis=require(_0x6e4f('0x2'));var intUtil=require(_0x6e4f('0x3'));var config=require('../../../../config/environment');var logger=require(_0x6e4f('0x4'))(_0x6e4f('0x5'));config[_0x6e4f('0x6')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6e4f('0x6')]));var headers={'Content-Type':_0x6e4f('0x7'),'Accept':_0x6e4f('0x7')};function emit(_0x30d3e6,_0x67dc43,_0x34e359){io['to'](_0x30d3e6)[_0x6e4f('0x8')](_0x67dc43,_0x34e359);}function getTicket(_0xda8bcd,_0x5b58c6,_0xb44360,_0x5ef76e,_0x59f853){logger[_0x6e4f('0x9')](_0x6e4f('0xa'));var _0x2a71df=_[_0x6e4f('0xb')]({'responder_id':_0x5b58c6['id'],'requester_id':_0xb44360['id'],'name':util[_0x6e4f('0xc')]('Caller\x20-\x20%s',_0x59f853[_0x6e4f('0xd')]),'phone':_0x59f853[_0x6e4f('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x5ef76e['Subjects'],_0x59f853,'\x20'),'description':intUtil[_0x6e4f('0xf')](_0x5ef76e[_0x6e4f('0x10')],_0x59f853,'<br>'),'tags':getTags(_0x5ef76e[_0x6e4f('0x11')],_0x6e4f('0x12'))},getCustomFields(_0x5ef76e[_0x6e4f('0x13')],_0x59f853));_0x2a71df[_0x6e4f('0x14')]=_['mapValues'](_[_0x6e4f('0x15')](_0x2a71df[_0x6e4f('0x14')],'id'),_0x6e4f('0x16'));return request({'uri':util[_0x6e4f('0xc')](_0x6e4f('0x17'),_0xda8bcd[_0x6e4f('0x18')]),'method':'POST','body':_0x2a71df})[_0x6e4f('0x19')](function(_0x2459a4){logger[_0x6e4f('0x9')]('Ticket\x20created!');return _0x2459a4;});}function getUser(_0x5d85c1,_0x48218b){if(intUtil[_0x6e4f('0x1a')](_0x48218b)){return request({'uri':util[_0x6e4f('0xc')](_0x6e4f('0x1b'),_0x5d85c1[_0x6e4f('0x18')]),'qs':{'email':_0x48218b}})[_0x6e4f('0x19')](function(_0x460247){if(_0x460247[_0x6e4f('0x1c')]){logger[_0x6e4f('0x9')](_0x6e4f('0x1d'));return _[_0x6e4f('0x1e')](_0x460247,function(_0x2558e8){return _0x2558e8[_0x6e4f('0x1f')][_0x6e4f('0x20')]===_0x48218b;});}else{logger[_0x6e4f('0x9')](_0x6e4f('0x21'));return request({'uri':util[_0x6e4f('0xc')]('%s/api/v2/agents/me',_0x5d85c1[_0x6e4f('0x18')])})[_0x6e4f('0x19')](function(_0x59dfb3){logger[_0x6e4f('0x9')](_0x6e4f('0x22'));return _0x59dfb3;});}});}else{logger[_0x6e4f('0x9')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x6e4f('0xc')]('%s/api/v2/agents/me',_0x5d85c1[_0x6e4f('0x18')])})[_0x6e4f('0x19')](function(_0x57ef93){logger[_0x6e4f('0x9')](_0x6e4f('0x22'));return _0x57ef93;});}}function getEndUser(_0x5f2ae9,_0x5d5e94,_0x123f19){logger['info'](_0x6e4f('0x23'),_0x123f19);return request({'uri':util[_0x6e4f('0xc')](_0x6e4f('0x24'),_0x5f2ae9[_0x6e4f('0x18')]),'qs':{'phone':_0x123f19}})[_0x6e4f('0x19')](function(_0x3c722b){if(_0x3c722b[_0x6e4f('0x1c')]){logger['info']('Enduser\x20found!');return _[_0x6e4f('0x1e')](_0x3c722b,{'phone':_0x123f19});}else{logger[_0x6e4f('0x9')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x6e4f('0xc')]('%s/api/v2/contacts',_0x5f2ae9[_0x6e4f('0x18')]),'method':'POST','body':{'name':_0x5d5e94,'phone':_0x123f19}})[_0x6e4f('0x19')](function(_0x47c6ab){logger[_0x6e4f('0x9')](_0x6e4f('0x25'));return _0x47c6ab;});}});}function getAuth(_0x2b7357){return util['format'](_0x6e4f('0x26'),new Buffer(_0x2b7357[_0x6e4f('0x27')]+':X')['toString']('base64'));}function request(_0x28f92f){logger[_0x6e4f('0x28')](_0x6e4f('0x29'),JSON['stringify'](_0x28f92f));return rp(_[_0x6e4f('0x2a')](_0x28f92f,{'method':_0x6e4f('0x2b'),'headers':headers,'json':!![]}));}function getTags(_0x20ff29,_0x40b8a6){var _0x1a66b1=[];if(_0x20ff29&&_0x20ff29[_0x6e4f('0x1c')]>0x0){_0x1a66b1=_['map'](_0x20ff29,_0x40b8a6);}return _0x1a66b1;}function getCustomFields(_0x276a69,_0x1a8e31){var _0x22d406=[];var _0x38e50f={'custom_fields':[]};if(_0x276a69[_0x6e4f('0x1c')]>0x0){_[_0x6e4f('0x2c')](_0x276a69,function(_0x257dfc){if(_[_0x6e4f('0x2d')](['string',_0x6e4f('0x2e')],_0x257dfc['type'])&&_0x257dfc[_0x6e4f('0x2f')]&&!_0x257dfc[_0x6e4f('0x30')]){_0x38e50f[_0x257dfc[_0x6e4f('0x2f')]['toLowerCase']()]=_0x257dfc[_0x6e4f('0x31')][_0x6e4f('0x32')]();}else if(_[_0x6e4f('0x2d')]([_0x6e4f('0x33'),_0x6e4f('0x2e')],_0x257dfc['type'])&&_0x257dfc[_0x6e4f('0x34')]&&_0x257dfc['customField']){_0x38e50f[_0x6e4f('0x14')][_0x6e4f('0x35')]({'id':_0x257dfc['idField'],'value':_0x257dfc[_0x6e4f('0x31')][_0x6e4f('0x32')]()});}else if(_0x257dfc['type']===_0x6e4f('0x36')&&_0x257dfc[_0x6e4f('0x37')]&&_0x257dfc[_0x6e4f('0x34')]&&_0x257dfc[_0x6e4f('0x30')]){_0x1a8e31[_0x257dfc['variableName']]&&_0x38e50f[_0x6e4f('0x14')][_0x6e4f('0x35')]({'id':_0x257dfc['idField'],'value':_0x1a8e31[_0x257dfc[_0x6e4f('0x37')]][_0x6e4f('0x32')]()});}else if(_0x257dfc[_0x6e4f('0x38')]==='customVariable'&&_0x257dfc[_0x6e4f('0x39')]&&_0x257dfc[_0x6e4f('0x39')][_0x6e4f('0x12')]&&_0x257dfc[_0x6e4f('0x34')]&&_0x257dfc['customField']){_0x1a8e31[_0x257dfc['Variable']['name'][_0x6e4f('0x3a')]()]&&_0x38e50f[_0x6e4f('0x14')][_0x6e4f('0x35')]({'id':_0x257dfc['idField'],'value':_0x1a8e31[_0x257dfc['Variable'][_0x6e4f('0x12')]['toLowerCase']()][_0x6e4f('0x32')]()});}});}return _0x38e50f;}exports['queue']=function(_0x551ea2,_0x12d7a2,_0x2813af,_0xfd51ce,_0x4fba8f,_0x1794fe){var _0x2e61ca,_0x77ac4d;_0x1794fe[_0x6e4f('0x18')]=intUtil[_0x6e4f('0x3b')](_0x1794fe['remoteUri']);_0x1794fe[_0x6e4f('0x3c')]=intUtil[_0x6e4f('0x3b')](_0x1794fe['serverUrl']);if(_0x4fba8f&&_0x4fba8f[_0x6e4f('0x3d')]){logger[_0x6e4f('0x9')](_0x6e4f('0x3e'),_0x6e4f('0x3f'));_0x12d7a2[_0x6e4f('0x40')]=util[_0x6e4f('0xc')](_0x6e4f('0x41'),_0x1794fe['serverUrl'],_0x12d7a2[_0x6e4f('0x42')],md5(_0x12d7a2[_0x6e4f('0x42')]));}else{_0x12d7a2['recordingURL']='';}headers[_0x6e4f('0x43')]=getAuth(_0x1794fe);return getUser(_0x1794fe,_0xfd51ce[_0x6e4f('0x20')])[_0x6e4f('0x19')](function(_0x102036){_0x2e61ca=_0x102036;logger[_0x6e4f('0x9')](_0x6e4f('0x44'),_0x2e61ca['id']);return getEndUser(_0x1794fe,_0x12d7a2[_0x6e4f('0xd')],_0x12d7a2['calleridnum']);})[_0x6e4f('0x19')](function(_0x5d12a3){_0x77ac4d=_0x5d12a3;logger[_0x6e4f('0x9')]('The\x20Enduser\x20ID\x20is:',_0x77ac4d['id']);return getTicket(_0x1794fe,_0x2e61ca,_0x77ac4d,_0x2813af,_0x12d7a2);})[_0x6e4f('0x19')](function(_0x2679c0){if(_0x2679c0&&_0x2679c0['id']){logger[_0x6e4f('0x9')](_0x6e4f('0x45'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2679c0['id']);logger['info'](_0x6e4f('0x3e'),_0x6e4f('0x46'));emit(util[_0x6e4f('0xc')](_0x6e4f('0x47'),_0xfd51ce[_0x6e4f('0x12')]),_0x6e4f('0x48'),{'uri':util[_0x6e4f('0xc')](_0x6e4f('0x49'),_0x1794fe[_0x6e4f('0x18')],_0x2679c0['id'])});}})[_0x6e4f('0x4a')](function(_0x51d9a8){logger[_0x6e4f('0x4b')]('[QUEUE]',JSON[_0x6e4f('0x4c')](_0x51d9a8));});};exports[_0x6e4f('0x4d')]=function(_0x5bb2dd,_0x116ab9,_0x2d0574,_0x150dc1,_0xb4ad13,_0x2653be,_0x418771){var _0x26f60d,_0x46920;_0x2653be[_0x6e4f('0x18')]=intUtil[_0x6e4f('0x3b')](_0x2653be[_0x6e4f('0x18')]);_0x2653be[_0x6e4f('0x3c')]=intUtil[_0x6e4f('0x3b')](_0x2653be['serverUrl']);if(_0x418771&&_0x418771[_0x6e4f('0x4e')]&&_0x418771[_0x6e4f('0x4e')]!=='none'){logger[_0x6e4f('0x9')](_0x6e4f('0x4f'),_0x6e4f('0x3f'));_0x116ab9[_0x6e4f('0x40')]=util['format'](_0x6e4f('0x41'),_0x2653be[_0x6e4f('0x3c')],_0x116ab9[_0x6e4f('0x42')],md5(_0x116ab9[_0x6e4f('0x42')]));}headers[_0x6e4f('0x43')]=getAuth(_0x2653be);return getUser(_0x2653be,_0x150dc1[_0x6e4f('0x20')])[_0x6e4f('0x19')](function(_0x494c8e){_0x26f60d=_0x494c8e;logger[_0x6e4f('0x9')](_0x6e4f('0x44'),_0x26f60d['id']);return getEndUser(_0x2653be,_0x116ab9['destcalleridname'],_0x116ab9[_0x6e4f('0x50')]);})['then'](function(_0x4f6b4a){_0x46920=_0x4f6b4a;logger[_0x6e4f('0x9')](_0x6e4f('0x51'),_0x46920['id']);return getTicket(_0x2653be,_0x26f60d,_0x46920,_0x2d0574,_0x116ab9);})[_0x6e4f('0x19')](function(_0x2cc29d){if(_0x2cc29d&&_0x2cc29d['id']){logger[_0x6e4f('0x9')](_0x6e4f('0x45'));logger[_0x6e4f('0x9')](_0x6e4f('0x52'),_0x2cc29d['id']);logger[_0x6e4f('0x9')](_0x6e4f('0x4f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x6e4f('0x47'),_0x150dc1[_0x6e4f('0x12')]),'trigger:browser:url',{'uri':util['format']('%s/helpdesk/tickets/%d',_0x2653be['remoteUri'],_0x2cc29d['id'])});}})[_0x6e4f('0x4a')](function(_0x30e186){logger['error'](_0x6e4f('0x4f'),JSON[_0x6e4f('0x4c')](_0x30e186));});};exports[_0x6e4f('0x53')]=function(_0x4c723c,_0x1b8f48,_0x1b9a7d,_0xa25775,_0x250aed,_0x47976d){var _0x1960b9,_0x26218e;_0x47976d['remoteUri']=intUtil[_0x6e4f('0x3b')](_0x47976d[_0x6e4f('0x18')]);_0x47976d[_0x6e4f('0x3c')]=intUtil['stripTrailingSlash'](_0x47976d[_0x6e4f('0x3c')]);if(_0x250aed&&_0x250aed['monitor_format']){logger[_0x6e4f('0x9')]('['+_0x1b8f48[_0x6e4f('0x54')][_0x6e4f('0x55')]()+']',_0x6e4f('0x3f'));_0x1b8f48[_0x6e4f('0x40')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x47976d[_0x6e4f('0x3c')],_0x1b8f48[_0x6e4f('0x42')],md5(_0x1b8f48[_0x6e4f('0x42')]));}else{_0x1b8f48[_0x6e4f('0x40')]='';}headers[_0x6e4f('0x43')]=getAuth(_0x47976d);return getUser(_0x47976d,'')[_0x6e4f('0x19')](function(_0x3936d5){_0x1960b9=_0x3936d5;logger[_0x6e4f('0x9')](_0x6e4f('0x44'),_0x1960b9['id']);return getEndUser(_0x47976d,_0x1b8f48[_0x6e4f('0xd')],_0x1b8f48[_0x6e4f('0xe')]);})['then'](function(_0x3a285d){_0x26218e=_0x3a285d;logger['info']('The\x20Enduser\x20ID\x20is:',_0x26218e['id']);return getTicket(_0x47976d,_0x1960b9,_0x26218e,_0x1b9a7d,_0x1b8f48);})['then'](function(_0x18b2e1){if(_0x18b2e1){logger[_0x6e4f('0x9')](_0x6e4f('0x45'));logger[_0x6e4f('0x9')](_0x6e4f('0x52'),_0x18b2e1['id']);}})[_0x6e4f('0x4a')](function(_0x1ed202){logger['error']('['+_0x1b8f48['lastevent'][_0x6e4f('0x55')]()+']',JSON[_0x6e4f('0x4c')](_0x1ed202));});};