04852d31c63f941e84885de39eeb6468c0f8981a
[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 _0x6669=['Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','stringify','GET','includes','string','picklist','type','nameField','toLowerCase','content','idField','customField','push','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','recordingURL','Authorization','calleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridnum','The\x20Enduser\x20ID\x20is:','%s/helpdesk/tickets/%d','monitor_format','toUpperCase','lastevent','lodash','request-promise','md5','../../../../config/environment','redis','defaults','localhost','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','email'];(function(_0x4ba566,_0x1e59f2){var _0x5b2031=function(_0x1ddad0){while(--_0x1ddad0){_0x4ba566['push'](_0x4ba566['shift']());}};_0x5b2031(++_0x1e59f2);}(_0x6669,0x189));var _0x9666=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x6669[_0x2fc012];return _0x2891f9;};'use strict';var _=require(_0x9666('0x0'));var rp=require(_0x9666('0x1'));var md5=require(_0x9666('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x9666('0x3'));var logger=require('../../../../config/logger')('freshdesk');config[_0x9666('0x4')]=_[_0x9666('0x5')](config[_0x9666('0x4')],{'host':_0x9666('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9666('0x4')]));var headers={'Content-Type':'application/json','Accept':_0x9666('0x7')};function emit(_0x38a848,_0x5df440,_0x4ab970){io['to'](_0x38a848)[_0x9666('0x8')](_0x5df440,_0x4ab970);}function getTicket(_0x3493a1,_0x435834,_0xd7f58f,_0x1e578b,_0x142ca6){logger[_0x9666('0x9')]('Creating\x20new\x20ticket...');var _0x6afc09=_[_0x9666('0xa')]({'responder_id':_0x435834['id'],'requester_id':_0xd7f58f['id'],'name':util[_0x9666('0xb')](_0x9666('0xc'),_0x142ca6[_0x9666('0xd')]),'phone':_0x142ca6['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x9666('0xe')](_0x1e578b['Subjects'],_0x142ca6,'\x20'),'description':intUtil[_0x9666('0xe')](_0x1e578b[_0x9666('0xf')],_0x142ca6,_0x9666('0x10')),'tags':getTags(_0x1e578b[_0x9666('0x11')],_0x9666('0x12'))},getCustomFields(_0x1e578b[_0x9666('0x13')],_0x142ca6));_0x6afc09[_0x9666('0x14')]=_[_0x9666('0x15')](_[_0x9666('0x16')](_0x6afc09[_0x9666('0x14')],'id'),'value');return request({'uri':util[_0x9666('0xb')](_0x9666('0x17'),_0x3493a1[_0x9666('0x18')]),'method':_0x9666('0x19'),'body':_0x6afc09})[_0x9666('0x1a')](function(_0x200c33){logger[_0x9666('0x9')](_0x9666('0x1b'));return _0x200c33;});}function getUser(_0xabb6cd,_0x4b75b3){if(intUtil[_0x9666('0x1c')](_0x4b75b3)){return request({'uri':util[_0x9666('0xb')](_0x9666('0x1d'),_0xabb6cd[_0x9666('0x18')]),'qs':{'email':_0x4b75b3}})['then'](function(_0x25fe32){if(_0x25fe32[_0x9666('0x1e')]){logger['info']('Agent\x20found!');return _['find'](_0x25fe32,function(_0x410936){return _0x410936['contact'][_0x9666('0x1f')]===_0x4b75b3;});}else{logger[_0x9666('0x9')](_0x9666('0x20'));return request({'uri':util['format'](_0x9666('0x21'),_0xabb6cd[_0x9666('0x18')])})[_0x9666('0x1a')](function(_0x4fa57f){logger['info'](_0x9666('0x22'));return _0x4fa57f;});}});}else{logger[_0x9666('0x9')](_0x9666('0x23'));return request({'uri':util['format'](_0x9666('0x21'),_0xabb6cd['remoteUri'])})['then'](function(_0x40fdc9){logger[_0x9666('0x9')](_0x9666('0x22'));return _0x40fdc9;});}}function getEndUser(_0x31147a,_0x127a19,_0x50a260){logger['info']('Searching\x20enduser\x20with\x20phone',_0x50a260);return request({'uri':util[_0x9666('0xb')]('%s/api/v2/contacts',_0x31147a[_0x9666('0x18')]),'qs':{'phone':_0x50a260}})[_0x9666('0x1a')](function(_0x424bb2){if(_0x424bb2[_0x9666('0x1e')]){logger[_0x9666('0x9')]('Enduser\x20found!');return _[_0x9666('0x24')](_0x424bb2,{'phone':_0x50a260});}else{logger['info'](_0x9666('0x25'));return request({'uri':util[_0x9666('0xb')](_0x9666('0x26'),_0x31147a[_0x9666('0x18')]),'method':_0x9666('0x19'),'body':{'name':_0x127a19,'phone':_0x50a260}})[_0x9666('0x1a')](function(_0xbad8cd){logger['info'](_0x9666('0x27'));return _0xbad8cd;});}});}function getAuth(_0x5cadba){return util[_0x9666('0xb')](_0x9666('0x28'),new Buffer(_0x5cadba[_0x9666('0x29')]+':X')[_0x9666('0x2a')]('base64'));}function request(_0x4c1d2c){logger[_0x9666('0x2b')]('[HTTP]',JSON[_0x9666('0x2c')](_0x4c1d2c));return rp(_[_0x9666('0x5')](_0x4c1d2c,{'method':_0x9666('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x33ec2f,_0x40f195){var _0x245525=[];if(_0x33ec2f&&_0x33ec2f[_0x9666('0x1e')]>0x0){_0x245525=_['map'](_0x33ec2f,_0x40f195);}return _0x245525;}function getCustomFields(_0x491a45,_0x4e085c){var _0x16e4ef=[];var _0x48c05d={'custom_fields':[]};if(_0x491a45[_0x9666('0x1e')]>0x0){_['forEach'](_0x491a45,function(_0x1c9828){if(_[_0x9666('0x2e')]([_0x9666('0x2f'),_0x9666('0x30')],_0x1c9828[_0x9666('0x31')])&&_0x1c9828[_0x9666('0x32')]&&!_0x1c9828['customField']){_0x48c05d[_0x1c9828[_0x9666('0x32')][_0x9666('0x33')]()]=_0x1c9828[_0x9666('0x34')]['toString']();}else if(_[_0x9666('0x2e')](['string','picklist'],_0x1c9828[_0x9666('0x31')])&&_0x1c9828[_0x9666('0x35')]&&_0x1c9828[_0x9666('0x36')]){_0x48c05d['custom_fields'][_0x9666('0x37')]({'id':_0x1c9828[_0x9666('0x35')],'value':_0x1c9828[_0x9666('0x34')][_0x9666('0x2a')]()});}else if(_0x1c9828[_0x9666('0x31')]==='variable'&&_0x1c9828['variableName']&&_0x1c9828['idField']&&_0x1c9828[_0x9666('0x36')]){_0x4e085c[_0x1c9828[_0x9666('0x38')]]&&_0x48c05d[_0x9666('0x14')][_0x9666('0x37')]({'id':_0x1c9828[_0x9666('0x35')],'value':_0x4e085c[_0x1c9828[_0x9666('0x38')]]['toString']()});}else if(_0x1c9828['type']===_0x9666('0x39')&&_0x1c9828[_0x9666('0x3a')]&&_0x1c9828[_0x9666('0x3a')][_0x9666('0x12')]&&_0x1c9828[_0x9666('0x35')]&&_0x1c9828[_0x9666('0x36')]){_0x4e085c[_0x1c9828[_0x9666('0x3a')]['name']['toLowerCase']()]&&_0x48c05d[_0x9666('0x14')][_0x9666('0x37')]({'id':_0x1c9828[_0x9666('0x35')],'value':_0x4e085c[_0x1c9828[_0x9666('0x3a')]['name'][_0x9666('0x33')]()][_0x9666('0x2a')]()});}});}return _0x48c05d;}exports[_0x9666('0x3b')]=function(_0x5e5b6e,_0x16d6c5,_0x40eed6,_0xfa2e3,_0x26047d,_0x6d099a){var _0x4c01e9,_0x10ba9e;_0x6d099a[_0x9666('0x18')]=intUtil[_0x9666('0x3c')](_0x6d099a[_0x9666('0x18')]);_0x6d099a[_0x9666('0x3d')]=intUtil[_0x9666('0x3c')](_0x6d099a[_0x9666('0x3d')]);if(_0x26047d&&_0x26047d['monitor_format']){logger[_0x9666('0x9')](_0x9666('0x3e'),_0x9666('0x3f'));_0x16d6c5['recordingURL']=util[_0x9666('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x6d099a[_0x9666('0x3d')],_0x16d6c5[_0x9666('0x40')],md5(_0x16d6c5[_0x9666('0x40')]));}else{_0x16d6c5[_0x9666('0x41')]='';}headers[_0x9666('0x42')]=getAuth(_0x6d099a);return getUser(_0x6d099a,_0xfa2e3[_0x9666('0x1f')])[_0x9666('0x1a')](function(_0x36960b){_0x4c01e9=_0x36960b;logger[_0x9666('0x9')]('The\x20User\x20ID\x20is:',_0x4c01e9['id']);return getEndUser(_0x6d099a,_0x16d6c5[_0x9666('0xd')],_0x16d6c5[_0x9666('0x43')]);})[_0x9666('0x1a')](function(_0x47d580){_0x10ba9e=_0x47d580;logger['info']('The\x20Enduser\x20ID\x20is:',_0x10ba9e['id']);return getTicket(_0x6d099a,_0x4c01e9,_0x10ba9e,_0x40eed6,_0x16d6c5);})[_0x9666('0x1a')](function(_0x510ef0){if(_0x510ef0&&_0x510ef0['id']){logger[_0x9666('0x9')](_0x9666('0x1b'));logger[_0x9666('0x9')](_0x9666('0x44'),_0x510ef0['id']);logger['info']('[QUEUE]',_0x9666('0x45'));emit(util[_0x9666('0xb')](_0x9666('0x46'),_0xfa2e3[_0x9666('0x12')]),_0x9666('0x47'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x6d099a[_0x9666('0x18')],_0x510ef0['id'])});}})[_0x9666('0x48')](function(_0x425368){logger[_0x9666('0x49')]('[QUEUE]',JSON[_0x9666('0x2c')](_0x425368));});};exports['outbound']=function(_0x5b5d7b,_0x1c23ae,_0x326abc,_0x54e74f,_0x390328,_0x3a093a,_0x28e8be){var _0x9549,_0x1e6360;_0x3a093a['remoteUri']=intUtil[_0x9666('0x3c')](_0x3a093a[_0x9666('0x18')]);_0x3a093a['serverUrl']=intUtil[_0x9666('0x3c')](_0x3a093a[_0x9666('0x3d')]);if(_0x28e8be&&_0x28e8be[_0x9666('0x4a')]&&_0x28e8be['recordingFormat']!==_0x9666('0x4b')){logger['info'](_0x9666('0x4c'),_0x9666('0x3f'));_0x1c23ae['recordingURL']=util[_0x9666('0xb')](_0x9666('0x4d'),_0x3a093a['serverUrl'],_0x1c23ae['uniqueid'],md5(_0x1c23ae[_0x9666('0x40')]));}headers[_0x9666('0x42')]=getAuth(_0x3a093a);return getUser(_0x3a093a,_0x54e74f[_0x9666('0x1f')])[_0x9666('0x1a')](function(_0x58d7f6){_0x9549=_0x58d7f6;logger[_0x9666('0x9')](_0x9666('0x4e'),_0x9549['id']);return getEndUser(_0x3a093a,_0x1c23ae['destcalleridname'],_0x1c23ae[_0x9666('0x4f')]);})[_0x9666('0x1a')](function(_0x1ea89b){_0x1e6360=_0x1ea89b;logger[_0x9666('0x9')](_0x9666('0x50'),_0x1e6360['id']);return getTicket(_0x3a093a,_0x9549,_0x1e6360,_0x326abc,_0x1c23ae);})[_0x9666('0x1a')](function(_0x28cda7){if(_0x28cda7&&_0x28cda7['id']){logger['info']('Ticket\x20created!');logger[_0x9666('0x9')](_0x9666('0x44'),_0x28cda7['id']);logger[_0x9666('0x9')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x9666('0x46'),_0x54e74f[_0x9666('0x12')]),_0x9666('0x47'),{'uri':util[_0x9666('0xb')](_0x9666('0x51'),_0x3a093a[_0x9666('0x18')],_0x28cda7['id'])});}})[_0x9666('0x48')](function(_0x2daae2){logger[_0x9666('0x49')](_0x9666('0x4c'),JSON[_0x9666('0x2c')](_0x2daae2));});};exports['unmanaged']=function(_0x47569d,_0x46e65d,_0x3b9cfa,_0x231c1e,_0x18c7eb,_0x5cdff0){var _0x42a628,_0x22f64d;_0x5cdff0[_0x9666('0x18')]=intUtil[_0x9666('0x3c')](_0x5cdff0['remoteUri']);_0x5cdff0[_0x9666('0x3d')]=intUtil[_0x9666('0x3c')](_0x5cdff0['serverUrl']);if(_0x18c7eb&&_0x18c7eb[_0x9666('0x52')]){logger[_0x9666('0x9')]('['+_0x46e65d['lastevent'][_0x9666('0x53')]()+']',_0x9666('0x3f'));_0x46e65d[_0x9666('0x41')]=util[_0x9666('0xb')](_0x9666('0x4d'),_0x5cdff0['serverUrl'],_0x46e65d[_0x9666('0x40')],md5(_0x46e65d[_0x9666('0x40')]));}else{_0x46e65d[_0x9666('0x41')]='';}headers[_0x9666('0x42')]=getAuth(_0x5cdff0);return getUser(_0x5cdff0,'')[_0x9666('0x1a')](function(_0x1139dc){_0x42a628=_0x1139dc;logger['info'](_0x9666('0x4e'),_0x42a628['id']);return getEndUser(_0x5cdff0,_0x46e65d[_0x9666('0xd')],_0x46e65d['calleridnum']);})['then'](function(_0x510d47){_0x22f64d=_0x510d47;logger[_0x9666('0x9')](_0x9666('0x50'),_0x22f64d['id']);return getTicket(_0x5cdff0,_0x42a628,_0x22f64d,_0x3b9cfa,_0x46e65d);})[_0x9666('0x1a')](function(_0x35a2ce){if(_0x35a2ce){logger[_0x9666('0x9')](_0x9666('0x1b'));logger[_0x9666('0x9')]('The\x20Ticket\x20ID\x20is:',_0x35a2ce['id']);}})['catch'](function(_0x296e5c){logger['error']('['+_0x46e65d[_0x9666('0x54')][_0x9666('0x53')]()+']',JSON['stringify'](_0x296e5c));});};