65a33720d4ffb2a0c43cb758e4d3bef8b3547403
[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 _0x819b=['serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','stringify','outbound','recordingFormat','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Ticket\x20created!','error','unmanaged','lastevent','toUpperCase','util','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','Subjects','getString','Descriptions','name','Fields','mapValues','keyBy','%s/api/v2/tickets','then','validateEmail','%s/api/v2/agents','remoteUri','info','Agent\x20found!','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Basic\x20%s','apiKey','toString','base64','[HTTP]','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','push','variable','variableName','customVariable','Variable','stripTrailingSlash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x819b,0x188));var _0xb819=function(_0x1188a8,_0xc1498d){_0x1188a8=_0x1188a8-0x0;var _0x50c1c1=_0x819b[_0x1188a8];return _0x50c1c1;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0xb819('0x0'));var Redis=require('ioredis');var intUtil=require(_0xb819('0x1'));var config=require('../../../../config/environment');var logger=require(_0xb819('0x2'))(_0xb819('0x3'));config[_0xb819('0x4')]=_[_0xb819('0x5')](config[_0xb819('0x4')],{'host':_0xb819('0x6'),'port':0x18eb});var io=require(_0xb819('0x7'))(new Redis(config[_0xb819('0x4')]));var headers={'Content-Type':_0xb819('0x8'),'Accept':_0xb819('0x8')};function emit(_0x3c3d1d,_0x42cabc,_0x3e5792){io['to'](_0x3c3d1d)[_0xb819('0x9')](_0x42cabc,_0x3e5792);}function getTicket(_0x2843a0,_0x49c674,_0x45ce78,_0x2c89a1,_0x31ddfc){logger['info'](_0xb819('0xa'));var _0x31271a=_[_0xb819('0xb')]({'responder_id':_0x49c674['id'],'requester_id':_0x45ce78['id'],'name':util[_0xb819('0xc')](_0xb819('0xd'),_0x31ddfc['calleridname']),'phone':_0x31ddfc[_0xb819('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2c89a1[_0xb819('0xf')],_0x31ddfc,'\x20'),'description':intUtil[_0xb819('0x10')](_0x2c89a1[_0xb819('0x11')],_0x31ddfc,'<br>'),'tags':getTags(_0x2c89a1['Tags'],_0xb819('0x12'))},getCustomFields(_0x2c89a1[_0xb819('0x13')],_0x31ddfc));_0x31271a['custom_fields']=_[_0xb819('0x14')](_[_0xb819('0x15')](_0x31271a['custom_fields'],'id'),'value');return request({'uri':util[_0xb819('0xc')](_0xb819('0x16'),_0x2843a0['remoteUri']),'method':'POST','body':_0x31271a})[_0xb819('0x17')](function(_0x188c48){logger['info']('Ticket\x20created!');return _0x188c48;});}function getUser(_0x3c3556,_0x492bdd){if(intUtil[_0xb819('0x18')](_0x492bdd)){return request({'uri':util['format'](_0xb819('0x19'),_0x3c3556[_0xb819('0x1a')]),'qs':{'email':_0x492bdd}})[_0xb819('0x17')](function(_0x540724){if(_0x540724['length']){logger[_0xb819('0x1b')](_0xb819('0x1c'));return _[_0xb819('0x1d')](_0x540724,function(_0x557709){return _0x557709['contact']['email']===_0x492bdd;});}else{logger['info'](_0xb819('0x1e'));return request({'uri':util['format'](_0xb819('0x1f'),_0x3c3556[_0xb819('0x1a')])})[_0xb819('0x17')](function(_0x48fde4){logger[_0xb819('0x1b')](_0xb819('0x20'));return _0x48fde4;});}});}else{logger[_0xb819('0x1b')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xb819('0x1f'),_0x3c3556[_0xb819('0x1a')])})['then'](function(_0x3fcc75){logger[_0xb819('0x1b')](_0xb819('0x20'));return _0x3fcc75;});}}function getEndUser(_0x3b6f7e,_0x253839,_0x524aa9){logger['info'](_0xb819('0x21'),_0x524aa9);return request({'uri':util[_0xb819('0xc')](_0xb819('0x22'),_0x3b6f7e['remoteUri']),'qs':{'phone':_0x524aa9}})['then'](function(_0x1e5166){if(_0x1e5166[_0xb819('0x23')]){logger[_0xb819('0x1b')](_0xb819('0x24'));return _['find'](_0x1e5166,{'phone':_0x524aa9});}else{logger['info'](_0xb819('0x25'));return request({'uri':util[_0xb819('0xc')](_0xb819('0x22'),_0x3b6f7e[_0xb819('0x1a')]),'method':_0xb819('0x26'),'body':{'name':_0x253839,'phone':_0x524aa9}})[_0xb819('0x17')](function(_0x4f82ef){logger[_0xb819('0x1b')]('Enduser\x20created.');return _0x4f82ef;});}});}function getAuth(_0x4e2414){return util[_0xb819('0xc')](_0xb819('0x27'),new Buffer(_0x4e2414[_0xb819('0x28')]+':X')[_0xb819('0x29')](_0xb819('0x2a')));}function request(_0x47c8db){logger['debug'](_0xb819('0x2b'),JSON['stringify'](_0x47c8db));return rp(_[_0xb819('0x5')](_0x47c8db,{'method':_0xb819('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x27a084,_0x332517){var _0x276b47=[];if(_0x27a084&&_0x27a084[_0xb819('0x23')]>0x0){_0x276b47=_[_0xb819('0x2d')](_0x27a084,_0x332517);}return _0x276b47;}function getCustomFields(_0x13a8eb,_0x174b1f){var _0x4b68e7=[];var _0x1641b2={'custom_fields':[]};if(_0x13a8eb[_0xb819('0x23')]>0x0){_[_0xb819('0x2e')](_0x13a8eb,function(_0x4d805c){if(_[_0xb819('0x2f')](['string',_0xb819('0x30')],_0x4d805c[_0xb819('0x31')])&&_0x4d805c[_0xb819('0x32')]&&!_0x4d805c[_0xb819('0x33')]){_0x1641b2[_0x4d805c[_0xb819('0x32')][_0xb819('0x34')]()]=_0x4d805c[_0xb819('0x35')]['toString']();}else if(_[_0xb819('0x2f')]([_0xb819('0x36'),'picklist'],_0x4d805c['type'])&&_0x4d805c[_0xb819('0x37')]&&_0x4d805c['customField']){_0x1641b2[_0xb819('0x38')][_0xb819('0x39')]({'id':_0x4d805c[_0xb819('0x37')],'value':_0x4d805c[_0xb819('0x35')]['toString']()});}else if(_0x4d805c[_0xb819('0x31')]===_0xb819('0x3a')&&_0x4d805c['variableName']&&_0x4d805c[_0xb819('0x37')]&&_0x4d805c[_0xb819('0x33')]){_0x174b1f[_0x4d805c[_0xb819('0x3b')]]&&_0x1641b2[_0xb819('0x38')][_0xb819('0x39')]({'id':_0x4d805c[_0xb819('0x37')],'value':_0x174b1f[_0x4d805c[_0xb819('0x3b')]][_0xb819('0x29')]()});}else if(_0x4d805c[_0xb819('0x31')]===_0xb819('0x3c')&&_0x4d805c[_0xb819('0x3d')]&&_0x4d805c[_0xb819('0x3d')][_0xb819('0x12')]&&_0x4d805c[_0xb819('0x37')]&&_0x4d805c[_0xb819('0x33')]){_0x174b1f[_0x4d805c[_0xb819('0x3d')]['name'][_0xb819('0x34')]()]&&_0x1641b2[_0xb819('0x38')]['push']({'id':_0x4d805c[_0xb819('0x37')],'value':_0x174b1f[_0x4d805c['Variable'][_0xb819('0x12')][_0xb819('0x34')]()][_0xb819('0x29')]()});}});}return _0x1641b2;}exports['queue']=function(_0x4bce3a,_0x4196ed,_0x2eb871,_0x495dd3,_0x49e228,_0x80cafd){var _0x27f426,_0x4d93cd;_0x80cafd[_0xb819('0x1a')]=intUtil[_0xb819('0x3e')](_0x80cafd[_0xb819('0x1a')]);_0x80cafd[_0xb819('0x3f')]=intUtil[_0xb819('0x3e')](_0x80cafd[_0xb819('0x3f')]);if(_0x49e228&&_0x49e228[_0xb819('0x40')]){logger[_0xb819('0x1b')](_0xb819('0x41'),_0xb819('0x42'));_0x4196ed[_0xb819('0x43')]=util['format'](_0xb819('0x44'),_0x80cafd[_0xb819('0x3f')],_0x4196ed[_0xb819('0x45')],md5(_0x4196ed[_0xb819('0x45')]));}else{_0x4196ed['recordingURL']='';}headers[_0xb819('0x46')]=getAuth(_0x80cafd);return getUser(_0x80cafd,_0x495dd3[_0xb819('0x47')])[_0xb819('0x17')](function(_0x5caf71){_0x27f426=_0x5caf71;logger[_0xb819('0x1b')]('The\x20User\x20ID\x20is:',_0x27f426['id']);return getEndUser(_0x80cafd,_0x4196ed[_0xb819('0x48')],_0x4196ed[_0xb819('0xe')]);})[_0xb819('0x17')](function(_0x156a04){_0x4d93cd=_0x156a04;logger['info'](_0xb819('0x49'),_0x4d93cd['id']);return getTicket(_0x80cafd,_0x27f426,_0x4d93cd,_0x2eb871,_0x4196ed);})['then'](function(_0x20bf41){if(_0x20bf41&&_0x20bf41['id']){logger[_0xb819('0x1b')]('Ticket\x20created!');logger[_0xb819('0x1b')](_0xb819('0x4a'),_0x20bf41['id']);logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb819('0xc')](_0xb819('0x4b'),_0x495dd3[_0xb819('0x12')]),_0xb819('0x4c'),{'uri':util['format'](_0xb819('0x4d'),_0x80cafd[_0xb819('0x1a')],_0x20bf41['id'])});}})[_0xb819('0x4e')](function(_0x306347){logger['error'](_0xb819('0x41'),JSON[_0xb819('0x4f')](_0x306347));});};exports[_0xb819('0x50')]=function(_0x55a7f7,_0x13ac18,_0x1c86d6,_0x307955,_0x4ab9af,_0x8b7d22,_0x3a131f){var _0x2d5290,_0x5a578d;_0x8b7d22[_0xb819('0x1a')]=intUtil[_0xb819('0x3e')](_0x8b7d22[_0xb819('0x1a')]);_0x8b7d22[_0xb819('0x3f')]=intUtil[_0xb819('0x3e')](_0x8b7d22[_0xb819('0x3f')]);if(_0x3a131f&&_0x3a131f['recordingFormat']&&_0x3a131f[_0xb819('0x51')]!=='none'){logger['info'](_0xb819('0x52'),'Recording\x20is\x20enabled!');_0x13ac18[_0xb819('0x43')]=util['format'](_0xb819('0x44'),_0x8b7d22['serverUrl'],_0x13ac18['uniqueid'],md5(_0x13ac18[_0xb819('0x45')]));}headers[_0xb819('0x46')]=getAuth(_0x8b7d22);return getUser(_0x8b7d22,_0x307955[_0xb819('0x47')])[_0xb819('0x17')](function(_0x483982){_0x2d5290=_0x483982;logger[_0xb819('0x1b')](_0xb819('0x53'),_0x2d5290['id']);return getEndUser(_0x8b7d22,_0x13ac18[_0xb819('0x54')],_0x13ac18[_0xb819('0x55')]);})[_0xb819('0x17')](function(_0x36b2c4){_0x5a578d=_0x36b2c4;logger[_0xb819('0x1b')](_0xb819('0x49'),_0x5a578d['id']);return getTicket(_0x8b7d22,_0x2d5290,_0x5a578d,_0x1c86d6,_0x13ac18);})[_0xb819('0x17')](function(_0x32bde2){if(_0x32bde2&&_0x32bde2['id']){logger[_0xb819('0x1b')](_0xb819('0x56'));logger[_0xb819('0x1b')](_0xb819('0x4a'),_0x32bde2['id']);logger[_0xb819('0x1b')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xb819('0x4b'),_0x307955[_0xb819('0x12')]),'trigger:browser:url',{'uri':util[_0xb819('0xc')]('%s/helpdesk/tickets/%d',_0x8b7d22['remoteUri'],_0x32bde2['id'])});}})[_0xb819('0x4e')](function(_0x4cd0e0){logger[_0xb819('0x57')](_0xb819('0x52'),JSON[_0xb819('0x4f')](_0x4cd0e0));});};exports[_0xb819('0x58')]=function(_0x24ae4c,_0x369f1d,_0x2943e8,_0x4d219d,_0x31f972,_0x2ad59d){var _0x1b0b98,_0x3ac3d7;_0x2ad59d[_0xb819('0x1a')]=intUtil['stripTrailingSlash'](_0x2ad59d['remoteUri']);_0x2ad59d[_0xb819('0x3f')]=intUtil['stripTrailingSlash'](_0x2ad59d[_0xb819('0x3f')]);if(_0x31f972&&_0x31f972['monitor_format']){logger[_0xb819('0x1b')]('['+_0x369f1d[_0xb819('0x59')][_0xb819('0x5a')]()+']',_0xb819('0x42'));_0x369f1d[_0xb819('0x43')]=util[_0xb819('0xc')](_0xb819('0x44'),_0x2ad59d[_0xb819('0x3f')],_0x369f1d['uniqueid'],md5(_0x369f1d[_0xb819('0x45')]));}else{_0x369f1d[_0xb819('0x43')]='';}headers['Authorization']=getAuth(_0x2ad59d);return getUser(_0x2ad59d,'')[_0xb819('0x17')](function(_0x4ed017){_0x1b0b98=_0x4ed017;logger[_0xb819('0x1b')]('The\x20User\x20ID\x20is:',_0x1b0b98['id']);return getEndUser(_0x2ad59d,_0x369f1d[_0xb819('0x48')],_0x369f1d[_0xb819('0xe')]);})[_0xb819('0x17')](function(_0x457079){_0x3ac3d7=_0x457079;logger[_0xb819('0x1b')](_0xb819('0x49'),_0x3ac3d7['id']);return getTicket(_0x2ad59d,_0x1b0b98,_0x3ac3d7,_0x2943e8,_0x369f1d);})[_0xb819('0x17')](function(_0x45f3dd){if(_0x45f3dd){logger[_0xb819('0x1b')](_0xb819('0x56'));logger[_0xb819('0x1b')](_0xb819('0x4a'),_0x45f3dd['id']);}})[_0xb819('0x4e')](function(_0x1a2ed8){logger[_0xb819('0x57')]('['+_0x369f1d[_0xb819('0x59')][_0xb819('0x5a')]()+']',JSON['stringify'](_0x1a2ed8));});};