672a29d056f8a8c01276a9c0a4cf476a11a9c2b4
[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 _0x37de=['includes','string','picklist','type','nameField','toLowerCase','customField','push','variable','idField','variableName','customVariable','Variable','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','%s/helpdesk/tickets/%d','unmanaged','toUpperCase','calleridname','lastevent','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','getString','Subjects','Descriptions','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','then','length','Agent\x20found!','find','email','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','debug','[HTTP]','stringify','map','forEach'];(function(_0x1ba50e,_0x25e8fe){var _0x426103=function(_0x56bf0d){while(--_0x56bf0d){_0x1ba50e['push'](_0x1ba50e['shift']());}};_0x426103(++_0x25e8fe);}(_0x37de,0x146));var _0xe37d=function(_0x5613de,_0x479c93){_0x5613de=_0x5613de-0x0;var _0x5b40cb=_0x37de[_0x5613de];return _0x5b40cb;};'use strict';var _=require(_0xe37d('0x0'));var rp=require(_0xe37d('0x1'));var md5=require(_0xe37d('0x2'));var util=require(_0xe37d('0x3'));var Redis=require(_0xe37d('0x4'));var intUtil=require(_0xe37d('0x5'));var config=require(_0xe37d('0x6'));var logger=require(_0xe37d('0x7'))(_0xe37d('0x8'));config[_0xe37d('0x9')]=_[_0xe37d('0xa')](config[_0xe37d('0x9')],{'host':_0xe37d('0xb'),'port':0x18eb});var io=require(_0xe37d('0xc'))(new Redis(config[_0xe37d('0x9')]));var headers={'Content-Type':'application/json','Accept':_0xe37d('0xd')};function emit(_0x20dc83,_0x5892de,_0x1f8d09){io['to'](_0x20dc83)[_0xe37d('0xe')](_0x5892de,_0x1f8d09);}function getTicket(_0x772329,_0x478463,_0x5b4ca1,_0x303586,_0x123217){logger[_0xe37d('0xf')](_0xe37d('0x10'));var _0xef7c2e=_[_0xe37d('0x11')]({'responder_id':_0x478463['id'],'requester_id':_0x5b4ca1['id'],'name':util[_0xe37d('0x12')](_0xe37d('0x13'),_0x123217['calleridname']),'phone':_0x123217['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xe37d('0x14')](_0x303586[_0xe37d('0x15')],_0x123217,'\x20'),'description':intUtil['getString'](_0x303586[_0xe37d('0x16')],_0x123217,'<br>'),'tags':getTags(_0x303586['Tags'],_0xe37d('0x17'))},getCustomFields(_0x303586[_0xe37d('0x18')],_0x123217));_0xef7c2e[_0xe37d('0x19')]=_[_0xe37d('0x1a')](_[_0xe37d('0x1b')](_0xef7c2e[_0xe37d('0x19')],'id'),_0xe37d('0x1c'));return request({'uri':util['format'](_0xe37d('0x1d'),_0x772329['remoteUri']),'method':_0xe37d('0x1e'),'body':_0xef7c2e})['then'](function(_0x1da98a){logger['info'](_0xe37d('0x1f'));return _0x1da98a;});}function getUser(_0x480587,_0x270c3e){if(intUtil[_0xe37d('0x20')](_0x270c3e)){return request({'uri':util[_0xe37d('0x12')](_0xe37d('0x21'),_0x480587[_0xe37d('0x22')]),'qs':{'email':_0x270c3e}})[_0xe37d('0x23')](function(_0x59fcc5){if(_0x59fcc5[_0xe37d('0x24')]){logger[_0xe37d('0xf')](_0xe37d('0x25'));return _[_0xe37d('0x26')](_0x59fcc5,function(_0x500501){return _0x500501['contact'][_0xe37d('0x27')]===_0x270c3e;});}else{logger[_0xe37d('0xf')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xe37d('0x12')]('%s/api/v2/agents/me',_0x480587[_0xe37d('0x22')])})['then'](function(_0x50056c){logger[_0xe37d('0xf')](_0xe37d('0x28'));return _0x50056c;});}});}else{logger[_0xe37d('0xf')](_0xe37d('0x29'));return request({'uri':util['format'](_0xe37d('0x2a'),_0x480587[_0xe37d('0x22')])})['then'](function(_0x3a87f6){logger[_0xe37d('0xf')](_0xe37d('0x28'));return _0x3a87f6;});}}function getEndUser(_0x36fe02,_0x3afd00,_0x37bd4d){logger[_0xe37d('0xf')](_0xe37d('0x2b'),_0x37bd4d);return request({'uri':util[_0xe37d('0x12')](_0xe37d('0x2c'),_0x36fe02['remoteUri']),'qs':{'phone':_0x37bd4d}})[_0xe37d('0x23')](function(_0x2fd570){if(_0x2fd570[_0xe37d('0x24')]){logger['info']('Enduser\x20found!');return _[_0xe37d('0x26')](_0x2fd570,{'phone':_0x37bd4d});}else{logger[_0xe37d('0xf')](_0xe37d('0x2d'));return request({'uri':util['format'](_0xe37d('0x2c'),_0x36fe02[_0xe37d('0x22')]),'method':_0xe37d('0x1e'),'body':{'name':_0x3afd00,'phone':_0x37bd4d}})[_0xe37d('0x23')](function(_0x4d7b7b){logger[_0xe37d('0xf')](_0xe37d('0x2e'));return _0x4d7b7b;});}});}function getAuth(_0x3ca50d){return util[_0xe37d('0x12')](_0xe37d('0x2f'),new Buffer(_0x3ca50d['apiKey']+':X')[_0xe37d('0x30')]('base64'));}function request(_0x3ebf75){logger[_0xe37d('0x31')](_0xe37d('0x32'),JSON[_0xe37d('0x33')](_0x3ebf75));return rp(_[_0xe37d('0xa')](_0x3ebf75,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x33d03e,_0x4ff599){var _0x579a05=[];if(_0x33d03e&&_0x33d03e[_0xe37d('0x24')]>0x0){_0x579a05=_[_0xe37d('0x34')](_0x33d03e,_0x4ff599);}return _0x579a05;}function getCustomFields(_0x38a09b,_0x425520){var _0x39b221=[];var _0x4cc1e2={'custom_fields':[]};if(_0x38a09b['length']>0x0){_[_0xe37d('0x35')](_0x38a09b,function(_0x4c1395){if(_[_0xe37d('0x36')]([_0xe37d('0x37'),_0xe37d('0x38')],_0x4c1395[_0xe37d('0x39')])&&_0x4c1395[_0xe37d('0x3a')]&&!_0x4c1395['customField']){_0x4cc1e2[_0x4c1395[_0xe37d('0x3a')][_0xe37d('0x3b')]()]=_0x4c1395['content'][_0xe37d('0x30')]();}else if(_[_0xe37d('0x36')]([_0xe37d('0x37'),_0xe37d('0x38')],_0x4c1395[_0xe37d('0x39')])&&_0x4c1395['idField']&&_0x4c1395[_0xe37d('0x3c')]){_0x4cc1e2[_0xe37d('0x19')][_0xe37d('0x3d')]({'id':_0x4c1395['idField'],'value':_0x4c1395['content'][_0xe37d('0x30')]()});}else if(_0x4c1395['type']===_0xe37d('0x3e')&&_0x4c1395['variableName']&&_0x4c1395[_0xe37d('0x3f')]&&_0x4c1395[_0xe37d('0x3c')]){_0x425520[_0x4c1395['variableName']]&&_0x4cc1e2[_0xe37d('0x19')][_0xe37d('0x3d')]({'id':_0x4c1395[_0xe37d('0x3f')],'value':_0x425520[_0x4c1395[_0xe37d('0x40')]]['toString']()});}else if(_0x4c1395['type']===_0xe37d('0x41')&&_0x4c1395[_0xe37d('0x42')]&&_0x4c1395[_0xe37d('0x42')]['name']&&_0x4c1395[_0xe37d('0x3f')]&&_0x4c1395['customField']){_0x425520[_0x4c1395['Variable']['name']['toLowerCase']()]&&_0x4cc1e2['custom_fields'][_0xe37d('0x3d')]({'id':_0x4c1395[_0xe37d('0x3f')],'value':_0x425520[_0x4c1395['Variable'][_0xe37d('0x17')][_0xe37d('0x3b')]()][_0xe37d('0x30')]()});}});}return _0x4cc1e2;}exports['queue']=function(_0xb7ea33,_0x2365e9,_0x363389,_0x569206,_0x36b44e,_0xf342fe){var _0x159aa1,_0x4805d8;_0xf342fe[_0xe37d('0x22')]=intUtil[_0xe37d('0x43')](_0xf342fe[_0xe37d('0x22')]);_0xf342fe['serverUrl']=intUtil[_0xe37d('0x43')](_0xf342fe['serverUrl']);if(_0x36b44e&&_0x36b44e[_0xe37d('0x44')]){logger[_0xe37d('0xf')](_0xe37d('0x45'),'Recording\x20is\x20enabled!');_0x2365e9[_0xe37d('0x46')]=util[_0xe37d('0x12')](_0xe37d('0x47'),_0xf342fe[_0xe37d('0x48')],_0x2365e9['uniqueid'],md5(_0x2365e9[_0xe37d('0x49')]));}else{_0x2365e9[_0xe37d('0x46')]='';}headers[_0xe37d('0x4a')]=getAuth(_0xf342fe);return getUser(_0xf342fe,_0x569206[_0xe37d('0x27')])[_0xe37d('0x23')](function(_0xfe2417){_0x159aa1=_0xfe2417;logger[_0xe37d('0xf')](_0xe37d('0x4b'),_0x159aa1['id']);return getEndUser(_0xf342fe,_0x2365e9['calleridname'],_0x2365e9[_0xe37d('0x4c')]);})['then'](function(_0x1ca4b4){_0x4805d8=_0x1ca4b4;logger[_0xe37d('0xf')](_0xe37d('0x4d'),_0x4805d8['id']);return getTicket(_0xf342fe,_0x159aa1,_0x4805d8,_0x363389,_0x2365e9);})['then'](function(_0x476660){if(_0x476660&&_0x476660['id']){logger['info']('Ticket\x20created!');logger[_0xe37d('0xf')](_0xe37d('0x4e'),_0x476660['id']);logger[_0xe37d('0xf')]('[QUEUE]',_0xe37d('0x4f'));emit(util[_0xe37d('0x12')](_0xe37d('0x50'),_0x569206[_0xe37d('0x17')]),_0xe37d('0x51'),{'uri':util[_0xe37d('0x12')]('%s/helpdesk/tickets/%d',_0xf342fe[_0xe37d('0x22')],_0x476660['id'])});}})[_0xe37d('0x52')](function(_0x2494b){logger['error'](_0xe37d('0x45'),JSON[_0xe37d('0x33')](_0x2494b));});};exports[_0xe37d('0x53')]=function(_0xf80310,_0x59cacb,_0x156650,_0x1eb3e9,_0xcb55f4,_0x18c5a7,_0xff947){var _0x5a5094,_0x3f7bff;_0x18c5a7[_0xe37d('0x22')]=intUtil[_0xe37d('0x43')](_0x18c5a7['remoteUri']);_0x18c5a7['serverUrl']=intUtil[_0xe37d('0x43')](_0x18c5a7[_0xe37d('0x48')]);if(_0xff947&&_0xff947[_0xe37d('0x54')]&&_0xff947[_0xe37d('0x54')]!==_0xe37d('0x55')){logger[_0xe37d('0xf')](_0xe37d('0x56'),_0xe37d('0x57'));_0x59cacb['recordingURL']=util[_0xe37d('0x12')](_0xe37d('0x47'),_0x18c5a7[_0xe37d('0x48')],_0x59cacb[_0xe37d('0x49')],md5(_0x59cacb[_0xe37d('0x49')]));}headers[_0xe37d('0x4a')]=getAuth(_0x18c5a7);return getUser(_0x18c5a7,_0x1eb3e9[_0xe37d('0x27')])[_0xe37d('0x23')](function(_0x5cc8e0){_0x5a5094=_0x5cc8e0;logger[_0xe37d('0xf')]('The\x20User\x20ID\x20is:',_0x5a5094['id']);return getEndUser(_0x18c5a7,_0x59cacb[_0xe37d('0x58')],_0x59cacb[_0xe37d('0x59')]);})['then'](function(_0x2b28e0){_0x3f7bff=_0x2b28e0;logger['info'](_0xe37d('0x4d'),_0x3f7bff['id']);return getTicket(_0x18c5a7,_0x5a5094,_0x3f7bff,_0x156650,_0x59cacb);})[_0xe37d('0x23')](function(_0x553a27){if(_0x553a27&&_0x553a27['id']){logger[_0xe37d('0xf')](_0xe37d('0x1f'));logger[_0xe37d('0xf')](_0xe37d('0x4e'),_0x553a27['id']);logger[_0xe37d('0xf')]('[OUTBOUND]',_0xe37d('0x4f'));emit(util[_0xe37d('0x12')](_0xe37d('0x50'),_0x1eb3e9['name']),_0xe37d('0x51'),{'uri':util[_0xe37d('0x12')](_0xe37d('0x5a'),_0x18c5a7['remoteUri'],_0x553a27['id'])});}})['catch'](function(_0x3bf44e){logger['error'](_0xe37d('0x56'),JSON['stringify'](_0x3bf44e));});};exports[_0xe37d('0x5b')]=function(_0x4743f4,_0x1208ee,_0x736e2a,_0x25dfd3,_0x52c642,_0x148954){var _0x2020ac,_0x22ffd4;_0x148954['remoteUri']=intUtil[_0xe37d('0x43')](_0x148954['remoteUri']);_0x148954['serverUrl']=intUtil[_0xe37d('0x43')](_0x148954[_0xe37d('0x48')]);if(_0x52c642&&_0x52c642[_0xe37d('0x44')]){logger[_0xe37d('0xf')]('['+_0x1208ee['lastevent'][_0xe37d('0x5c')]()+']',_0xe37d('0x57'));_0x1208ee[_0xe37d('0x46')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x148954['serverUrl'],_0x1208ee[_0xe37d('0x49')],md5(_0x1208ee[_0xe37d('0x49')]));}else{_0x1208ee[_0xe37d('0x46')]='';}headers[_0xe37d('0x4a')]=getAuth(_0x148954);return getUser(_0x148954,'')[_0xe37d('0x23')](function(_0x211660){_0x2020ac=_0x211660;logger[_0xe37d('0xf')](_0xe37d('0x4b'),_0x2020ac['id']);return getEndUser(_0x148954,_0x1208ee[_0xe37d('0x5d')],_0x1208ee[_0xe37d('0x4c')]);})[_0xe37d('0x23')](function(_0xb97f15){_0x22ffd4=_0xb97f15;logger[_0xe37d('0xf')](_0xe37d('0x4d'),_0x22ffd4['id']);return getTicket(_0x148954,_0x2020ac,_0x22ffd4,_0x736e2a,_0x1208ee);})[_0xe37d('0x23')](function(_0x26bb21){if(_0x26bb21){logger['info'](_0xe37d('0x1f'));logger[_0xe37d('0xf')](_0xe37d('0x4e'),_0x26bb21['id']);}})[_0xe37d('0x52')](function(_0x291bd8){logger['error']('['+_0x1208ee[_0xe37d('0x5e')][_0xe37d('0x5c')]()+']',JSON[_0xe37d('0x33')](_0x291bd8));});};