769b6ad419da27a347cd16b27b2ba0468fd17483
[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 _0x988d=['%s/api/v2/agents','then','length','contact','%s/api/v2/agents/me','Admin\x20account\x20selected.','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','type','customField','nameField','toLowerCase','content','string','idField','variable','variableName','push','customVariable','Variable','name','queue','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','stripTrailingSlash','recordingFormat','none','Recording\x20is\x20enabled!','email','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','trigger:browser:url','monitor_format','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail'];(function(_0x50c671,_0x118b9c){var _0x7fc39f=function(_0x53f012){while(--_0x53f012){_0x50c671['push'](_0x50c671['shift']());}};_0x7fc39f(++_0x118b9c);}(_0x988d,0x98));var _0xd988=function(_0x6cb8bd,_0x41c74b){_0x6cb8bd=_0x6cb8bd-0x0;var _0x391aa8=_0x988d[_0x6cb8bd];return _0x391aa8;};'use strict';var _=require(_0xd988('0x0'));var rp=require(_0xd988('0x1'));var md5=require(_0xd988('0x2'));var util=require(_0xd988('0x3'));var Redis=require(_0xd988('0x4'));var intUtil=require(_0xd988('0x5'));var config=require('../../../../config/environment');var logger=require(_0xd988('0x6'))(_0xd988('0x7'));config[_0xd988('0x8')]=_[_0xd988('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xd988('0xa'))(new Redis(config[_0xd988('0x8')]));var headers={'Content-Type':_0xd988('0xb'),'Accept':_0xd988('0xb')};function emit(_0x447994,_0x46d487,_0x94b8cd){io['to'](_0x447994)[_0xd988('0xc')](_0x46d487,_0x94b8cd);}function getTicket(_0x5410dc,_0x502147,_0x5b0ae2,_0x527bd4,_0x237339){logger[_0xd988('0xd')](_0xd988('0xe'));var _0x12adba=_[_0xd988('0xf')]({'responder_id':_0x502147['id'],'requester_id':_0x5b0ae2['id'],'name':util[_0xd988('0x10')](_0xd988('0x11'),_0x237339[_0xd988('0x12')]),'phone':_0x237339[_0xd988('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd988('0x14')](_0x527bd4[_0xd988('0x15')],_0x237339,'\x20'),'description':intUtil['getString'](_0x527bd4[_0xd988('0x16')],_0x237339,'<br>'),'tags':getTags(_0x527bd4[_0xd988('0x17')],'name')},getCustomFields(_0x527bd4[_0xd988('0x18')],_0x237339));_0x12adba[_0xd988('0x19')]=_[_0xd988('0x1a')](_[_0xd988('0x1b')](_0x12adba[_0xd988('0x19')],'id'),_0xd988('0x1c'));return request({'uri':util[_0xd988('0x10')](_0xd988('0x1d'),_0x5410dc[_0xd988('0x1e')]),'method':_0xd988('0x1f'),'body':_0x12adba})['then'](function(_0x1af7ad){logger[_0xd988('0xd')](_0xd988('0x20'));return _0x1af7ad;});}function getUser(_0x2fe80c,_0x13b7af){if(intUtil[_0xd988('0x21')](_0x13b7af)){return request({'uri':util[_0xd988('0x10')](_0xd988('0x22'),_0x2fe80c['remoteUri']),'qs':{'email':_0x13b7af}})[_0xd988('0x23')](function(_0x1b937f){if(_0x1b937f[_0xd988('0x24')]){logger[_0xd988('0xd')]('Agent\x20found!');return _['find'](_0x1b937f,function(_0x41c680){return _0x41c680[_0xd988('0x25')]['email']===_0x13b7af;});}else{logger[_0xd988('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xd988('0x26'),_0x2fe80c[_0xd988('0x1e')])})[_0xd988('0x23')](function(_0x3c063a){logger[_0xd988('0xd')](_0xd988('0x27'));return _0x3c063a;});}});}else{logger[_0xd988('0xd')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xd988('0x10')](_0xd988('0x26'),_0x2fe80c[_0xd988('0x1e')])})[_0xd988('0x23')](function(_0x3843e7){logger['info'](_0xd988('0x27'));return _0x3843e7;});}}function getEndUser(_0x433dc9,_0x432d86,_0x1aa727){logger[_0xd988('0xd')]('Searching\x20enduser\x20with\x20phone',_0x1aa727);return request({'uri':util[_0xd988('0x10')](_0xd988('0x28'),_0x433dc9[_0xd988('0x1e')]),'qs':{'phone':_0x1aa727}})[_0xd988('0x23')](function(_0x5aef54){if(_0x5aef54[_0xd988('0x24')]){logger['info']('Enduser\x20found!');return _['find'](_0x5aef54,{'phone':_0x1aa727});}else{logger[_0xd988('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xd988('0x10')](_0xd988('0x28'),_0x433dc9[_0xd988('0x1e')]),'method':_0xd988('0x1f'),'body':{'name':_0x432d86,'phone':_0x1aa727}})['then'](function(_0x55b770){logger[_0xd988('0xd')](_0xd988('0x29'));return _0x55b770;});}});}function getAuth(_0x37b114){return util['format'](_0xd988('0x2a'),new Buffer(_0x37b114[_0xd988('0x2b')]+':X')[_0xd988('0x2c')](_0xd988('0x2d')));}function request(_0x4e7e96){logger[_0xd988('0x2e')](_0xd988('0x2f'),JSON[_0xd988('0x30')](_0x4e7e96));return rp(_[_0xd988('0x9')](_0x4e7e96,{'method':_0xd988('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x127217,_0x501e7a){var _0x21a542=[];if(_0x127217&&_0x127217[_0xd988('0x24')]>0x0){_0x21a542=_[_0xd988('0x32')](_0x127217,_0x501e7a);}return _0x21a542;}function getCustomFields(_0x2e39d7,_0x4fcb5b){var _0x21b886=[];var _0x4ce766={'custom_fields':[]};if(_0x2e39d7[_0xd988('0x24')]>0x0){_[_0xd988('0x33')](_0x2e39d7,function(_0x25b19c){if(_0x25b19c[_0xd988('0x34')]==='string'&&_0x25b19c['nameField']&&!_0x25b19c[_0xd988('0x35')]){_0x4ce766[_0x25b19c[_0xd988('0x36')][_0xd988('0x37')]()]=_0x25b19c[_0xd988('0x38')][_0xd988('0x2c')]();}else if(_0x25b19c[_0xd988('0x34')]===_0xd988('0x39')&&_0x25b19c['idField']&&_0x25b19c['customField']){_0x4ce766[_0xd988('0x19')]['push']({'id':_0x25b19c[_0xd988('0x3a')],'value':_0x25b19c[_0xd988('0x38')][_0xd988('0x2c')]()});}else if(_0x25b19c[_0xd988('0x34')]===_0xd988('0x3b')&&_0x25b19c[_0xd988('0x3c')]&&_0x25b19c[_0xd988('0x3a')]&&_0x25b19c[_0xd988('0x35')]){_0x4fcb5b[_0x25b19c[_0xd988('0x3c')]]&&_0x4ce766[_0xd988('0x19')][_0xd988('0x3d')]({'id':_0x25b19c[_0xd988('0x3a')],'value':_0x4fcb5b[_0x25b19c['variableName']][_0xd988('0x2c')]()});}else if(_0x25b19c[_0xd988('0x34')]===_0xd988('0x3e')&&_0x25b19c[_0xd988('0x3f')]&&_0x25b19c[_0xd988('0x3f')][_0xd988('0x40')]&&_0x25b19c[_0xd988('0x3a')]&&_0x25b19c[_0xd988('0x35')]){_0x4fcb5b[_0x25b19c[_0xd988('0x3f')][_0xd988('0x40')][_0xd988('0x37')]()]&&_0x4ce766[_0xd988('0x19')][_0xd988('0x3d')]({'id':_0x25b19c[_0xd988('0x3a')],'value':_0x4fcb5b[_0x25b19c[_0xd988('0x3f')][_0xd988('0x40')][_0xd988('0x37')]()][_0xd988('0x2c')]()});}});}return _0x4ce766;}exports[_0xd988('0x41')]=function(_0x560a1a,_0x416290,_0x574cf0,_0x1e2dc8,_0x20271e,_0x2ed0b8){var _0x5551c8,_0x15e88b;_0x2ed0b8[_0xd988('0x1e')]=intUtil['stripTrailingSlash'](_0x2ed0b8[_0xd988('0x1e')]);_0x2ed0b8[_0xd988('0x42')]=intUtil['stripTrailingSlash'](_0x2ed0b8['serverUrl']);if(_0x20271e&&_0x20271e['monitor_format']){logger[_0xd988('0xd')](_0xd988('0x43'),'Recording\x20is\x20enabled!');_0x416290[_0xd988('0x44')]=util[_0xd988('0x10')](_0xd988('0x45'),_0x2ed0b8[_0xd988('0x42')],_0x416290['uniqueid'],md5(_0x416290[_0xd988('0x46')]));}else{_0x416290[_0xd988('0x44')]='';}headers[_0xd988('0x47')]=getAuth(_0x2ed0b8);return getUser(_0x2ed0b8,_0x1e2dc8['email'])['then'](function(_0x9b844a){_0x5551c8=_0x9b844a;logger[_0xd988('0xd')](_0xd988('0x48'),_0x5551c8['id']);return getEndUser(_0x2ed0b8,_0x416290[_0xd988('0x12')],_0x416290[_0xd988('0x13')]);})[_0xd988('0x23')](function(_0x93d236){_0x15e88b=_0x93d236;logger[_0xd988('0xd')](_0xd988('0x49'),_0x15e88b['id']);return getTicket(_0x2ed0b8,_0x5551c8,_0x15e88b,_0x574cf0,_0x416290);})[_0xd988('0x23')](function(_0x590e35){if(_0x590e35&&_0x590e35['id']){logger['info']('Ticket\x20created!');logger[_0xd988('0xd')]('The\x20Ticket\x20ID\x20is:',_0x590e35['id']);logger[_0xd988('0xd')]('[QUEUE]',_0xd988('0x4a'));emit(util[_0xd988('0x10')](_0xd988('0x4b'),_0x1e2dc8['name']),'trigger:browser:url',{'uri':util[_0xd988('0x10')](_0xd988('0x4c'),_0x2ed0b8['remoteUri'],_0x590e35['id'])});}})[_0xd988('0x4d')](function(_0x2b982a){logger[_0xd988('0x4e')](_0xd988('0x43'),JSON[_0xd988('0x30')](_0x2b982a));});};exports[_0xd988('0x4f')]=function(_0x58b298,_0x5543e5,_0xc80969,_0x5755be,_0x5b87ce,_0x194695,_0x4847e1){var _0x34d945,_0x104d4f;_0x194695[_0xd988('0x1e')]=intUtil[_0xd988('0x50')](_0x194695['remoteUri']);_0x194695[_0xd988('0x42')]=intUtil[_0xd988('0x50')](_0x194695[_0xd988('0x42')]);if(_0x4847e1&&_0x4847e1['recordingFormat']&&_0x4847e1[_0xd988('0x51')]!==_0xd988('0x52')){logger[_0xd988('0xd')]('[OUTBOUND]',_0xd988('0x53'));_0x5543e5['recordingURL']=util['format'](_0xd988('0x45'),_0x194695['serverUrl'],_0x5543e5[_0xd988('0x46')],md5(_0x5543e5[_0xd988('0x46')]));}headers[_0xd988('0x47')]=getAuth(_0x194695);return getUser(_0x194695,_0x5755be[_0xd988('0x54')])['then'](function(_0x28f7d5){_0x34d945=_0x28f7d5;logger[_0xd988('0xd')](_0xd988('0x48'),_0x34d945['id']);return getEndUser(_0x194695,_0x5543e5[_0xd988('0x55')],_0x5543e5[_0xd988('0x56')]);})[_0xd988('0x23')](function(_0x144860){_0x104d4f=_0x144860;logger[_0xd988('0xd')](_0xd988('0x49'),_0x104d4f['id']);return getTicket(_0x194695,_0x34d945,_0x104d4f,_0xc80969,_0x5543e5);})[_0xd988('0x23')](function(_0x9cde84){if(_0x9cde84&&_0x9cde84['id']){logger[_0xd988('0xd')](_0xd988('0x20'));logger['info'](_0xd988('0x57'),_0x9cde84['id']);logger['info'](_0xd988('0x58'),_0xd988('0x4a'));emit(util['format'](_0xd988('0x4b'),_0x5755be['name']),_0xd988('0x59'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x194695[_0xd988('0x1e')],_0x9cde84['id'])});}})[_0xd988('0x4d')](function(_0x55101b){logger[_0xd988('0x4e')](_0xd988('0x58'),JSON[_0xd988('0x30')](_0x55101b));});};exports['unmanaged']=function(_0x22f061,_0x3d60ba,_0xf02705,_0x48f635,_0x402951,_0x18fda9){var _0x4eb014,_0xf3f5ad;_0x18fda9[_0xd988('0x1e')]=intUtil[_0xd988('0x50')](_0x18fda9[_0xd988('0x1e')]);_0x18fda9[_0xd988('0x42')]=intUtil[_0xd988('0x50')](_0x18fda9['serverUrl']);if(_0x402951&&_0x402951[_0xd988('0x5a')]){logger[_0xd988('0xd')]('['+_0x3d60ba[_0xd988('0x5b')][_0xd988('0x5c')]()+']','Recording\x20is\x20enabled!');_0x3d60ba[_0xd988('0x44')]=util[_0xd988('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x18fda9[_0xd988('0x42')],_0x3d60ba[_0xd988('0x46')],md5(_0x3d60ba[_0xd988('0x46')]));}else{_0x3d60ba[_0xd988('0x44')]='';}headers[_0xd988('0x47')]=getAuth(_0x18fda9);return getUser(_0x18fda9,'')[_0xd988('0x23')](function(_0x3372ae){_0x4eb014=_0x3372ae;logger[_0xd988('0xd')](_0xd988('0x48'),_0x4eb014['id']);return getEndUser(_0x18fda9,_0x3d60ba[_0xd988('0x12')],_0x3d60ba[_0xd988('0x13')]);})[_0xd988('0x23')](function(_0x56fa74){_0xf3f5ad=_0x56fa74;logger['info'](_0xd988('0x49'),_0xf3f5ad['id']);return getTicket(_0x18fda9,_0x4eb014,_0xf3f5ad,_0xf02705,_0x3d60ba);})[_0xd988('0x23')](function(_0x28887c){if(_0x28887c){logger['info'](_0xd988('0x20'));logger['info'](_0xd988('0x57'),_0x28887c['id']);}})[_0xd988('0x4d')](function(_0x1a14f1){logger[_0xd988('0x4e')]('['+_0x3d60ba[_0xd988('0x5b')][_0xd988('0x5c')]()+']',JSON[_0xd988('0x30')](_0x1a14f1));});};