Built motion from commit db94841.|2.5.3
[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 _0xac38=['The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','error','serverUrl','recordingFormat','none','destcalleridname','[OUTBOUND]','user:%s','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','md5','util','./util','../../../../config/environment','freshdesk','redis','defaults','application/json','emit','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','custom_fields','mapValues','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','contact','email','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','type','string','nameField','toLowerCase','content','idField','push','variable','variableName','customField','customVariable','Variable','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization'];(function(_0x2a5bb7,_0x3a0bf3){var _0x503330=function(_0x61d76b){while(--_0x61d76b){_0x2a5bb7['push'](_0x2a5bb7['shift']());}};_0x503330(++_0x3a0bf3);}(_0xac38,0x11f));var _0x8ac3=function(_0xf26d40,_0x2f4f46){_0xf26d40=_0xf26d40-0x0;var _0x50b68c=_0xac38[_0xf26d40];return _0x50b68c;};'use strict';var _=require(_0x8ac3('0x0'));var rp=require('request-promise');var md5=require(_0x8ac3('0x1'));var util=require(_0x8ac3('0x2'));var Redis=require('ioredis');var intUtil=require(_0x8ac3('0x3'));var config=require(_0x8ac3('0x4'));var logger=require('../../../../config/logger')(_0x8ac3('0x5'));config[_0x8ac3('0x6')]=_[_0x8ac3('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8ac3('0x6')]));var headers={'Content-Type':_0x8ac3('0x8'),'Accept':'application/json'};function emit(_0xd2a11e,_0x424129,_0x38c5d2){io['to'](_0xd2a11e)[_0x8ac3('0x9')](_0x424129,_0x38c5d2);}function getTicket(_0x11afd2,_0xe48ca5,_0x114f20,_0x277eec,_0x30801d){logger['info'](_0x8ac3('0xa'));var _0x41922d=_['merge']({'responder_id':_0xe48ca5['id'],'requester_id':_0x114f20['id'],'name':util[_0x8ac3('0xb')](_0x8ac3('0xc'),_0x30801d[_0x8ac3('0xd')]),'phone':_0x30801d[_0x8ac3('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x8ac3('0xf')](_0x277eec[_0x8ac3('0x10')],_0x30801d,'\x20'),'description':intUtil[_0x8ac3('0xf')](_0x277eec[_0x8ac3('0x11')],_0x30801d,_0x8ac3('0x12')),'tags':getTags(_0x277eec[_0x8ac3('0x13')],_0x8ac3('0x14'))},getCustomFields(_0x277eec['Fields'],_0x30801d));_0x41922d[_0x8ac3('0x15')]=_[_0x8ac3('0x16')](_['keyBy'](_0x41922d[_0x8ac3('0x15')],'id'),'value');return request({'uri':util[_0x8ac3('0xb')](_0x8ac3('0x17'),_0x11afd2[_0x8ac3('0x18')]),'method':_0x8ac3('0x19'),'body':_0x41922d})[_0x8ac3('0x1a')](function(_0x1334c0){logger[_0x8ac3('0x1b')](_0x8ac3('0x1c'));return _0x1334c0;});}function getUser(_0x1e6ce9,_0xb03aeb){if(intUtil[_0x8ac3('0x1d')](_0xb03aeb)){return request({'uri':util[_0x8ac3('0xb')](_0x8ac3('0x1e'),_0x1e6ce9['remoteUri']),'qs':{'email':_0xb03aeb}})['then'](function(_0x4aeeda){if(_0x4aeeda[_0x8ac3('0x1f')]){logger[_0x8ac3('0x1b')](_0x8ac3('0x20'));return _['find'](_0x4aeeda,function(_0x2a88f3){return _0x2a88f3[_0x8ac3('0x21')][_0x8ac3('0x22')]===_0xb03aeb;});}else{logger[_0x8ac3('0x1b')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x8ac3('0xb')]('%s/api/v2/agents/me',_0x1e6ce9['remoteUri'])})[_0x8ac3('0x1a')](function(_0x446a5a){logger[_0x8ac3('0x1b')](_0x8ac3('0x23'));return _0x446a5a;});}});}else{logger['info'](_0x8ac3('0x24'));return request({'uri':util[_0x8ac3('0xb')](_0x8ac3('0x25'),_0x1e6ce9[_0x8ac3('0x18')])})['then'](function(_0x35e7a8){logger[_0x8ac3('0x1b')](_0x8ac3('0x23'));return _0x35e7a8;});}}function getEndUser(_0x898ec2,_0x3cc226,_0x2d18e6){logger['info'](_0x8ac3('0x26'),_0x2d18e6);return request({'uri':util[_0x8ac3('0xb')](_0x8ac3('0x27'),_0x898ec2['remoteUri']),'qs':{'phone':_0x2d18e6}})['then'](function(_0x58f2c7){if(_0x58f2c7[_0x8ac3('0x1f')]){logger[_0x8ac3('0x1b')](_0x8ac3('0x28'));return _['find'](_0x58f2c7,{'phone':_0x2d18e6});}else{logger[_0x8ac3('0x1b')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x8ac3('0x27'),_0x898ec2[_0x8ac3('0x18')]),'method':_0x8ac3('0x19'),'body':{'name':_0x3cc226,'phone':_0x2d18e6}})[_0x8ac3('0x1a')](function(_0x389c9d){logger[_0x8ac3('0x1b')](_0x8ac3('0x29'));return _0x389c9d;});}});}function getAuth(_0x5674be){return util[_0x8ac3('0xb')](_0x8ac3('0x2a'),new Buffer(_0x5674be[_0x8ac3('0x2b')]+':X')[_0x8ac3('0x2c')](_0x8ac3('0x2d')));}function request(_0x47d38a){logger[_0x8ac3('0x2e')](_0x8ac3('0x2f'),JSON[_0x8ac3('0x30')](_0x47d38a));return rp(_[_0x8ac3('0x7')](_0x47d38a,{'method':_0x8ac3('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x593619,_0x2a0220){var _0x26d9b4=[];if(_0x593619&&_0x593619['length']>0x0){_0x26d9b4=_[_0x8ac3('0x32')](_0x593619,_0x2a0220);}return _0x26d9b4;}function getCustomFields(_0x2b4184,_0x2efa7a){var _0x59d46a=[];var _0x426e28={'custom_fields':[]};if(_0x2b4184[_0x8ac3('0x1f')]>0x0){_[_0x8ac3('0x33')](_0x2b4184,function(_0xb0ba8e){if(_0xb0ba8e[_0x8ac3('0x34')]===_0x8ac3('0x35')&&_0xb0ba8e[_0x8ac3('0x36')]&&!_0xb0ba8e['customField']){_0x426e28[_0xb0ba8e[_0x8ac3('0x36')][_0x8ac3('0x37')]()]=_0xb0ba8e[_0x8ac3('0x38')][_0x8ac3('0x2c')]();}else if(_0xb0ba8e[_0x8ac3('0x34')]===_0x8ac3('0x35')&&_0xb0ba8e[_0x8ac3('0x39')]&&_0xb0ba8e['customField']){_0x426e28[_0x8ac3('0x15')][_0x8ac3('0x3a')]({'id':_0xb0ba8e[_0x8ac3('0x39')],'value':_0xb0ba8e['content'][_0x8ac3('0x2c')]()});}else if(_0xb0ba8e[_0x8ac3('0x34')]===_0x8ac3('0x3b')&&_0xb0ba8e[_0x8ac3('0x3c')]&&_0xb0ba8e[_0x8ac3('0x39')]&&_0xb0ba8e[_0x8ac3('0x3d')]){_0x2efa7a[_0xb0ba8e['variableName']]&&_0x426e28[_0x8ac3('0x15')][_0x8ac3('0x3a')]({'id':_0xb0ba8e[_0x8ac3('0x39')],'value':_0x2efa7a[_0xb0ba8e[_0x8ac3('0x3c')]][_0x8ac3('0x2c')]()});}else if(_0xb0ba8e['type']===_0x8ac3('0x3e')&&_0xb0ba8e[_0x8ac3('0x3f')]&&_0xb0ba8e[_0x8ac3('0x3f')][_0x8ac3('0x14')]&&_0xb0ba8e[_0x8ac3('0x39')]&&_0xb0ba8e[_0x8ac3('0x3d')]){_0x2efa7a[_0xb0ba8e[_0x8ac3('0x3f')][_0x8ac3('0x14')][_0x8ac3('0x37')]()]&&_0x426e28[_0x8ac3('0x15')]['push']({'id':_0xb0ba8e[_0x8ac3('0x39')],'value':_0x2efa7a[_0xb0ba8e[_0x8ac3('0x3f')][_0x8ac3('0x14')]['toLowerCase']()][_0x8ac3('0x2c')]()});}});}return _0x426e28;}exports[_0x8ac3('0x40')]=function(_0x18d5f2,_0x46e8c3,_0x3e4121,_0x1326b6,_0x3b9934,_0x47c184){var _0x473cd0,_0x3afb8b;_0x47c184[_0x8ac3('0x18')]=intUtil[_0x8ac3('0x41')](_0x47c184[_0x8ac3('0x18')]);_0x47c184['serverUrl']=intUtil[_0x8ac3('0x41')](_0x47c184['serverUrl']);if(_0x3b9934&&_0x3b9934[_0x8ac3('0x42')]){logger['info'](_0x8ac3('0x43'),_0x8ac3('0x44'));_0x46e8c3[_0x8ac3('0x45')]=util[_0x8ac3('0xb')](_0x8ac3('0x46'),_0x47c184['serverUrl'],_0x46e8c3[_0x8ac3('0x47')],md5(_0x46e8c3[_0x8ac3('0x47')]));}else{_0x46e8c3['recordingURL']='';}headers[_0x8ac3('0x48')]=getAuth(_0x47c184);return getUser(_0x47c184,_0x1326b6[_0x8ac3('0x22')])[_0x8ac3('0x1a')](function(_0x1357fa){_0x473cd0=_0x1357fa;logger[_0x8ac3('0x1b')](_0x8ac3('0x49'),_0x473cd0['id']);return getEndUser(_0x47c184,_0x46e8c3[_0x8ac3('0xd')],_0x46e8c3[_0x8ac3('0xe')]);})[_0x8ac3('0x1a')](function(_0x3e2082){_0x3afb8b=_0x3e2082;logger[_0x8ac3('0x1b')](_0x8ac3('0x4a'),_0x3afb8b['id']);return getTicket(_0x47c184,_0x473cd0,_0x3afb8b,_0x3e4121,_0x46e8c3);})[_0x8ac3('0x1a')](function(_0x2862be){if(_0x2862be&&_0x2862be['id']){logger['info'](_0x8ac3('0x1c'));logger[_0x8ac3('0x1b')](_0x8ac3('0x4b'),_0x2862be['id']);logger[_0x8ac3('0x1b')](_0x8ac3('0x43'),_0x8ac3('0x4c'));emit(util['format']('user:%s',_0x1326b6[_0x8ac3('0x14')]),'trigger:browser:url',{'uri':util[_0x8ac3('0xb')](_0x8ac3('0x4d'),_0x47c184[_0x8ac3('0x18')],_0x2862be['id'])});}})[_0x8ac3('0x4e')](function(_0x166ffe){logger[_0x8ac3('0x4f')](_0x8ac3('0x43'),JSON[_0x8ac3('0x30')](_0x166ffe));});};exports['outbound']=function(_0x25be7f,_0xafd566,_0x261a09,_0x345068,_0x3ec918,_0x3c58f1,_0x5d86e3){var _0x35140c,_0x1e79e8;_0x3c58f1[_0x8ac3('0x18')]=intUtil['stripTrailingSlash'](_0x3c58f1['remoteUri']);_0x3c58f1[_0x8ac3('0x50')]=intUtil[_0x8ac3('0x41')](_0x3c58f1[_0x8ac3('0x50')]);if(_0x5d86e3&&_0x5d86e3[_0x8ac3('0x51')]&&_0x5d86e3['recordingFormat']!==_0x8ac3('0x52')){logger[_0x8ac3('0x1b')]('[OUTBOUND]',_0x8ac3('0x44'));_0xafd566[_0x8ac3('0x45')]=util[_0x8ac3('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3c58f1[_0x8ac3('0x50')],_0xafd566[_0x8ac3('0x47')],md5(_0xafd566[_0x8ac3('0x47')]));}headers[_0x8ac3('0x48')]=getAuth(_0x3c58f1);return getUser(_0x3c58f1,_0x345068[_0x8ac3('0x22')])[_0x8ac3('0x1a')](function(_0x5ef926){_0x35140c=_0x5ef926;logger['info']('The\x20User\x20ID\x20is:',_0x35140c['id']);return getEndUser(_0x3c58f1,_0xafd566[_0x8ac3('0x53')],_0xafd566['destcalleridnum']);})[_0x8ac3('0x1a')](function(_0x1bb717){_0x1e79e8=_0x1bb717;logger[_0x8ac3('0x1b')]('The\x20Enduser\x20ID\x20is:',_0x1e79e8['id']);return getTicket(_0x3c58f1,_0x35140c,_0x1e79e8,_0x261a09,_0xafd566);})[_0x8ac3('0x1a')](function(_0x4fefb3){if(_0x4fefb3&&_0x4fefb3['id']){logger['info'](_0x8ac3('0x1c'));logger['info'](_0x8ac3('0x4b'),_0x4fefb3['id']);logger['info'](_0x8ac3('0x54'),_0x8ac3('0x4c'));emit(util['format'](_0x8ac3('0x55'),_0x345068[_0x8ac3('0x14')]),_0x8ac3('0x56'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x3c58f1[_0x8ac3('0x18')],_0x4fefb3['id'])});}})['catch'](function(_0x24974a){logger['error']('[OUTBOUND]',JSON[_0x8ac3('0x30')](_0x24974a));});};exports[_0x8ac3('0x57')]=function(_0x223292,_0x4e4af7,_0x101b2c,_0x5e71d0,_0x571af3,_0x2de4f2){var _0x5d6e89,_0xc2434b;_0x2de4f2[_0x8ac3('0x18')]=intUtil['stripTrailingSlash'](_0x2de4f2['remoteUri']);_0x2de4f2[_0x8ac3('0x50')]=intUtil[_0x8ac3('0x41')](_0x2de4f2[_0x8ac3('0x50')]);if(_0x571af3&&_0x571af3[_0x8ac3('0x42')]){logger[_0x8ac3('0x1b')]('['+_0x4e4af7[_0x8ac3('0x58')][_0x8ac3('0x59')]()+']',_0x8ac3('0x44'));_0x4e4af7[_0x8ac3('0x45')]=util[_0x8ac3('0xb')](_0x8ac3('0x46'),_0x2de4f2[_0x8ac3('0x50')],_0x4e4af7[_0x8ac3('0x47')],md5(_0x4e4af7[_0x8ac3('0x47')]));}else{_0x4e4af7[_0x8ac3('0x45')]='';}headers[_0x8ac3('0x48')]=getAuth(_0x2de4f2);return getUser(_0x2de4f2,'')[_0x8ac3('0x1a')](function(_0x81730e){_0x5d6e89=_0x81730e;logger[_0x8ac3('0x1b')](_0x8ac3('0x49'),_0x5d6e89['id']);return getEndUser(_0x2de4f2,_0x4e4af7[_0x8ac3('0xd')],_0x4e4af7[_0x8ac3('0xe')]);})[_0x8ac3('0x1a')](function(_0x44c73c){_0xc2434b=_0x44c73c;logger[_0x8ac3('0x1b')](_0x8ac3('0x4a'),_0xc2434b['id']);return getTicket(_0x2de4f2,_0x5d6e89,_0xc2434b,_0x101b2c,_0x4e4af7);})[_0x8ac3('0x1a')](function(_0x3ded2e){if(_0x3ded2e){logger[_0x8ac3('0x1b')](_0x8ac3('0x1c'));logger[_0x8ac3('0x1b')](_0x8ac3('0x4b'),_0x3ded2e['id']);}})[_0x8ac3('0x4e')](function(_0x597ec5){logger[_0x8ac3('0x4f')]('['+_0x4e4af7[_0x8ac3('0x58')][_0x8ac3('0x59')]()+']',JSON[_0x8ac3('0x30')](_0x597ec5));});};