Built motion from commit (unavailable).|2.5.10
[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 _0xb30a=['%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','apiKey','base64','[HTTP]','GET','map','forEach','nameField','toLowerCase','content','toString','string','idField','push','type','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','outbound','destcalleridname','[OUTBOUND]','error','stringify','unmanaged','lastevent','toUpperCase','lodash','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','name','Fields','custom_fields','value','remoteUri','POST','then','info','Ticket\x20created!','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0x56386f,_0x8deae3){var _0x243de3=function(_0x566aa5){while(--_0x566aa5){_0x56386f['push'](_0x56386f['shift']());}};_0x243de3(++_0x8deae3);}(_0xb30a,0x183));var _0xab30=function(_0x38e8d0,_0x1a0385){_0x38e8d0=_0x38e8d0-0x0;var _0x38cc5b=_0xb30a[_0x38e8d0];return _0x38cc5b;};'use strict';var _=require(_0xab30('0x0'));var rp=require('request-promise');var md5=require(_0xab30('0x1'));var util=require(_0xab30('0x2'));var Redis=require(_0xab30('0x3'));var intUtil=require(_0xab30('0x4'));var config=require(_0xab30('0x5'));var logger=require('../../../../config/logger')('freshdesk');config[_0xab30('0x6')]=_[_0xab30('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xab30('0x8'))(new Redis(config[_0xab30('0x6')]));var headers={'Content-Type':_0xab30('0x9'),'Accept':_0xab30('0x9')};function emit(_0x387cb2,_0x120302,_0x4e5a07){io['to'](_0x387cb2)[_0xab30('0xa')](_0x120302,_0x4e5a07);}function getTicket(_0x3f8d1a,_0x3844b0,_0x11ef28,_0x234607,_0x5926f6){logger['info'](_0xab30('0xb'));var _0x3919a7=_['merge']({'responder_id':_0x3844b0['id'],'requester_id':_0x11ef28['id'],'name':util[_0xab30('0xc')](_0xab30('0xd'),_0x5926f6[_0xab30('0xe')]),'phone':_0x5926f6[_0xab30('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xab30('0x10')](_0x234607[_0xab30('0x11')],_0x5926f6,'\x20'),'description':intUtil['getString'](_0x234607[_0xab30('0x12')],_0x5926f6,_0xab30('0x13')),'tags':getTags(_0x234607['Tags'],_0xab30('0x14'))},getCustomFields(_0x234607[_0xab30('0x15')],_0x5926f6));_0x3919a7[_0xab30('0x16')]=_['mapValues'](_['keyBy'](_0x3919a7['custom_fields'],'id'),_0xab30('0x17'));return request({'uri':util['format']('%s/api/v2/tickets',_0x3f8d1a[_0xab30('0x18')]),'method':_0xab30('0x19'),'body':_0x3919a7})[_0xab30('0x1a')](function(_0x4561f3){logger[_0xab30('0x1b')](_0xab30('0x1c'));return _0x4561f3;});}function getUser(_0x114ddf,_0x13f97a){if(intUtil['validateEmail'](_0x13f97a)){return request({'uri':util['format']('%s/api/v2/agents',_0x114ddf[_0xab30('0x18')]),'qs':{'email':_0x13f97a}})[_0xab30('0x1a')](function(_0x1dd92e){if(_0x1dd92e['length']){logger[_0xab30('0x1b')](_0xab30('0x1d'));return _[_0xab30('0x1e')](_0x1dd92e,function(_0x350db5){return _0x350db5[_0xab30('0x1f')]['email']===_0x13f97a;});}else{logger['info'](_0xab30('0x20'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x114ddf['remoteUri'])})[_0xab30('0x1a')](function(_0x3a3630){logger[_0xab30('0x1b')]('Admin\x20account\x20selected.');return _0x3a3630;});}});}else{logger[_0xab30('0x1b')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xab30('0x21'),_0x114ddf[_0xab30('0x18')])})[_0xab30('0x1a')](function(_0xdbc9fb){logger['info'](_0xab30('0x22'));return _0xdbc9fb;});}}function getEndUser(_0x3d2183,_0x2dd6d6,_0x4d749f){logger[_0xab30('0x1b')](_0xab30('0x23'),_0x4d749f);return request({'uri':util[_0xab30('0xc')]('%s/api/v2/contacts',_0x3d2183[_0xab30('0x18')]),'qs':{'phone':_0x4d749f}})[_0xab30('0x1a')](function(_0x23c12f){if(_0x23c12f[_0xab30('0x24')]){logger['info'](_0xab30('0x25'));return _['find'](_0x23c12f,{'phone':_0x4d749f});}else{logger[_0xab30('0x1b')](_0xab30('0x26'));return request({'uri':util['format'](_0xab30('0x27'),_0x3d2183[_0xab30('0x18')]),'method':'POST','body':{'name':_0x2dd6d6,'phone':_0x4d749f}})[_0xab30('0x1a')](function(_0x4ee5c1){logger['info'](_0xab30('0x28'));return _0x4ee5c1;});}});}function getAuth(_0x5d6e22){return util['format']('Basic\x20%s',new Buffer(_0x5d6e22[_0xab30('0x29')]+':X')['toString'](_0xab30('0x2a')));}function request(_0x145e40){logger['debug'](_0xab30('0x2b'),JSON['stringify'](_0x145e40));return rp(_[_0xab30('0x7')](_0x145e40,{'method':_0xab30('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x388757,_0x16ded3){var _0x5cc143=[];if(_0x388757&&_0x388757['length']>0x0){_0x5cc143=_[_0xab30('0x2d')](_0x388757,_0x16ded3);}return _0x5cc143;}function getCustomFields(_0x112a2c,_0x289a64){var _0x44ac10=[];var _0x57af4c={'custom_fields':[]};if(_0x112a2c[_0xab30('0x24')]>0x0){_[_0xab30('0x2e')](_0x112a2c,function(_0x5e2dba){if(_0x5e2dba['type']==='string'&&_0x5e2dba[_0xab30('0x2f')]&&!_0x5e2dba['customField']){_0x57af4c[_0x5e2dba[_0xab30('0x2f')][_0xab30('0x30')]()]=_0x5e2dba[_0xab30('0x31')][_0xab30('0x32')]();}else if(_0x5e2dba['type']===_0xab30('0x33')&&_0x5e2dba[_0xab30('0x34')]&&_0x5e2dba['customField']){_0x57af4c[_0xab30('0x16')][_0xab30('0x35')]({'id':_0x5e2dba[_0xab30('0x34')],'value':_0x5e2dba['content']['toString']()});}else if(_0x5e2dba[_0xab30('0x36')]===_0xab30('0x37')&&_0x5e2dba['variableName']&&_0x5e2dba[_0xab30('0x34')]&&_0x5e2dba['customField']){_0x289a64[_0x5e2dba[_0xab30('0x38')]]&&_0x57af4c[_0xab30('0x16')]['push']({'id':_0x5e2dba[_0xab30('0x34')],'value':_0x289a64[_0x5e2dba[_0xab30('0x38')]]['toString']()});}else if(_0x5e2dba['type']===_0xab30('0x39')&&_0x5e2dba['Variable']&&_0x5e2dba['Variable'][_0xab30('0x14')]&&_0x5e2dba['idField']&&_0x5e2dba['customField']){_0x289a64[_0x5e2dba[_0xab30('0x3a')][_0xab30('0x14')]['toLowerCase']()]&&_0x57af4c[_0xab30('0x16')]['push']({'id':_0x5e2dba[_0xab30('0x34')],'value':_0x289a64[_0x5e2dba[_0xab30('0x3a')][_0xab30('0x14')][_0xab30('0x30')]()][_0xab30('0x32')]()});}});}return _0x57af4c;}exports['queue']=function(_0x3a5de1,_0x1993a6,_0x407a85,_0x5f4cc8,_0x47f262,_0x27807a){var _0x1ef096,_0x14ef2f;_0x27807a['remoteUri']=intUtil[_0xab30('0x3b')](_0x27807a[_0xab30('0x18')]);_0x27807a[_0xab30('0x3c')]=intUtil['stripTrailingSlash'](_0x27807a[_0xab30('0x3c')]);if(_0x47f262&&_0x47f262[_0xab30('0x3d')]){logger[_0xab30('0x1b')](_0xab30('0x3e'),_0xab30('0x3f'));_0x1993a6[_0xab30('0x40')]=util['format'](_0xab30('0x41'),_0x27807a['serverUrl'],_0x1993a6['uniqueid'],md5(_0x1993a6[_0xab30('0x42')]));}else{_0x1993a6[_0xab30('0x40')]='';}headers[_0xab30('0x43')]=getAuth(_0x27807a);return getUser(_0x27807a,_0x5f4cc8[_0xab30('0x44')])[_0xab30('0x1a')](function(_0x4c9813){_0x1ef096=_0x4c9813;logger[_0xab30('0x1b')](_0xab30('0x45'),_0x1ef096['id']);return getEndUser(_0x27807a,_0x1993a6[_0xab30('0xe')],_0x1993a6['calleridnum']);})['then'](function(_0x463f70){_0x14ef2f=_0x463f70;logger['info'](_0xab30('0x46'),_0x14ef2f['id']);return getTicket(_0x27807a,_0x1ef096,_0x14ef2f,_0x407a85,_0x1993a6);})[_0xab30('0x1a')](function(_0x2f568c){if(_0x2f568c&&_0x2f568c['id']){logger[_0xab30('0x1b')](_0xab30('0x1c'));logger['info'](_0xab30('0x47'),_0x2f568c['id']);logger[_0xab30('0x1b')](_0xab30('0x3e'),_0xab30('0x48'));emit(util[_0xab30('0xc')](_0xab30('0x49'),_0x5f4cc8[_0xab30('0x14')]),'trigger:browser:url',{'uri':util[_0xab30('0xc')](_0xab30('0x4a'),_0x27807a[_0xab30('0x18')],_0x2f568c['id'])});}})[_0xab30('0x4b')](function(_0x269613){logger['error'](_0xab30('0x3e'),JSON['stringify'](_0x269613));});};exports[_0xab30('0x4c')]=function(_0x33076e,_0x290d97,_0x4177bd,_0x1b58a5,_0xb0797f,_0x575943,_0x2d75a7){var _0x2f5e00,_0x3c0fdd;_0x575943[_0xab30('0x18')]=intUtil[_0xab30('0x3b')](_0x575943['remoteUri']);_0x575943[_0xab30('0x3c')]=intUtil['stripTrailingSlash'](_0x575943[_0xab30('0x3c')]);if(_0x2d75a7&&_0x2d75a7['recordingFormat']&&_0x2d75a7['recordingFormat']!=='none'){logger[_0xab30('0x1b')]('[OUTBOUND]',_0xab30('0x3f'));_0x290d97[_0xab30('0x40')]=util['format'](_0xab30('0x41'),_0x575943['serverUrl'],_0x290d97[_0xab30('0x42')],md5(_0x290d97[_0xab30('0x42')]));}headers[_0xab30('0x43')]=getAuth(_0x575943);return getUser(_0x575943,_0x1b58a5['email'])['then'](function(_0x262506){_0x2f5e00=_0x262506;logger['info'](_0xab30('0x45'),_0x2f5e00['id']);return getEndUser(_0x575943,_0x290d97[_0xab30('0x4d')],_0x290d97['destcalleridnum']);})['then'](function(_0x7b2b47){_0x3c0fdd=_0x7b2b47;logger[_0xab30('0x1b')](_0xab30('0x46'),_0x3c0fdd['id']);return getTicket(_0x575943,_0x2f5e00,_0x3c0fdd,_0x4177bd,_0x290d97);})[_0xab30('0x1a')](function(_0x38a324){if(_0x38a324&&_0x38a324['id']){logger['info']('Ticket\x20created!');logger[_0xab30('0x1b')](_0xab30('0x47'),_0x38a324['id']);logger['info'](_0xab30('0x4e'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xab30('0xc')](_0xab30('0x49'),_0x1b58a5[_0xab30('0x14')]),'trigger:browser:url',{'uri':util['format'](_0xab30('0x4a'),_0x575943[_0xab30('0x18')],_0x38a324['id'])});}})[_0xab30('0x4b')](function(_0x3d700a){logger[_0xab30('0x4f')](_0xab30('0x4e'),JSON[_0xab30('0x50')](_0x3d700a));});};exports[_0xab30('0x51')]=function(_0x2c2b44,_0x31130b,_0x4d20dc,_0x2106fd,_0xd3cc7d,_0x17a018){var _0x3b8d7b,_0x58774e;_0x17a018[_0xab30('0x18')]=intUtil['stripTrailingSlash'](_0x17a018[_0xab30('0x18')]);_0x17a018['serverUrl']=intUtil[_0xab30('0x3b')](_0x17a018[_0xab30('0x3c')]);if(_0xd3cc7d&&_0xd3cc7d[_0xab30('0x3d')]){logger[_0xab30('0x1b')]('['+_0x31130b[_0xab30('0x52')][_0xab30('0x53')]()+']','Recording\x20is\x20enabled!');_0x31130b[_0xab30('0x40')]=util[_0xab30('0xc')](_0xab30('0x41'),_0x17a018['serverUrl'],_0x31130b[_0xab30('0x42')],md5(_0x31130b[_0xab30('0x42')]));}else{_0x31130b[_0xab30('0x40')]='';}headers[_0xab30('0x43')]=getAuth(_0x17a018);return getUser(_0x17a018,'')[_0xab30('0x1a')](function(_0x1e65b4){_0x3b8d7b=_0x1e65b4;logger[_0xab30('0x1b')](_0xab30('0x45'),_0x3b8d7b['id']);return getEndUser(_0x17a018,_0x31130b[_0xab30('0xe')],_0x31130b['calleridnum']);})['then'](function(_0x40d58a){_0x58774e=_0x40d58a;logger['info']('The\x20Enduser\x20ID\x20is:',_0x58774e['id']);return getTicket(_0x17a018,_0x3b8d7b,_0x58774e,_0x4d20dc,_0x31130b);})[_0xab30('0x1a')](function(_0x1e4d7f){if(_0x1e4d7f){logger[_0xab30('0x1b')](_0xab30('0x1c'));logger[_0xab30('0x1b')](_0xab30('0x47'),_0x1e4d7f['id']);}})[_0xab30('0x4b')](function(_0x38344b){logger[_0xab30('0x4f')]('['+_0x31130b['lastevent'][_0xab30('0x53')]()+']',JSON[_0xab30('0x50')](_0x38344b));});};