590b6f87df4ae462547bb729171e19a409607e24
[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 _0x70f6=['mapValues','value','%s/api/v2/tickets','remoteUri','POST','then','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Basic\x20%s','apiKey','toString','base64','stringify','defaults','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','variable','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','%s/helpdesk/tickets/%d','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','trigger:browser:url','catch','unmanaged','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','Fields','custom_fields'];(function(_0x3d4876,_0x366386){var _0x58ca9d=function(_0x5bd045){while(--_0x5bd045){_0x3d4876['push'](_0x3d4876['shift']());}};_0x58ca9d(++_0x366386);}(_0x70f6,0x101));var _0x670f=function(_0x4f32de,_0x5bd4a){_0x4f32de=_0x4f32de-0x0;var _0x149821=_0x70f6[_0x4f32de];return _0x149821;};'use strict';var _=require('lodash');var rp=require(_0x670f('0x0'));var md5=require(_0x670f('0x1'));var util=require(_0x670f('0x2'));var Redis=require(_0x670f('0x3'));var intUtil=require(_0x670f('0x4'));var config=require(_0x670f('0x5'));var logger=require(_0x670f('0x6'))(_0x670f('0x7'));config['redis']=_['defaults'](config[_0x670f('0x8')],{'host':_0x670f('0x9'),'port':0x18eb});var io=require(_0x670f('0xa'))(new Redis(config[_0x670f('0x8')]));var headers={'Content-Type':'application/json','Accept':_0x670f('0xb')};function emit(_0x54d67c,_0x5cafc8,_0x16cafd){io['to'](_0x54d67c)['emit'](_0x5cafc8,_0x16cafd);}function getTicket(_0x81f4ed,_0x80b44f,_0x4964dc,_0x568e14,_0x11f668){logger[_0x670f('0xc')]('Creating\x20new\x20ticket...');var _0x49d9f0=_[_0x670f('0xd')]({'responder_id':_0x80b44f['id'],'requester_id':_0x4964dc['id'],'name':util[_0x670f('0xe')](_0x670f('0xf'),_0x11f668[_0x670f('0x10')]),'phone':_0x11f668[_0x670f('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x568e14['Subjects'],_0x11f668,'\x20'),'description':intUtil[_0x670f('0x12')](_0x568e14[_0x670f('0x13')],_0x11f668,_0x670f('0x14')),'tags':getTags(_0x568e14[_0x670f('0x15')],_0x670f('0x16'))},getCustomFields(_0x568e14[_0x670f('0x17')],_0x11f668));_0x49d9f0[_0x670f('0x18')]=_[_0x670f('0x19')](_['keyBy'](_0x49d9f0[_0x670f('0x18')],'id'),_0x670f('0x1a'));return request({'uri':util[_0x670f('0xe')](_0x670f('0x1b'),_0x81f4ed[_0x670f('0x1c')]),'method':_0x670f('0x1d'),'body':_0x49d9f0})[_0x670f('0x1e')](function(_0x3f512e){logger[_0x670f('0xc')]('Ticket\x20created!');return _0x3f512e;});}function getUser(_0x2f12cc,_0x34cf89){if(intUtil[_0x670f('0x1f')](_0x34cf89)){return request({'uri':util[_0x670f('0xe')](_0x670f('0x20'),_0x2f12cc[_0x670f('0x1c')]),'qs':{'email':_0x34cf89}})['then'](function(_0x320e4e){if(_0x320e4e[_0x670f('0x21')]){logger['info'](_0x670f('0x22'));return _[_0x670f('0x23')](_0x320e4e,function(_0x472603){return _0x472603[_0x670f('0x24')][_0x670f('0x25')]===_0x34cf89;});}else{logger['info'](_0x670f('0x26'));return request({'uri':util[_0x670f('0xe')](_0x670f('0x27'),_0x2f12cc['remoteUri'])})[_0x670f('0x1e')](function(_0x5ac16e){logger[_0x670f('0xc')](_0x670f('0x28'));return _0x5ac16e;});}});}else{logger['info'](_0x670f('0x29'));return request({'uri':util[_0x670f('0xe')](_0x670f('0x27'),_0x2f12cc[_0x670f('0x1c')])})[_0x670f('0x1e')](function(_0x25085e){logger[_0x670f('0xc')]('Admin\x20account\x20selected.');return _0x25085e;});}}function getEndUser(_0x49c5f9,_0x2e5dcb,_0x20a022){logger[_0x670f('0xc')](_0x670f('0x2a'),_0x20a022);return request({'uri':util[_0x670f('0xe')](_0x670f('0x2b'),_0x49c5f9['remoteUri']),'qs':{'phone':_0x20a022}})[_0x670f('0x1e')](function(_0x176d87){if(_0x176d87[_0x670f('0x21')]){logger[_0x670f('0xc')](_0x670f('0x2c'));return _[_0x670f('0x23')](_0x176d87,{'phone':_0x20a022});}else{logger[_0x670f('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x670f('0xe')](_0x670f('0x2b'),_0x49c5f9[_0x670f('0x1c')]),'method':_0x670f('0x1d'),'body':{'name':_0x2e5dcb,'phone':_0x20a022}})[_0x670f('0x1e')](function(_0x177216){logger[_0x670f('0xc')]('Enduser\x20created.');return _0x177216;});}});}function getAuth(_0x3bc88e){return util['format'](_0x670f('0x2d'),new Buffer(_0x3bc88e[_0x670f('0x2e')]+':X')[_0x670f('0x2f')](_0x670f('0x30')));}function request(_0x3342f3){logger['debug']('[HTTP]',JSON[_0x670f('0x31')](_0x3342f3));return rp(_[_0x670f('0x32')](_0x3342f3,{'method':_0x670f('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x481e4b,_0x3ec580){var _0x3b9304=[];if(_0x481e4b&&_0x481e4b[_0x670f('0x21')]>0x0){_0x3b9304=_[_0x670f('0x34')](_0x481e4b,_0x3ec580);}return _0x3b9304;}function getCustomFields(_0x49b85b,_0x4d6dbb){var _0x56ce28=[];var _0x3562be={'custom_fields':[]};if(_0x49b85b['length']>0x0){_[_0x670f('0x35')](_0x49b85b,function(_0x3af5a5){if(_[_0x670f('0x36')]([_0x670f('0x37'),_0x670f('0x38')],_0x3af5a5[_0x670f('0x39')])&&_0x3af5a5[_0x670f('0x3a')]&&!_0x3af5a5[_0x670f('0x3b')]){_0x3562be[_0x3af5a5['nameField'][_0x670f('0x3c')]()]=_0x3af5a5[_0x670f('0x3d')]['toString']();}else if(_['includes']([_0x670f('0x37'),'picklist'],_0x3af5a5[_0x670f('0x39')])&&_0x3af5a5[_0x670f('0x3e')]&&_0x3af5a5['customField']){_0x3562be['custom_fields']['push']({'id':_0x3af5a5[_0x670f('0x3e')],'value':_0x3af5a5[_0x670f('0x3d')]['toString']()});}else if(_0x3af5a5[_0x670f('0x39')]===_0x670f('0x3f')&&_0x3af5a5[_0x670f('0x40')]&&_0x3af5a5[_0x670f('0x3e')]&&_0x3af5a5[_0x670f('0x3b')]){_0x4d6dbb[_0x3af5a5['variableName']]&&_0x3562be[_0x670f('0x18')][_0x670f('0x41')]({'id':_0x3af5a5[_0x670f('0x3e')],'value':_0x4d6dbb[_0x3af5a5['variableName']][_0x670f('0x2f')]()});}else if(_0x3af5a5['type']===_0x670f('0x42')&&_0x3af5a5[_0x670f('0x43')]&&_0x3af5a5['Variable'][_0x670f('0x16')]&&_0x3af5a5[_0x670f('0x3e')]&&_0x3af5a5['customField']){_0x4d6dbb[_0x3af5a5[_0x670f('0x43')][_0x670f('0x16')][_0x670f('0x3c')]()]&&_0x3562be[_0x670f('0x18')][_0x670f('0x41')]({'id':_0x3af5a5[_0x670f('0x3e')],'value':_0x4d6dbb[_0x3af5a5[_0x670f('0x43')]['name']['toLowerCase']()][_0x670f('0x2f')]()});}});}return _0x3562be;}exports[_0x670f('0x44')]=function(_0x29c660,_0x1a0fed,_0x5f42f0,_0x4e45b9,_0x230975,_0x4f19ff){var _0x4bdd2f,_0x2d7553;_0x4f19ff[_0x670f('0x1c')]=intUtil[_0x670f('0x45')](_0x4f19ff[_0x670f('0x1c')]);_0x4f19ff[_0x670f('0x46')]=intUtil[_0x670f('0x45')](_0x4f19ff[_0x670f('0x46')]);if(_0x230975&&_0x230975[_0x670f('0x47')]){logger[_0x670f('0xc')](_0x670f('0x48'),'Recording\x20is\x20enabled!');_0x1a0fed['recordingURL']=util['format'](_0x670f('0x49'),_0x4f19ff[_0x670f('0x46')],_0x1a0fed['uniqueid'],md5(_0x1a0fed[_0x670f('0x4a')]));}else{_0x1a0fed[_0x670f('0x4b')]='';}headers[_0x670f('0x4c')]=getAuth(_0x4f19ff);return getUser(_0x4f19ff,_0x4e45b9['email'])['then'](function(_0x1f785a){_0x4bdd2f=_0x1f785a;logger['info'](_0x670f('0x4d'),_0x4bdd2f['id']);return getEndUser(_0x4f19ff,_0x1a0fed[_0x670f('0x10')],_0x1a0fed[_0x670f('0x11')]);})[_0x670f('0x1e')](function(_0x3e1088){_0x2d7553=_0x3e1088;logger['info']('The\x20Enduser\x20ID\x20is:',_0x2d7553['id']);return getTicket(_0x4f19ff,_0x4bdd2f,_0x2d7553,_0x5f42f0,_0x1a0fed);})[_0x670f('0x1e')](function(_0x5a4147){if(_0x5a4147&&_0x5a4147['id']){logger[_0x670f('0xc')](_0x670f('0x4e'));logger[_0x670f('0xc')](_0x670f('0x4f'),_0x5a4147['id']);logger[_0x670f('0xc')](_0x670f('0x48'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x670f('0xe')](_0x670f('0x50'),_0x4e45b9[_0x670f('0x16')]),'trigger:browser:url',{'uri':util[_0x670f('0xe')](_0x670f('0x51'),_0x4f19ff['remoteUri'],_0x5a4147['id'])});}})['catch'](function(_0x264d3c){logger[_0x670f('0x52')]('[QUEUE]',JSON[_0x670f('0x31')](_0x264d3c));});};exports['outbound']=function(_0x1349e9,_0x3c40b9,_0x3ddaea,_0x5bf1d8,_0x4fda2c,_0x2697c7,_0xc49b21){var _0x2af036,_0x34b7bd;_0x2697c7['remoteUri']=intUtil[_0x670f('0x45')](_0x2697c7[_0x670f('0x1c')]);_0x2697c7['serverUrl']=intUtil['stripTrailingSlash'](_0x2697c7[_0x670f('0x46')]);if(_0xc49b21&&_0xc49b21[_0x670f('0x53')]&&_0xc49b21[_0x670f('0x53')]!==_0x670f('0x54')){logger[_0x670f('0xc')](_0x670f('0x55'),_0x670f('0x56'));_0x3c40b9[_0x670f('0x4b')]=util[_0x670f('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2697c7[_0x670f('0x46')],_0x3c40b9[_0x670f('0x4a')],md5(_0x3c40b9[_0x670f('0x4a')]));}headers[_0x670f('0x4c')]=getAuth(_0x2697c7);return getUser(_0x2697c7,_0x5bf1d8[_0x670f('0x25')])[_0x670f('0x1e')](function(_0x57a14a){_0x2af036=_0x57a14a;logger[_0x670f('0xc')]('The\x20User\x20ID\x20is:',_0x2af036['id']);return getEndUser(_0x2697c7,_0x3c40b9[_0x670f('0x57')],_0x3c40b9['destcalleridnum']);})['then'](function(_0x9c0ef3){_0x34b7bd=_0x9c0ef3;logger[_0x670f('0xc')]('The\x20Enduser\x20ID\x20is:',_0x34b7bd['id']);return getTicket(_0x2697c7,_0x2af036,_0x34b7bd,_0x3ddaea,_0x3c40b9);})['then'](function(_0x177be9){if(_0x177be9&&_0x177be9['id']){logger[_0x670f('0xc')]('Ticket\x20created!');logger['info'](_0x670f('0x4f'),_0x177be9['id']);logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x670f('0x50'),_0x5bf1d8[_0x670f('0x16')]),_0x670f('0x58'),{'uri':util[_0x670f('0xe')](_0x670f('0x51'),_0x2697c7[_0x670f('0x1c')],_0x177be9['id'])});}})[_0x670f('0x59')](function(_0x5ce1be){logger[_0x670f('0x52')](_0x670f('0x55'),JSON[_0x670f('0x31')](_0x5ce1be));});};exports[_0x670f('0x5a')]=function(_0xda01ef,_0x59e0ad,_0x4a603a,_0x3eb088,_0x39d926,_0xb8cdef){var _0xfd0440,_0x435e1b;_0xb8cdef[_0x670f('0x1c')]=intUtil[_0x670f('0x45')](_0xb8cdef['remoteUri']);_0xb8cdef[_0x670f('0x46')]=intUtil[_0x670f('0x45')](_0xb8cdef[_0x670f('0x46')]);if(_0x39d926&&_0x39d926[_0x670f('0x47')]){logger[_0x670f('0xc')]('['+_0x59e0ad[_0x670f('0x5b')][_0x670f('0x5c')]()+']',_0x670f('0x56'));_0x59e0ad[_0x670f('0x4b')]=util[_0x670f('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xb8cdef['serverUrl'],_0x59e0ad[_0x670f('0x4a')],md5(_0x59e0ad[_0x670f('0x4a')]));}else{_0x59e0ad[_0x670f('0x4b')]='';}headers[_0x670f('0x4c')]=getAuth(_0xb8cdef);return getUser(_0xb8cdef,'')[_0x670f('0x1e')](function(_0x51de89){_0xfd0440=_0x51de89;logger['info'](_0x670f('0x4d'),_0xfd0440['id']);return getEndUser(_0xb8cdef,_0x59e0ad[_0x670f('0x10')],_0x59e0ad[_0x670f('0x11')]);})[_0x670f('0x1e')](function(_0x40007b){_0x435e1b=_0x40007b;logger[_0x670f('0xc')](_0x670f('0x5d'),_0x435e1b['id']);return getTicket(_0xb8cdef,_0xfd0440,_0x435e1b,_0x4a603a,_0x59e0ad);})[_0x670f('0x1e')](function(_0x3c5c09){if(_0x3c5c09){logger['info'](_0x670f('0x4e'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x3c5c09['id']);}})['catch'](function(_0x4c9e45){logger[_0x670f('0x52')]('['+_0x59e0ad[_0x670f('0x5b')]['toUpperCase']()+']',JSON['stringify'](_0x4c9e45));});};