dc6429d4d8b0c11a75eb03152727da75c0ccb733
[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 _0x98a1=['push','toString','variable','variableName','Variable','name','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]','abandoned','monitor_format','[ABANDONED]','lodash','request-promise','./util','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Fields','custom_fields','mapValues','keyBy','value','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','info','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','base64','stringify','GET','map','forEach','type','nameField','customField','toLowerCase','content','string','idField'];(function(_0x28394f,_0x5ebdd2){var _0x2618d2=function(_0x2ffed6){while(--_0x2ffed6){_0x28394f['push'](_0x28394f['shift']());}};_0x2618d2(++_0x5ebdd2);}(_0x98a1,0x121));var _0x198a=function(_0x1b76fd,_0x3ad023){_0x1b76fd=_0x1b76fd-0x0;var _0x4136b6=_0x98a1[_0x1b76fd];return _0x4136b6;};'use strict';var _=require(_0x198a('0x0'));var rp=require(_0x198a('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x198a('0x2'));var config=require(_0x198a('0x3'));var logger=require(_0x198a('0x4'))('freshdesk');config[_0x198a('0x5')]=_[_0x198a('0x6')](config[_0x198a('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x198a('0x7'))(new Redis(config['redis']));var headers={'Content-Type':_0x198a('0x8'),'Accept':_0x198a('0x8')};function emit(_0x4f2663,_0x2d90ca,_0x4bb03e){io['to'](_0x4f2663)[_0x198a('0x9')](_0x2d90ca,_0x4bb03e);}function getTicket(_0x1037ed,_0x362ece,_0x54c1ff,_0x42fbc7,_0x3efcee){logger['info'](_0x198a('0xa'));var _0x113934=_['merge']({'responder_id':_0x362ece['id'],'requester_id':_0x54c1ff['id'],'name':util[_0x198a('0xb')](_0x198a('0xc'),_0x3efcee[_0x198a('0xd')]),'phone':_0x3efcee[_0x198a('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x198a('0xf')](_0x42fbc7[_0x198a('0x10')],_0x3efcee,'\x20'),'description':intUtil['getString'](_0x42fbc7[_0x198a('0x11')],_0x3efcee,_0x198a('0x12')),'tags':getTags(_0x42fbc7['Tags'],'name')},getCustomFields(_0x42fbc7[_0x198a('0x13')],_0x3efcee));_0x113934[_0x198a('0x14')]=_[_0x198a('0x15')](_[_0x198a('0x16')](_0x113934['custom_fields'],'id'),_0x198a('0x17'));return request({'uri':util[_0x198a('0xb')]('%s/api/v2/tickets',_0x1037ed[_0x198a('0x18')]),'method':_0x198a('0x19'),'body':_0x113934})[_0x198a('0x1a')](function(_0x4075af){logger['info'](_0x198a('0x1b'));return _0x4075af;});}function getUser(_0xc3bea6,_0x58fa3c){if(intUtil[_0x198a('0x1c')](_0x58fa3c)){return request({'uri':util[_0x198a('0xb')](_0x198a('0x1d'),_0xc3bea6[_0x198a('0x18')]),'qs':{'email':_0x58fa3c}})['then'](function(_0x2df25c){if(_0x2df25c[_0x198a('0x1e')]){logger[_0x198a('0x1f')](_0x198a('0x20'));return _[_0x198a('0x21')](_0x2df25c,function(_0x3ba3b2){return _0x3ba3b2[_0x198a('0x22')][_0x198a('0x23')]===_0x58fa3c;});}else{logger[_0x198a('0x1f')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x198a('0xb')](_0x198a('0x24'),_0xc3bea6['remoteUri'])})[_0x198a('0x1a')](function(_0x57bb81){logger['info'](_0x198a('0x25'));return _0x57bb81;});}});}else{logger[_0x198a('0x1f')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x198a('0xb')](_0x198a('0x24'),_0xc3bea6[_0x198a('0x18')])})[_0x198a('0x1a')](function(_0x160cac){logger['info'](_0x198a('0x25'));return _0x160cac;});}}function getEndUser(_0x780f3f,_0x2cbc9a,_0x57ab1b){logger['info'](_0x198a('0x26'),_0x57ab1b);return request({'uri':util[_0x198a('0xb')](_0x198a('0x27'),_0x780f3f['remoteUri']),'qs':{'phone':_0x57ab1b}})[_0x198a('0x1a')](function(_0x3f4465){if(_0x3f4465[_0x198a('0x1e')]){logger[_0x198a('0x1f')]('Enduser\x20found!');return _[_0x198a('0x21')](_0x3f4465,{'phone':_0x57ab1b});}else{logger[_0x198a('0x1f')](_0x198a('0x28'));return request({'uri':util['format'](_0x198a('0x27'),_0x780f3f[_0x198a('0x18')]),'method':_0x198a('0x19'),'body':{'name':_0x2cbc9a,'phone':_0x57ab1b}})[_0x198a('0x1a')](function(_0x3bbf93){logger[_0x198a('0x1f')](_0x198a('0x29'));return _0x3bbf93;});}});}function getAuth(_0x10fc6a){return util[_0x198a('0xb')](_0x198a('0x2a'),new Buffer(_0x10fc6a['apiKey']+':X')['toString'](_0x198a('0x2b')));}function request(_0x281efe){logger['debug']('[HTTP]',JSON[_0x198a('0x2c')](_0x281efe));return rp(_[_0x198a('0x6')](_0x281efe,{'method':_0x198a('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x31ec8f,_0x29a92a){var _0x62312f=[];if(_0x31ec8f&&_0x31ec8f['length']>0x0){_0x62312f=_[_0x198a('0x2e')](_0x31ec8f,_0x29a92a);}return _0x62312f;}function getCustomFields(_0x1b96ff,_0x42524c){var _0x124730=[];var _0x569dea={'custom_fields':[]};if(_0x1b96ff['length']>0x0){_[_0x198a('0x2f')](_0x1b96ff,function(_0x18fc80){if(_0x18fc80[_0x198a('0x30')]==='string'&&_0x18fc80[_0x198a('0x31')]&&!_0x18fc80[_0x198a('0x32')]){_0x569dea[_0x18fc80[_0x198a('0x31')][_0x198a('0x33')]()]=_0x18fc80[_0x198a('0x34')]['toString']();}else if(_0x18fc80[_0x198a('0x30')]===_0x198a('0x35')&&_0x18fc80[_0x198a('0x36')]&&_0x18fc80[_0x198a('0x32')]){_0x569dea[_0x198a('0x14')][_0x198a('0x37')]({'id':_0x18fc80[_0x198a('0x36')],'value':_0x18fc80[_0x198a('0x34')][_0x198a('0x38')]()});}else if(_0x18fc80[_0x198a('0x30')]===_0x198a('0x39')&&_0x18fc80[_0x198a('0x3a')]&&_0x18fc80[_0x198a('0x36')]&&_0x18fc80[_0x198a('0x32')]){_0x42524c[_0x18fc80[_0x198a('0x3a')]]&&_0x569dea[_0x198a('0x14')][_0x198a('0x37')]({'id':_0x18fc80[_0x198a('0x36')],'value':_0x42524c[_0x18fc80[_0x198a('0x3a')]][_0x198a('0x38')]()});}else if(_0x18fc80[_0x198a('0x30')]==='customVariable'&&_0x18fc80[_0x198a('0x3b')]&&_0x18fc80[_0x198a('0x3b')]['name']&&_0x18fc80[_0x198a('0x36')]&&_0x18fc80[_0x198a('0x32')]){_0x42524c[_0x18fc80[_0x198a('0x3b')][_0x198a('0x3c')]['toLowerCase']()]&&_0x569dea[_0x198a('0x14')]['push']({'id':_0x18fc80[_0x198a('0x36')],'value':_0x42524c[_0x18fc80[_0x198a('0x3b')][_0x198a('0x3c')][_0x198a('0x33')]()][_0x198a('0x38')]()});}});}return _0x569dea;}exports['queue']=function(_0x21f741,_0x3521f4,_0x180557,_0x1e405f,_0x1adff4,_0x1c2d5a){var _0x5aba1e,_0x5ab9a2;_0x1c2d5a[_0x198a('0x18')]=intUtil['stripTrailingSlash'](_0x1c2d5a['remoteUri']);_0x1c2d5a[_0x198a('0x3d')]=intUtil[_0x198a('0x3e')](_0x1c2d5a[_0x198a('0x3d')]);if(_0x1adff4&&_0x1adff4['monitor_format']){logger['info'](_0x198a('0x3f'),_0x198a('0x40'));_0x3521f4[_0x198a('0x41')]=util[_0x198a('0xb')](_0x198a('0x42'),_0x1c2d5a[_0x198a('0x3d')],_0x3521f4[_0x198a('0x43')],md5(_0x3521f4['uniqueid']));}else{_0x3521f4[_0x198a('0x41')]='';}headers[_0x198a('0x44')]=getAuth(_0x1c2d5a);return getUser(_0x1c2d5a,_0x1e405f[_0x198a('0x23')])[_0x198a('0x1a')](function(_0x2179cc){_0x5aba1e=_0x2179cc;logger[_0x198a('0x1f')]('The\x20User\x20ID\x20is:',_0x5aba1e['id']);return getEndUser(_0x1c2d5a,_0x3521f4[_0x198a('0xd')],_0x3521f4[_0x198a('0xe')]);})[_0x198a('0x1a')](function(_0x241cae){_0x5ab9a2=_0x241cae;logger[_0x198a('0x1f')](_0x198a('0x45'),_0x5ab9a2['id']);return getTicket(_0x1c2d5a,_0x5aba1e,_0x5ab9a2,_0x180557,_0x3521f4);})[_0x198a('0x1a')](function(_0x275e1d){if(_0x275e1d&&_0x275e1d['id']){logger[_0x198a('0x1f')]('Ticket\x20created!');logger[_0x198a('0x1f')](_0x198a('0x46'),_0x275e1d['id']);logger[_0x198a('0x1f')](_0x198a('0x3f'),_0x198a('0x47'));emit(util['format'](_0x198a('0x48'),_0x1e405f[_0x198a('0x3c')]),_0x198a('0x49'),{'uri':util['format'](_0x198a('0x4a'),_0x1c2d5a[_0x198a('0x18')],_0x275e1d['id'])});}})[_0x198a('0x4b')](function(_0x2f0ff7){logger[_0x198a('0x4c')]('[QUEUE]',JSON['stringify'](_0x2f0ff7));});};exports[_0x198a('0x4d')]=function(_0x3ce178,_0x445534,_0x1476ed,_0x59f632,_0x448838,_0x273b4a,_0x1cff13){var _0x720f0c,_0x2a3701;_0x273b4a[_0x198a('0x18')]=intUtil[_0x198a('0x3e')](_0x273b4a[_0x198a('0x18')]);_0x273b4a['serverUrl']=intUtil['stripTrailingSlash'](_0x273b4a[_0x198a('0x3d')]);if(_0x1cff13&&_0x1cff13[_0x198a('0x4e')]&&_0x1cff13['recordingFormat']!==_0x198a('0x4f')){logger[_0x198a('0x1f')]('[OUTBOUND]',_0x198a('0x40'));_0x445534[_0x198a('0x41')]=util['format'](_0x198a('0x42'),_0x273b4a[_0x198a('0x3d')],_0x445534[_0x198a('0x43')],md5(_0x445534[_0x198a('0x43')]));}headers[_0x198a('0x44')]=getAuth(_0x273b4a);return getUser(_0x273b4a,_0x59f632[_0x198a('0x23')])[_0x198a('0x1a')](function(_0x4418c9){_0x720f0c=_0x4418c9;logger[_0x198a('0x1f')]('The\x20User\x20ID\x20is:',_0x720f0c['id']);return getEndUser(_0x273b4a,_0x445534[_0x198a('0x50')],_0x445534[_0x198a('0x51')]);})[_0x198a('0x1a')](function(_0x552e26){_0x2a3701=_0x552e26;logger[_0x198a('0x1f')]('The\x20Enduser\x20ID\x20is:',_0x2a3701['id']);return getTicket(_0x273b4a,_0x720f0c,_0x2a3701,_0x1476ed,_0x445534);})['then'](function(_0x517c7b){if(_0x517c7b&&_0x517c7b['id']){logger['info'](_0x198a('0x1b'));logger[_0x198a('0x1f')](_0x198a('0x46'),_0x517c7b['id']);logger[_0x198a('0x1f')](_0x198a('0x52'),_0x198a('0x47'));emit(util['format'](_0x198a('0x48'),_0x59f632['name']),_0x198a('0x49'),{'uri':util[_0x198a('0xb')](_0x198a('0x4a'),_0x273b4a['remoteUri'],_0x517c7b['id'])});}})['catch'](function(_0x3b6136){logger[_0x198a('0x4c')](_0x198a('0x52'),JSON['stringify'](_0x3b6136));});};exports[_0x198a('0x53')]=function(_0x51ddc5,_0x1cdced,_0x2b72e1,_0x4c9f85,_0x31149d,_0x101dbf){var _0x2105c1,_0x3fe795;_0x101dbf[_0x198a('0x18')]=intUtil['stripTrailingSlash'](_0x101dbf[_0x198a('0x18')]);_0x101dbf[_0x198a('0x3d')]=intUtil[_0x198a('0x3e')](_0x101dbf[_0x198a('0x3d')]);if(_0x31149d&&_0x31149d[_0x198a('0x54')]){logger[_0x198a('0x1f')](_0x198a('0x55'),_0x198a('0x40'));_0x1cdced[_0x198a('0x41')]=util[_0x198a('0xb')](_0x198a('0x42'),_0x101dbf[_0x198a('0x3d')],_0x1cdced[_0x198a('0x43')],md5(_0x1cdced[_0x198a('0x43')]));}else{_0x1cdced['recordingURL']='';}headers[_0x198a('0x44')]=getAuth(_0x101dbf);return getUser(_0x101dbf,'')['then'](function(_0x2bbb61){_0x2105c1=_0x2bbb61;logger['info']('The\x20User\x20ID\x20is:',_0x2105c1['id']);return getEndUser(_0x101dbf,_0x1cdced['calleridname'],_0x1cdced[_0x198a('0xe')]);})[_0x198a('0x1a')](function(_0x41f9c3){_0x3fe795=_0x41f9c3;logger['info']('The\x20Enduser\x20ID\x20is:',_0x3fe795['id']);return getTicket(_0x101dbf,_0x2105c1,_0x3fe795,_0x2b72e1,_0x1cdced);})['then'](function(_0x4abc47){if(_0x4abc47){logger[_0x198a('0x1f')](_0x198a('0x1b'));logger[_0x198a('0x1f')](_0x198a('0x46'),_0x4abc47['id']);}})[_0x198a('0x4b')](function(_0x1a3253){logger[_0x198a('0x4c')](_0x198a('0x55'),JSON[_0x198a('0x2c')](_0x1a3253));});};