1a6b3b82d6cdf1d35b458089c5cea02e2dd2ac8e
[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 _0x5094=['length','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','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','idField','push','content','variable','variableName','customVariable','Variable','queue','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','catch','monitor_format','toUpperCase','request-promise','md5','./util','freshdesk','localhost','socket.io-emitter','redis','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','validateEmail','%s/api/v2/agents'];(function(_0x33dacd,_0xdf5a52){var _0x40e4c9=function(_0x133aae){while(--_0x133aae){_0x33dacd['push'](_0x33dacd['shift']());}};_0x40e4c9(++_0xdf5a52);}(_0x5094,0x1a8));var _0x4509=function(_0x9a51b3,_0x34ac18){_0x9a51b3=_0x9a51b3-0x0;var _0x4ca7b1=_0x5094[_0x9a51b3];return _0x4ca7b1;};'use strict';var _=require('lodash');var rp=require(_0x4509('0x0'));var md5=require(_0x4509('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x4509('0x2'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x4509('0x3'));config['redis']=_['defaults'](config['redis'],{'host':_0x4509('0x4'),'port':0x18eb});var io=require(_0x4509('0x5'))(new Redis(config[_0x4509('0x6')]));var headers={'Content-Type':_0x4509('0x7'),'Accept':_0x4509('0x7')};function emit(_0x2e3578,_0x1fc50a,_0x5a14b0){io['to'](_0x2e3578)['emit'](_0x1fc50a,_0x5a14b0);}function getTicket(_0x27be47,_0x1e4753,_0x41beea,_0x5608d6,_0x512631){logger[_0x4509('0x8')](_0x4509('0x9'));var _0x589063=_[_0x4509('0xa')]({'responder_id':_0x1e4753['id'],'requester_id':_0x41beea['id'],'name':util[_0x4509('0xb')](_0x4509('0xc'),_0x512631[_0x4509('0xd')]),'phone':_0x512631[_0x4509('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x4509('0xf')](_0x5608d6[_0x4509('0x10')],_0x512631,'\x20'),'description':intUtil[_0x4509('0xf')](_0x5608d6[_0x4509('0x11')],_0x512631,_0x4509('0x12')),'tags':getTags(_0x5608d6[_0x4509('0x13')],_0x4509('0x14'))},getCustomFields(_0x5608d6[_0x4509('0x15')],_0x512631));_0x589063[_0x4509('0x16')]=_[_0x4509('0x17')](_[_0x4509('0x18')](_0x589063[_0x4509('0x16')],'id'),'value');return request({'uri':util['format'](_0x4509('0x19'),_0x27be47[_0x4509('0x1a')]),'method':_0x4509('0x1b'),'body':_0x589063})[_0x4509('0x1c')](function(_0x3fcae6){logger[_0x4509('0x8')]('Ticket\x20created!');return _0x3fcae6;});}function getUser(_0x1bb732,_0x4e4350){if(intUtil[_0x4509('0x1d')](_0x4e4350)){return request({'uri':util[_0x4509('0xb')](_0x4509('0x1e'),_0x1bb732['remoteUri']),'qs':{'email':_0x4e4350}})[_0x4509('0x1c')](function(_0x39421c){if(_0x39421c[_0x4509('0x1f')]){logger['info']('Agent\x20found!');return _[_0x4509('0x20')](_0x39421c,function(_0x23545b){return _0x23545b[_0x4509('0x21')][_0x4509('0x22')]===_0x4e4350;});}else{logger[_0x4509('0x8')](_0x4509('0x23'));return request({'uri':util['format'](_0x4509('0x24'),_0x1bb732[_0x4509('0x1a')])})[_0x4509('0x1c')](function(_0x5ce83d){logger[_0x4509('0x8')](_0x4509('0x25'));return _0x5ce83d;});}});}else{logger[_0x4509('0x8')](_0x4509('0x26'));return request({'uri':util['format'](_0x4509('0x24'),_0x1bb732['remoteUri'])})[_0x4509('0x1c')](function(_0x2d8c0b){logger[_0x4509('0x8')](_0x4509('0x25'));return _0x2d8c0b;});}}function getEndUser(_0x44ec0e,_0x179dbd,_0x2bd3bb){logger['info'](_0x4509('0x27'),_0x2bd3bb);return request({'uri':util[_0x4509('0xb')](_0x4509('0x28'),_0x44ec0e['remoteUri']),'qs':{'phone':_0x2bd3bb}})['then'](function(_0xb9ef85){if(_0xb9ef85[_0x4509('0x1f')]){logger[_0x4509('0x8')](_0x4509('0x29'));return _[_0x4509('0x20')](_0xb9ef85,{'phone':_0x2bd3bb});}else{logger[_0x4509('0x8')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x4509('0xb')]('%s/api/v2/contacts',_0x44ec0e['remoteUri']),'method':'POST','body':{'name':_0x179dbd,'phone':_0x2bd3bb}})['then'](function(_0x273109){logger['info']('Enduser\x20created.');return _0x273109;});}});}function getAuth(_0x564d3b){return util[_0x4509('0xb')](_0x4509('0x2a'),new Buffer(_0x564d3b['apiKey']+':X')[_0x4509('0x2b')](_0x4509('0x2c')));}function request(_0xce612f){logger[_0x4509('0x2d')](_0x4509('0x2e'),JSON[_0x4509('0x2f')](_0xce612f));return rp(_['defaults'](_0xce612f,{'method':_0x4509('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x489ec3,_0x197079){var _0xf4b5bf=[];if(_0x489ec3&&_0x489ec3['length']>0x0){_0xf4b5bf=_[_0x4509('0x31')](_0x489ec3,_0x197079);}return _0xf4b5bf;}function getCustomFields(_0xf0d8c,_0x21ec9b){var _0x57ece5=[];var _0x1b6ace={'custom_fields':[]};if(_0xf0d8c[_0x4509('0x1f')]>0x0){_[_0x4509('0x32')](_0xf0d8c,function(_0x4b7e47){if(_[_0x4509('0x33')]([_0x4509('0x34'),_0x4509('0x35')],_0x4b7e47[_0x4509('0x36')])&&_0x4b7e47[_0x4509('0x37')]&&!_0x4b7e47[_0x4509('0x38')]){_0x1b6ace[_0x4b7e47['nameField'][_0x4509('0x39')]()]=_0x4b7e47['content'][_0x4509('0x2b')]();}else if(_[_0x4509('0x33')](['string',_0x4509('0x35')],_0x4b7e47[_0x4509('0x36')])&&_0x4b7e47[_0x4509('0x3a')]&&_0x4b7e47[_0x4509('0x38')]){_0x1b6ace['custom_fields'][_0x4509('0x3b')]({'id':_0x4b7e47[_0x4509('0x3a')],'value':_0x4b7e47[_0x4509('0x3c')][_0x4509('0x2b')]()});}else if(_0x4b7e47[_0x4509('0x36')]===_0x4509('0x3d')&&_0x4b7e47['variableName']&&_0x4b7e47['idField']&&_0x4b7e47[_0x4509('0x38')]){_0x21ec9b[_0x4b7e47[_0x4509('0x3e')]]&&_0x1b6ace[_0x4509('0x16')][_0x4509('0x3b')]({'id':_0x4b7e47[_0x4509('0x3a')],'value':_0x21ec9b[_0x4b7e47[_0x4509('0x3e')]]['toString']()});}else if(_0x4b7e47[_0x4509('0x36')]===_0x4509('0x3f')&&_0x4b7e47[_0x4509('0x40')]&&_0x4b7e47[_0x4509('0x40')]['name']&&_0x4b7e47['idField']&&_0x4b7e47[_0x4509('0x38')]){_0x21ec9b[_0x4b7e47[_0x4509('0x40')]['name'][_0x4509('0x39')]()]&&_0x1b6ace[_0x4509('0x16')]['push']({'id':_0x4b7e47['idField'],'value':_0x21ec9b[_0x4b7e47['Variable'][_0x4509('0x14')][_0x4509('0x39')]()][_0x4509('0x2b')]()});}});}return _0x1b6ace;}exports[_0x4509('0x41')]=function(_0x188cee,_0xedf076,_0x2a68c5,_0x23d878,_0x4311da,_0xaef846){var _0x46fb8f,_0x4434d3;_0xaef846[_0x4509('0x1a')]=intUtil['stripTrailingSlash'](_0xaef846[_0x4509('0x1a')]);_0xaef846[_0x4509('0x42')]=intUtil[_0x4509('0x43')](_0xaef846[_0x4509('0x42')]);if(_0x4311da&&_0x4311da['monitor_format']){logger[_0x4509('0x8')](_0x4509('0x44'),_0x4509('0x45'));_0xedf076[_0x4509('0x46')]=util[_0x4509('0xb')](_0x4509('0x47'),_0xaef846[_0x4509('0x42')],_0xedf076[_0x4509('0x48')],md5(_0xedf076[_0x4509('0x48')]));}else{_0xedf076[_0x4509('0x46')]='';}headers[_0x4509('0x49')]=getAuth(_0xaef846);return getUser(_0xaef846,_0x23d878[_0x4509('0x22')])[_0x4509('0x1c')](function(_0x83b166){_0x46fb8f=_0x83b166;logger[_0x4509('0x8')](_0x4509('0x4a'),_0x46fb8f['id']);return getEndUser(_0xaef846,_0xedf076[_0x4509('0xd')],_0xedf076[_0x4509('0xe')]);})[_0x4509('0x1c')](function(_0x63e1d9){_0x4434d3=_0x63e1d9;logger['info'](_0x4509('0x4b'),_0x4434d3['id']);return getTicket(_0xaef846,_0x46fb8f,_0x4434d3,_0x2a68c5,_0xedf076);})['then'](function(_0xedea66){if(_0xedea66&&_0xedea66['id']){logger[_0x4509('0x8')](_0x4509('0x4c'));logger[_0x4509('0x8')](_0x4509('0x4d'),_0xedea66['id']);logger[_0x4509('0x8')](_0x4509('0x44'),_0x4509('0x4e'));emit(util[_0x4509('0xb')](_0x4509('0x4f'),_0x23d878[_0x4509('0x14')]),_0x4509('0x50'),{'uri':util[_0x4509('0xb')](_0x4509('0x51'),_0xaef846[_0x4509('0x1a')],_0xedea66['id'])});}})['catch'](function(_0x19b76e){logger[_0x4509('0x52')](_0x4509('0x44'),JSON[_0x4509('0x2f')](_0x19b76e));});};exports[_0x4509('0x53')]=function(_0x263fa3,_0x2c2cad,_0xe20632,_0x45e4fd,_0x5b2d1e,_0x2ed924,_0xddfc35){var _0x1d6be1,_0x48b676;_0x2ed924[_0x4509('0x1a')]=intUtil[_0x4509('0x43')](_0x2ed924[_0x4509('0x1a')]);_0x2ed924[_0x4509('0x42')]=intUtil[_0x4509('0x43')](_0x2ed924[_0x4509('0x42')]);if(_0xddfc35&&_0xddfc35[_0x4509('0x54')]&&_0xddfc35['recordingFormat']!==_0x4509('0x55')){logger[_0x4509('0x8')](_0x4509('0x56'),'Recording\x20is\x20enabled!');_0x2c2cad[_0x4509('0x46')]=util[_0x4509('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2ed924[_0x4509('0x42')],_0x2c2cad[_0x4509('0x48')],md5(_0x2c2cad[_0x4509('0x48')]));}headers[_0x4509('0x49')]=getAuth(_0x2ed924);return getUser(_0x2ed924,_0x45e4fd['email'])[_0x4509('0x1c')](function(_0x520aee){_0x1d6be1=_0x520aee;logger[_0x4509('0x8')]('The\x20User\x20ID\x20is:',_0x1d6be1['id']);return getEndUser(_0x2ed924,_0x2c2cad[_0x4509('0x57')],_0x2c2cad['destcalleridnum']);})[_0x4509('0x1c')](function(_0x1036db){_0x48b676=_0x1036db;logger[_0x4509('0x8')](_0x4509('0x4b'),_0x48b676['id']);return getTicket(_0x2ed924,_0x1d6be1,_0x48b676,_0xe20632,_0x2c2cad);})['then'](function(_0x271697){if(_0x271697&&_0x271697['id']){logger[_0x4509('0x8')](_0x4509('0x4c'));logger[_0x4509('0x8')](_0x4509('0x4d'),_0x271697['id']);logger[_0x4509('0x8')](_0x4509('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x4509('0xb')]('user:%s',_0x45e4fd['name']),'trigger:browser:url',{'uri':util[_0x4509('0xb')](_0x4509('0x51'),_0x2ed924[_0x4509('0x1a')],_0x271697['id'])});}})[_0x4509('0x58')](function(_0x3c4e96){logger['error'](_0x4509('0x56'),JSON['stringify'](_0x3c4e96));});};exports['unmanaged']=function(_0x3af662,_0x1a26dc,_0x5e2c17,_0x8ab397,_0x47abd0,_0x64b375){var _0x57e15c,_0x256734;_0x64b375[_0x4509('0x1a')]=intUtil['stripTrailingSlash'](_0x64b375['remoteUri']);_0x64b375[_0x4509('0x42')]=intUtil[_0x4509('0x43')](_0x64b375[_0x4509('0x42')]);if(_0x47abd0&&_0x47abd0[_0x4509('0x59')]){logger[_0x4509('0x8')]('['+_0x1a26dc['lastevent'][_0x4509('0x5a')]()+']',_0x4509('0x45'));_0x1a26dc['recordingURL']=util['format'](_0x4509('0x47'),_0x64b375[_0x4509('0x42')],_0x1a26dc[_0x4509('0x48')],md5(_0x1a26dc[_0x4509('0x48')]));}else{_0x1a26dc[_0x4509('0x46')]='';}headers[_0x4509('0x49')]=getAuth(_0x64b375);return getUser(_0x64b375,'')[_0x4509('0x1c')](function(_0x2c382e){_0x57e15c=_0x2c382e;logger['info'](_0x4509('0x4a'),_0x57e15c['id']);return getEndUser(_0x64b375,_0x1a26dc[_0x4509('0xd')],_0x1a26dc[_0x4509('0xe')]);})[_0x4509('0x1c')](function(_0x2cae22){_0x256734=_0x2cae22;logger[_0x4509('0x8')]('The\x20Enduser\x20ID\x20is:',_0x256734['id']);return getTicket(_0x64b375,_0x57e15c,_0x256734,_0x5e2c17,_0x1a26dc);})[_0x4509('0x1c')](function(_0x3a878f){if(_0x3a878f){logger[_0x4509('0x8')](_0x4509('0x4c'));logger['info'](_0x4509('0x4d'),_0x3a878f['id']);}})['catch'](function(_0x22bf42){logger[_0x4509('0x52')]('['+_0x1a26dc['lastevent'][_0x4509('0x5a')]()+']',JSON[_0x4509('0x2f')](_0x22bf42));});};