Built motion from commit 85328c08.|2.5.50
[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 _0xd4a3=['serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','stringify','outbound','recordingFormat','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','%s/helpdesk/tickets/%d','lastevent','toUpperCase','lodash','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','name','mapValues','keyBy','custom_fields','%s/api/v2/tickets','remoteUri','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','Agent\x20found!','email','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','length','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','POST','Basic\x20%s','apiKey','toString','debug','defaults','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variableName','Variable','queue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd4a3,0x172));var _0x3d4a=function(_0x57be38,_0x11d5ee){_0x57be38=_0x57be38-0x0;var _0x37ac0a=_0xd4a3[_0x57be38];return _0x37ac0a;};'use strict';var _=require(_0x3d4a('0x0'));var rp=require('request-promise');var md5=require(_0x3d4a('0x1'));var util=require(_0x3d4a('0x2'));var Redis=require(_0x3d4a('0x3'));var intUtil=require('./util');var config=require(_0x3d4a('0x4'));var logger=require(_0x3d4a('0x5'))(_0x3d4a('0x6'));config[_0x3d4a('0x7')]=_['defaults'](config[_0x3d4a('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x3d4a('0x8'))(new Redis(config[_0x3d4a('0x7')]));var headers={'Content-Type':_0x3d4a('0x9'),'Accept':_0x3d4a('0x9')};function emit(_0x5b36f7,_0x312e38,_0x21ded3){io['to'](_0x5b36f7)[_0x3d4a('0xa')](_0x312e38,_0x21ded3);}function getTicket(_0x3b4c6a,_0x5f0610,_0x118092,_0x56de3b,_0x1c584e){logger[_0x3d4a('0xb')](_0x3d4a('0xc'));var _0x3bb655=_['merge']({'responder_id':_0x5f0610['id'],'requester_id':_0x118092['id'],'name':util[_0x3d4a('0xd')](_0x3d4a('0xe'),_0x1c584e[_0x3d4a('0xf')]),'phone':_0x1c584e[_0x3d4a('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x3d4a('0x11')](_0x56de3b[_0x3d4a('0x12')],_0x1c584e,'\x20'),'description':intUtil[_0x3d4a('0x11')](_0x56de3b[_0x3d4a('0x13')],_0x1c584e,_0x3d4a('0x14')),'tags':getTags(_0x56de3b['Tags'],_0x3d4a('0x15'))},getCustomFields(_0x56de3b['Fields'],_0x1c584e));_0x3bb655['custom_fields']=_[_0x3d4a('0x16')](_[_0x3d4a('0x17')](_0x3bb655[_0x3d4a('0x18')],'id'),'value');return request({'uri':util[_0x3d4a('0xd')](_0x3d4a('0x19'),_0x3b4c6a[_0x3d4a('0x1a')]),'method':'POST','body':_0x3bb655})['then'](function(_0x4f1f8d){logger[_0x3d4a('0xb')](_0x3d4a('0x1b'));return _0x4f1f8d;});}function getUser(_0x55d40e,_0x216ea8){if(intUtil[_0x3d4a('0x1c')](_0x216ea8)){return request({'uri':util['format'](_0x3d4a('0x1d'),_0x55d40e[_0x3d4a('0x1a')]),'qs':{'email':_0x216ea8}})[_0x3d4a('0x1e')](function(_0x3381bd){if(_0x3381bd['length']){logger[_0x3d4a('0xb')](_0x3d4a('0x1f'));return _['find'](_0x3381bd,function(_0x234957){return _0x234957['contact'][_0x3d4a('0x20')]===_0x216ea8;});}else{logger[_0x3d4a('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x3d4a('0xd')]('%s/api/v2/agents/me',_0x55d40e[_0x3d4a('0x1a')])})['then'](function(_0x6024f1){logger['info']('Admin\x20account\x20selected.');return _0x6024f1;});}});}else{logger['info'](_0x3d4a('0x21'));return request({'uri':util[_0x3d4a('0xd')](_0x3d4a('0x22'),_0x55d40e['remoteUri'])})[_0x3d4a('0x1e')](function(_0x514c95){logger[_0x3d4a('0xb')]('Admin\x20account\x20selected.');return _0x514c95;});}}function getEndUser(_0x2ee441,_0x5decae,_0x82d314){logger[_0x3d4a('0xb')](_0x3d4a('0x23'),_0x82d314);return request({'uri':util['format']('%s/api/v2/contacts',_0x2ee441[_0x3d4a('0x1a')]),'qs':{'phone':_0x82d314}})['then'](function(_0x4f59e7){if(_0x4f59e7[_0x3d4a('0x24')]){logger[_0x3d4a('0xb')]('Enduser\x20found!');return _['find'](_0x4f59e7,{'phone':_0x82d314});}else{logger[_0x3d4a('0xb')](_0x3d4a('0x25'));return request({'uri':util[_0x3d4a('0xd')](_0x3d4a('0x26'),_0x2ee441[_0x3d4a('0x1a')]),'method':_0x3d4a('0x27'),'body':{'name':_0x5decae,'phone':_0x82d314}})[_0x3d4a('0x1e')](function(_0xc08f29){logger['info']('Enduser\x20created.');return _0xc08f29;});}});}function getAuth(_0x45e80b){return util['format'](_0x3d4a('0x28'),new Buffer(_0x45e80b[_0x3d4a('0x29')]+':X')[_0x3d4a('0x2a')]('base64'));}function request(_0x2fa6f7){logger[_0x3d4a('0x2b')]('[HTTP]',JSON['stringify'](_0x2fa6f7));return rp(_[_0x3d4a('0x2c')](_0x2fa6f7,{'method':_0x3d4a('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x3d7a8d,_0x432650){var _0x13e3b6=[];if(_0x3d7a8d&&_0x3d7a8d[_0x3d4a('0x24')]>0x0){_0x13e3b6=_[_0x3d4a('0x2e')](_0x3d7a8d,_0x432650);}return _0x13e3b6;}function getCustomFields(_0x3ed61a,_0x2b7f94){var _0x274d78=[];var _0x54ab6c={'custom_fields':[]};if(_0x3ed61a[_0x3d4a('0x24')]>0x0){_[_0x3d4a('0x2f')](_0x3ed61a,function(_0x1329cf){if(_['includes']([_0x3d4a('0x30'),_0x3d4a('0x31')],_0x1329cf[_0x3d4a('0x32')])&&_0x1329cf[_0x3d4a('0x33')]&&!_0x1329cf[_0x3d4a('0x34')]){_0x54ab6c[_0x1329cf[_0x3d4a('0x33')][_0x3d4a('0x35')]()]=_0x1329cf[_0x3d4a('0x36')][_0x3d4a('0x2a')]();}else if(_['includes']([_0x3d4a('0x30'),_0x3d4a('0x31')],_0x1329cf[_0x3d4a('0x32')])&&_0x1329cf[_0x3d4a('0x37')]&&_0x1329cf['customField']){_0x54ab6c[_0x3d4a('0x18')][_0x3d4a('0x38')]({'id':_0x1329cf[_0x3d4a('0x37')],'value':_0x1329cf[_0x3d4a('0x36')][_0x3d4a('0x2a')]()});}else if(_0x1329cf[_0x3d4a('0x32')]==='variable'&&_0x1329cf[_0x3d4a('0x39')]&&_0x1329cf[_0x3d4a('0x37')]&&_0x1329cf[_0x3d4a('0x34')]){_0x2b7f94[_0x1329cf['variableName']]&&_0x54ab6c[_0x3d4a('0x18')][_0x3d4a('0x38')]({'id':_0x1329cf[_0x3d4a('0x37')],'value':_0x2b7f94[_0x1329cf['variableName']][_0x3d4a('0x2a')]()});}else if(_0x1329cf[_0x3d4a('0x32')]==='customVariable'&&_0x1329cf[_0x3d4a('0x3a')]&&_0x1329cf[_0x3d4a('0x3a')][_0x3d4a('0x15')]&&_0x1329cf[_0x3d4a('0x37')]&&_0x1329cf['customField']){_0x2b7f94[_0x1329cf['Variable'][_0x3d4a('0x15')]['toLowerCase']()]&&_0x54ab6c[_0x3d4a('0x18')][_0x3d4a('0x38')]({'id':_0x1329cf[_0x3d4a('0x37')],'value':_0x2b7f94[_0x1329cf['Variable']['name'][_0x3d4a('0x35')]()][_0x3d4a('0x2a')]()});}});}return _0x54ab6c;}exports[_0x3d4a('0x3b')]=function(_0x2132a1,_0x106e04,_0x1d2539,_0x2e43c7,_0x117cbd,_0x411b5d){var _0x1cf598,_0x389fd9;_0x411b5d[_0x3d4a('0x1a')]=intUtil['stripTrailingSlash'](_0x411b5d[_0x3d4a('0x1a')]);_0x411b5d[_0x3d4a('0x3c')]=intUtil[_0x3d4a('0x3d')](_0x411b5d[_0x3d4a('0x3c')]);if(_0x117cbd&&_0x117cbd[_0x3d4a('0x3e')]){logger['info']('[QUEUE]',_0x3d4a('0x3f'));_0x106e04[_0x3d4a('0x40')]=util['format'](_0x3d4a('0x41'),_0x411b5d[_0x3d4a('0x3c')],_0x106e04['uniqueid'],md5(_0x106e04[_0x3d4a('0x42')]));}else{_0x106e04[_0x3d4a('0x40')]='';}headers['Authorization']=getAuth(_0x411b5d);return getUser(_0x411b5d,_0x2e43c7['email'])[_0x3d4a('0x1e')](function(_0x45924d){_0x1cf598=_0x45924d;logger[_0x3d4a('0xb')](_0x3d4a('0x43'),_0x1cf598['id']);return getEndUser(_0x411b5d,_0x106e04[_0x3d4a('0xf')],_0x106e04['calleridnum']);})['then'](function(_0x18cf67){_0x389fd9=_0x18cf67;logger['info']('The\x20Enduser\x20ID\x20is:',_0x389fd9['id']);return getTicket(_0x411b5d,_0x1cf598,_0x389fd9,_0x1d2539,_0x106e04);})[_0x3d4a('0x1e')](function(_0x2f78e3){if(_0x2f78e3&&_0x2f78e3['id']){logger['info'](_0x3d4a('0x1b'));logger[_0x3d4a('0xb')](_0x3d4a('0x44'),_0x2f78e3['id']);logger[_0x3d4a('0xb')](_0x3d4a('0x45'),_0x3d4a('0x46'));emit(util[_0x3d4a('0xd')](_0x3d4a('0x47'),_0x2e43c7['name']),_0x3d4a('0x48'),{'uri':util[_0x3d4a('0xd')]('%s/helpdesk/tickets/%d',_0x411b5d[_0x3d4a('0x1a')],_0x2f78e3['id'])});}})[_0x3d4a('0x49')](function(_0x2f7c94){logger[_0x3d4a('0x4a')]('[QUEUE]',JSON[_0x3d4a('0x4b')](_0x2f7c94));});};exports[_0x3d4a('0x4c')]=function(_0xcca277,_0x55c85a,_0x25061d,_0x10bec1,_0x137c94,_0x5dbf71,_0x3d85b7){var _0x1db425,_0x197820;_0x5dbf71[_0x3d4a('0x1a')]=intUtil['stripTrailingSlash'](_0x5dbf71[_0x3d4a('0x1a')]);_0x5dbf71[_0x3d4a('0x3c')]=intUtil[_0x3d4a('0x3d')](_0x5dbf71[_0x3d4a('0x3c')]);if(_0x3d85b7&&_0x3d85b7[_0x3d4a('0x4d')]&&_0x3d85b7[_0x3d4a('0x4d')]!=='none'){logger[_0x3d4a('0xb')](_0x3d4a('0x4e'),'Recording\x20is\x20enabled!');_0x55c85a[_0x3d4a('0x40')]=util['format'](_0x3d4a('0x41'),_0x5dbf71[_0x3d4a('0x3c')],_0x55c85a['uniqueid'],md5(_0x55c85a[_0x3d4a('0x42')]));}headers[_0x3d4a('0x4f')]=getAuth(_0x5dbf71);return getUser(_0x5dbf71,_0x10bec1[_0x3d4a('0x20')])[_0x3d4a('0x1e')](function(_0xf186ff){_0x1db425=_0xf186ff;logger[_0x3d4a('0xb')]('The\x20User\x20ID\x20is:',_0x1db425['id']);return getEndUser(_0x5dbf71,_0x55c85a[_0x3d4a('0x50')],_0x55c85a[_0x3d4a('0x51')]);})[_0x3d4a('0x1e')](function(_0x567ca2){_0x197820=_0x567ca2;logger[_0x3d4a('0xb')](_0x3d4a('0x52'),_0x197820['id']);return getTicket(_0x5dbf71,_0x1db425,_0x197820,_0x25061d,_0x55c85a);})[_0x3d4a('0x1e')](function(_0x2872e2){if(_0x2872e2&&_0x2872e2['id']){logger[_0x3d4a('0xb')](_0x3d4a('0x1b'));logger[_0x3d4a('0xb')]('The\x20Ticket\x20ID\x20is:',_0x2872e2['id']);logger[_0x3d4a('0xb')](_0x3d4a('0x4e'),_0x3d4a('0x46'));emit(util['format']('user:%s',_0x10bec1[_0x3d4a('0x15')]),'trigger:browser:url',{'uri':util['format'](_0x3d4a('0x53'),_0x5dbf71[_0x3d4a('0x1a')],_0x2872e2['id'])});}})[_0x3d4a('0x49')](function(_0x914b4b){logger[_0x3d4a('0x4a')]('[OUTBOUND]',JSON[_0x3d4a('0x4b')](_0x914b4b));});};exports['unmanaged']=function(_0x562730,_0x1cd78a,_0x1e7a20,_0x46c171,_0x5ecf82,_0x5303fd){var _0x153b1c,_0x157dc3;_0x5303fd['remoteUri']=intUtil['stripTrailingSlash'](_0x5303fd[_0x3d4a('0x1a')]);_0x5303fd['serverUrl']=intUtil[_0x3d4a('0x3d')](_0x5303fd[_0x3d4a('0x3c')]);if(_0x5ecf82&&_0x5ecf82['monitor_format']){logger[_0x3d4a('0xb')]('['+_0x1cd78a[_0x3d4a('0x54')][_0x3d4a('0x55')]()+']','Recording\x20is\x20enabled!');_0x1cd78a[_0x3d4a('0x40')]=util[_0x3d4a('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5303fd[_0x3d4a('0x3c')],_0x1cd78a[_0x3d4a('0x42')],md5(_0x1cd78a[_0x3d4a('0x42')]));}else{_0x1cd78a[_0x3d4a('0x40')]='';}headers[_0x3d4a('0x4f')]=getAuth(_0x5303fd);return getUser(_0x5303fd,'')[_0x3d4a('0x1e')](function(_0x5c26e3){_0x153b1c=_0x5c26e3;logger[_0x3d4a('0xb')]('The\x20User\x20ID\x20is:',_0x153b1c['id']);return getEndUser(_0x5303fd,_0x1cd78a[_0x3d4a('0xf')],_0x1cd78a[_0x3d4a('0x10')]);})[_0x3d4a('0x1e')](function(_0x28157c){_0x157dc3=_0x28157c;logger[_0x3d4a('0xb')](_0x3d4a('0x52'),_0x157dc3['id']);return getTicket(_0x5303fd,_0x153b1c,_0x157dc3,_0x1e7a20,_0x1cd78a);})['then'](function(_0x32b1a7){if(_0x32b1a7){logger[_0x3d4a('0xb')](_0x3d4a('0x1b'));logger[_0x3d4a('0xb')](_0x3d4a('0x44'),_0x32b1a7['id']);}})['catch'](function(_0x43f32f){logger['error']('['+_0x1cd78a[_0x3d4a('0x54')][_0x3d4a('0x55')]()+']',JSON['stringify'](_0x43f32f));});};