Built motion from commit (unavailable).|2.5.22
[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 _0xa3c1=['The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','stringify','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','trigger:browser:url','unmanaged','toUpperCase','lastevent','lodash','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Descriptions','Tags','name','mapValues','keyBy','custom_fields','value','Ticket\x20created!','then','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','Admin\x20account\x20selected.','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','POST','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','[HTTP]','GET','map','forEach','type','string','nameField','customField','toLowerCase','content','push','idField','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'];(function(_0x2c022a,_0x1ea7ba){var _0x422073=function(_0x12c051){while(--_0x12c051){_0x2c022a['push'](_0x2c022a['shift']());}};_0x422073(++_0x1ea7ba);}(_0xa3c1,0x11f));var _0x1a3c=function(_0x520e5c,_0x52e863){_0x520e5c=_0x520e5c-0x0;var _0x482f94=_0xa3c1[_0x520e5c];return _0x482f94;};'use strict';var _=require(_0x1a3c('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require('util');var Redis=require(_0x1a3c('0x1'));var intUtil=require(_0x1a3c('0x2'));var config=require(_0x1a3c('0x3'));var logger=require(_0x1a3c('0x4'))('freshdesk');config[_0x1a3c('0x5')]=_[_0x1a3c('0x6')](config[_0x1a3c('0x5')],{'host':_0x1a3c('0x7'),'port':0x18eb});var io=require(_0x1a3c('0x8'))(new Redis(config[_0x1a3c('0x5')]));var headers={'Content-Type':_0x1a3c('0x9'),'Accept':_0x1a3c('0x9')};function emit(_0x2c7434,_0x536ba6,_0x35cf4d){io['to'](_0x2c7434)['emit'](_0x536ba6,_0x35cf4d);}function getTicket(_0x48ac53,_0x2c0a25,_0x3d72c1,_0x14fede,_0x1019a6){logger[_0x1a3c('0xa')](_0x1a3c('0xb'));var _0x147ea2=_[_0x1a3c('0xc')]({'responder_id':_0x2c0a25['id'],'requester_id':_0x3d72c1['id'],'name':util[_0x1a3c('0xd')](_0x1a3c('0xe'),_0x1019a6[_0x1a3c('0xf')]),'phone':_0x1019a6['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x1a3c('0x10')](_0x14fede['Subjects'],_0x1019a6,'\x20'),'description':intUtil[_0x1a3c('0x10')](_0x14fede[_0x1a3c('0x11')],_0x1019a6,'<br>'),'tags':getTags(_0x14fede[_0x1a3c('0x12')],_0x1a3c('0x13'))},getCustomFields(_0x14fede['Fields'],_0x1019a6));_0x147ea2['custom_fields']=_[_0x1a3c('0x14')](_[_0x1a3c('0x15')](_0x147ea2[_0x1a3c('0x16')],'id'),_0x1a3c('0x17'));return request({'uri':util['format']('%s/api/v2/tickets',_0x48ac53['remoteUri']),'method':'POST','body':_0x147ea2})['then'](function(_0x34db6e){logger['info'](_0x1a3c('0x18'));return _0x34db6e;});}function getUser(_0x4114f6,_0x2872e6){if(intUtil['validateEmail'](_0x2872e6)){return request({'uri':util[_0x1a3c('0xd')]('%s/api/v2/agents',_0x4114f6['remoteUri']),'qs':{'email':_0x2872e6}})[_0x1a3c('0x19')](function(_0x21f95f){if(_0x21f95f[_0x1a3c('0x1a')]){logger[_0x1a3c('0xa')](_0x1a3c('0x1b'));return _['find'](_0x21f95f,function(_0x22de6c){return _0x22de6c[_0x1a3c('0x1c')][_0x1a3c('0x1d')]===_0x2872e6;});}else{logger[_0x1a3c('0xa')](_0x1a3c('0x1e'));return request({'uri':util['format'](_0x1a3c('0x1f'),_0x4114f6[_0x1a3c('0x20')])})[_0x1a3c('0x19')](function(_0x18c095){logger[_0x1a3c('0xa')](_0x1a3c('0x21'));return _0x18c095;});}});}else{logger[_0x1a3c('0xa')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1a3c('0xd')](_0x1a3c('0x1f'),_0x4114f6[_0x1a3c('0x20')])})['then'](function(_0x371546){logger[_0x1a3c('0xa')](_0x1a3c('0x21'));return _0x371546;});}}function getEndUser(_0x88a00c,_0x1f57e3,_0xe41ce9){logger[_0x1a3c('0xa')]('Searching\x20enduser\x20with\x20phone',_0xe41ce9);return request({'uri':util['format']('%s/api/v2/contacts',_0x88a00c[_0x1a3c('0x20')]),'qs':{'phone':_0xe41ce9}})[_0x1a3c('0x19')](function(_0x5d3907){if(_0x5d3907['length']){logger[_0x1a3c('0xa')](_0x1a3c('0x22'));return _[_0x1a3c('0x23')](_0x5d3907,{'phone':_0xe41ce9});}else{logger[_0x1a3c('0xa')](_0x1a3c('0x24'));return request({'uri':util[_0x1a3c('0xd')](_0x1a3c('0x25'),_0x88a00c['remoteUri']),'method':_0x1a3c('0x26'),'body':{'name':_0x1f57e3,'phone':_0xe41ce9}})[_0x1a3c('0x19')](function(_0x17c08f){logger[_0x1a3c('0xa')](_0x1a3c('0x27'));return _0x17c08f;});}});}function getAuth(_0x3ff017){return util['format'](_0x1a3c('0x28'),new Buffer(_0x3ff017[_0x1a3c('0x29')]+':X')[_0x1a3c('0x2a')](_0x1a3c('0x2b')));}function request(_0x3441c4){logger['debug'](_0x1a3c('0x2c'),JSON['stringify'](_0x3441c4));return rp(_[_0x1a3c('0x6')](_0x3441c4,{'method':_0x1a3c('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x2f0a59,_0x571160){var _0x1001aa=[];if(_0x2f0a59&&_0x2f0a59['length']>0x0){_0x1001aa=_[_0x1a3c('0x2e')](_0x2f0a59,_0x571160);}return _0x1001aa;}function getCustomFields(_0x29e708,_0x35c195){var _0x4f2372=[];var _0x2cac43={'custom_fields':[]};if(_0x29e708['length']>0x0){_[_0x1a3c('0x2f')](_0x29e708,function(_0x23ac3d){if(_0x23ac3d[_0x1a3c('0x30')]===_0x1a3c('0x31')&&_0x23ac3d[_0x1a3c('0x32')]&&!_0x23ac3d[_0x1a3c('0x33')]){_0x2cac43[_0x23ac3d['nameField'][_0x1a3c('0x34')]()]=_0x23ac3d[_0x1a3c('0x35')][_0x1a3c('0x2a')]();}else if(_0x23ac3d[_0x1a3c('0x30')]===_0x1a3c('0x31')&&_0x23ac3d['idField']&&_0x23ac3d[_0x1a3c('0x33')]){_0x2cac43[_0x1a3c('0x16')][_0x1a3c('0x36')]({'id':_0x23ac3d[_0x1a3c('0x37')],'value':_0x23ac3d[_0x1a3c('0x35')][_0x1a3c('0x2a')]()});}else if(_0x23ac3d[_0x1a3c('0x30')]===_0x1a3c('0x38')&&_0x23ac3d['variableName']&&_0x23ac3d['idField']&&_0x23ac3d[_0x1a3c('0x33')]){_0x35c195[_0x23ac3d[_0x1a3c('0x39')]]&&_0x2cac43[_0x1a3c('0x16')][_0x1a3c('0x36')]({'id':_0x23ac3d['idField'],'value':_0x35c195[_0x23ac3d[_0x1a3c('0x39')]][_0x1a3c('0x2a')]()});}else if(_0x23ac3d[_0x1a3c('0x30')]===_0x1a3c('0x3a')&&_0x23ac3d[_0x1a3c('0x3b')]&&_0x23ac3d[_0x1a3c('0x3b')][_0x1a3c('0x13')]&&_0x23ac3d[_0x1a3c('0x37')]&&_0x23ac3d['customField']){_0x35c195[_0x23ac3d[_0x1a3c('0x3b')][_0x1a3c('0x13')][_0x1a3c('0x34')]()]&&_0x2cac43[_0x1a3c('0x16')][_0x1a3c('0x36')]({'id':_0x23ac3d['idField'],'value':_0x35c195[_0x23ac3d[_0x1a3c('0x3b')][_0x1a3c('0x13')][_0x1a3c('0x34')]()][_0x1a3c('0x2a')]()});}});}return _0x2cac43;}exports['queue']=function(_0x34be04,_0x52c3b9,_0x3548f9,_0x25d446,_0x2806a6,_0x741ba3){var _0x435ae3,_0xe83664;_0x741ba3[_0x1a3c('0x20')]=intUtil[_0x1a3c('0x3c')](_0x741ba3[_0x1a3c('0x20')]);_0x741ba3[_0x1a3c('0x3d')]=intUtil[_0x1a3c('0x3c')](_0x741ba3[_0x1a3c('0x3d')]);if(_0x2806a6&&_0x2806a6[_0x1a3c('0x3e')]){logger['info'](_0x1a3c('0x3f'),_0x1a3c('0x40'));_0x52c3b9[_0x1a3c('0x41')]=util['format'](_0x1a3c('0x42'),_0x741ba3[_0x1a3c('0x3d')],_0x52c3b9[_0x1a3c('0x43')],md5(_0x52c3b9['uniqueid']));}else{_0x52c3b9[_0x1a3c('0x41')]='';}headers[_0x1a3c('0x44')]=getAuth(_0x741ba3);return getUser(_0x741ba3,_0x25d446[_0x1a3c('0x1d')])['then'](function(_0xf677c3){_0x435ae3=_0xf677c3;logger[_0x1a3c('0xa')](_0x1a3c('0x45'),_0x435ae3['id']);return getEndUser(_0x741ba3,_0x52c3b9[_0x1a3c('0xf')],_0x52c3b9[_0x1a3c('0x46')]);})[_0x1a3c('0x19')](function(_0x5c2e7e){_0xe83664=_0x5c2e7e;logger['info'](_0x1a3c('0x47'),_0xe83664['id']);return getTicket(_0x741ba3,_0x435ae3,_0xe83664,_0x3548f9,_0x52c3b9);})[_0x1a3c('0x19')](function(_0x529a45){if(_0x529a45&&_0x529a45['id']){logger[_0x1a3c('0xa')](_0x1a3c('0x18'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x529a45['id']);logger[_0x1a3c('0xa')](_0x1a3c('0x3f'),_0x1a3c('0x48'));emit(util[_0x1a3c('0xd')](_0x1a3c('0x49'),_0x25d446[_0x1a3c('0x13')]),'trigger:browser:url',{'uri':util[_0x1a3c('0xd')](_0x1a3c('0x4a'),_0x741ba3[_0x1a3c('0x20')],_0x529a45['id'])});}})[_0x1a3c('0x4b')](function(_0xa12d3a){logger[_0x1a3c('0x4c')](_0x1a3c('0x3f'),JSON[_0x1a3c('0x4d')](_0xa12d3a));});};exports[_0x1a3c('0x4e')]=function(_0xa9825b,_0x1be53c,_0x14dab4,_0x4cb90d,_0x3b3f07,_0x2137bc,_0x2a748b){var _0x4d418d,_0x72656c;_0x2137bc[_0x1a3c('0x20')]=intUtil[_0x1a3c('0x3c')](_0x2137bc[_0x1a3c('0x20')]);_0x2137bc[_0x1a3c('0x3d')]=intUtil['stripTrailingSlash'](_0x2137bc[_0x1a3c('0x3d')]);if(_0x2a748b&&_0x2a748b[_0x1a3c('0x4f')]&&_0x2a748b['recordingFormat']!==_0x1a3c('0x50')){logger[_0x1a3c('0xa')](_0x1a3c('0x51'),'Recording\x20is\x20enabled!');_0x1be53c[_0x1a3c('0x41')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2137bc[_0x1a3c('0x3d')],_0x1be53c[_0x1a3c('0x43')],md5(_0x1be53c[_0x1a3c('0x43')]));}headers[_0x1a3c('0x44')]=getAuth(_0x2137bc);return getUser(_0x2137bc,_0x4cb90d['email'])[_0x1a3c('0x19')](function(_0x2318c5){_0x4d418d=_0x2318c5;logger[_0x1a3c('0xa')](_0x1a3c('0x45'),_0x4d418d['id']);return getEndUser(_0x2137bc,_0x1be53c[_0x1a3c('0x52')],_0x1be53c[_0x1a3c('0x53')]);})[_0x1a3c('0x19')](function(_0x54f17e){_0x72656c=_0x54f17e;logger['info'](_0x1a3c('0x47'),_0x72656c['id']);return getTicket(_0x2137bc,_0x4d418d,_0x72656c,_0x14dab4,_0x1be53c);})[_0x1a3c('0x19')](function(_0x35b229){if(_0x35b229&&_0x35b229['id']){logger['info']('Ticket\x20created!');logger[_0x1a3c('0xa')](_0x1a3c('0x54'),_0x35b229['id']);logger[_0x1a3c('0xa')](_0x1a3c('0x51'),_0x1a3c('0x48'));emit(util['format'](_0x1a3c('0x49'),_0x4cb90d[_0x1a3c('0x13')]),_0x1a3c('0x55'),{'uri':util[_0x1a3c('0xd')]('%s/helpdesk/tickets/%d',_0x2137bc[_0x1a3c('0x20')],_0x35b229['id'])});}})['catch'](function(_0x1e2692){logger['error']('[OUTBOUND]',JSON[_0x1a3c('0x4d')](_0x1e2692));});};exports[_0x1a3c('0x56')]=function(_0x46b8b6,_0x58036d,_0x1af80d,_0x1c67f4,_0x233cbf,_0x7ba0bc){var _0x224797,_0x472e41;_0x7ba0bc[_0x1a3c('0x20')]=intUtil[_0x1a3c('0x3c')](_0x7ba0bc[_0x1a3c('0x20')]);_0x7ba0bc[_0x1a3c('0x3d')]=intUtil['stripTrailingSlash'](_0x7ba0bc[_0x1a3c('0x3d')]);if(_0x233cbf&&_0x233cbf['monitor_format']){logger[_0x1a3c('0xa')]('['+_0x58036d['lastevent'][_0x1a3c('0x57')]()+']','Recording\x20is\x20enabled!');_0x58036d[_0x1a3c('0x41')]=util[_0x1a3c('0xd')](_0x1a3c('0x42'),_0x7ba0bc[_0x1a3c('0x3d')],_0x58036d['uniqueid'],md5(_0x58036d[_0x1a3c('0x43')]));}else{_0x58036d[_0x1a3c('0x41')]='';}headers[_0x1a3c('0x44')]=getAuth(_0x7ba0bc);return getUser(_0x7ba0bc,'')[_0x1a3c('0x19')](function(_0x24ca01){_0x224797=_0x24ca01;logger['info'](_0x1a3c('0x45'),_0x224797['id']);return getEndUser(_0x7ba0bc,_0x58036d[_0x1a3c('0xf')],_0x58036d[_0x1a3c('0x46')]);})['then'](function(_0x5af7c6){_0x472e41=_0x5af7c6;logger[_0x1a3c('0xa')](_0x1a3c('0x47'),_0x472e41['id']);return getTicket(_0x7ba0bc,_0x224797,_0x472e41,_0x1af80d,_0x58036d);})[_0x1a3c('0x19')](function(_0x467e59){if(_0x467e59){logger['info'](_0x1a3c('0x18'));logger[_0x1a3c('0xa')](_0x1a3c('0x54'),_0x467e59['id']);}})['catch'](function(_0x4e1a5b){logger[_0x1a3c('0x4c')]('['+_0x58036d[_0x1a3c('0x58')]['toUpperCase']()+']',JSON[_0x1a3c('0x4d')](_0x4e1a5b));});};