06e59c1441edcf0e4d5451277ee5cd3b575f77bc
[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 _0xba77=['queue','stripTrailingSlash','serverUrl','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','user:%s','catch','monitor_format','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','freshdesk','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','value','format','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20created.','apiKey','toString','base64','[HTTP]','stringify','GET','map','forEach','type','string','nameField','customField','toLowerCase','content','idField','push','variableName','customVariable','Variable'];(function(_0x1d5569,_0x15b4a1){var _0x1fa491=function(_0x37b147){while(--_0x37b147){_0x1d5569['push'](_0x1d5569['shift']());}};_0x1fa491(++_0x15b4a1);}(_0xba77,0xd0));var _0x7ba7=function(_0x5cabfd,_0x5dea47){_0x5cabfd=_0x5cabfd-0x0;var _0x4bc06c=_0xba77[_0x5cabfd];return _0x4bc06c;};'use strict';var _=require(_0x7ba7('0x0'));var rp=require(_0x7ba7('0x1'));var md5=require(_0x7ba7('0x2'));var util=require(_0x7ba7('0x3'));var Redis=require(_0x7ba7('0x4'));var intUtil=require(_0x7ba7('0x5'));var config=require(_0x7ba7('0x6'));var logger=require('../../../../config/logger')(_0x7ba7('0x7'));config['redis']=_[_0x7ba7('0x8')](config[_0x7ba7('0x9')],{'host':_0x7ba7('0xa'),'port':0x18eb});var io=require(_0x7ba7('0xb'))(new Redis(config[_0x7ba7('0x9')]));var headers={'Content-Type':_0x7ba7('0xc'),'Accept':'application/json'};function emit(_0x33f1bc,_0x720e1f,_0x2ab1f5){io['to'](_0x33f1bc)[_0x7ba7('0xd')](_0x720e1f,_0x2ab1f5);}function getTicket(_0x26c0aa,_0x3bc1ad,_0x10658f,_0x56900e,_0x3c92e6){logger[_0x7ba7('0xe')]('Creating\x20new\x20ticket...');var _0x20b1da=_[_0x7ba7('0xf')]({'responder_id':_0x3bc1ad['id'],'requester_id':_0x10658f['id'],'name':util['format'](_0x7ba7('0x10'),_0x3c92e6[_0x7ba7('0x11')]),'phone':_0x3c92e6[_0x7ba7('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x7ba7('0x13')](_0x56900e[_0x7ba7('0x14')],_0x3c92e6,'\x20'),'description':intUtil['getString'](_0x56900e[_0x7ba7('0x15')],_0x3c92e6,_0x7ba7('0x16')),'tags':getTags(_0x56900e[_0x7ba7('0x17')],_0x7ba7('0x18'))},getCustomFields(_0x56900e[_0x7ba7('0x19')],_0x3c92e6));_0x20b1da[_0x7ba7('0x1a')]=_[_0x7ba7('0x1b')](_['keyBy'](_0x20b1da['custom_fields'],'id'),_0x7ba7('0x1c'));return request({'uri':util[_0x7ba7('0x1d')]('%s/api/v2/tickets',_0x26c0aa[_0x7ba7('0x1e')]),'method':_0x7ba7('0x1f'),'body':_0x20b1da})[_0x7ba7('0x20')](function(_0x4802d2){logger[_0x7ba7('0xe')](_0x7ba7('0x21'));return _0x4802d2;});}function getUser(_0x15ef3d,_0x212897){if(intUtil[_0x7ba7('0x22')](_0x212897)){return request({'uri':util[_0x7ba7('0x1d')](_0x7ba7('0x23'),_0x15ef3d[_0x7ba7('0x1e')]),'qs':{'email':_0x212897}})['then'](function(_0x5db581){if(_0x5db581[_0x7ba7('0x24')]){logger[_0x7ba7('0xe')]('Agent\x20found!');return _[_0x7ba7('0x25')](_0x5db581,function(_0x3d84d9){return _0x3d84d9[_0x7ba7('0x26')]['email']===_0x212897;});}else{logger[_0x7ba7('0xe')](_0x7ba7('0x27'));return request({'uri':util[_0x7ba7('0x1d')]('%s/api/v2/agents/me',_0x15ef3d['remoteUri'])})[_0x7ba7('0x20')](function(_0x2339a4){logger[_0x7ba7('0xe')](_0x7ba7('0x28'));return _0x2339a4;});}});}else{logger['info'](_0x7ba7('0x29'));return request({'uri':util[_0x7ba7('0x1d')](_0x7ba7('0x2a'),_0x15ef3d[_0x7ba7('0x1e')])})['then'](function(_0x3e3d4a){logger[_0x7ba7('0xe')](_0x7ba7('0x28'));return _0x3e3d4a;});}}function getEndUser(_0x3b60ed,_0x2486de,_0x22fd2f){logger['info'](_0x7ba7('0x2b'),_0x22fd2f);return request({'uri':util[_0x7ba7('0x1d')](_0x7ba7('0x2c'),_0x3b60ed['remoteUri']),'qs':{'phone':_0x22fd2f}})[_0x7ba7('0x20')](function(_0x266094){if(_0x266094[_0x7ba7('0x24')]){logger[_0x7ba7('0xe')]('Enduser\x20found!');return _['find'](_0x266094,{'phone':_0x22fd2f});}else{logger[_0x7ba7('0xe')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x7ba7('0x1d')]('%s/api/v2/contacts',_0x3b60ed[_0x7ba7('0x1e')]),'method':_0x7ba7('0x1f'),'body':{'name':_0x2486de,'phone':_0x22fd2f}})[_0x7ba7('0x20')](function(_0xc536ad){logger[_0x7ba7('0xe')](_0x7ba7('0x2d'));return _0xc536ad;});}});}function getAuth(_0x189267){return util['format']('Basic\x20%s',new Buffer(_0x189267[_0x7ba7('0x2e')]+':X')[_0x7ba7('0x2f')](_0x7ba7('0x30')));}function request(_0x40823c){logger['debug'](_0x7ba7('0x31'),JSON[_0x7ba7('0x32')](_0x40823c));return rp(_[_0x7ba7('0x8')](_0x40823c,{'method':_0x7ba7('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x376e87,_0x3298ba){var _0x3cdffd=[];if(_0x376e87&&_0x376e87[_0x7ba7('0x24')]>0x0){_0x3cdffd=_[_0x7ba7('0x34')](_0x376e87,_0x3298ba);}return _0x3cdffd;}function getCustomFields(_0x436828,_0x10dbb2){var _0x3341bc=[];var _0x2f9d94={'custom_fields':[]};if(_0x436828[_0x7ba7('0x24')]>0x0){_[_0x7ba7('0x35')](_0x436828,function(_0x5817e5){if(_0x5817e5[_0x7ba7('0x36')]===_0x7ba7('0x37')&&_0x5817e5[_0x7ba7('0x38')]&&!_0x5817e5[_0x7ba7('0x39')]){_0x2f9d94[_0x5817e5[_0x7ba7('0x38')][_0x7ba7('0x3a')]()]=_0x5817e5[_0x7ba7('0x3b')][_0x7ba7('0x2f')]();}else if(_0x5817e5[_0x7ba7('0x36')]===_0x7ba7('0x37')&&_0x5817e5[_0x7ba7('0x3c')]&&_0x5817e5['customField']){_0x2f9d94[_0x7ba7('0x1a')][_0x7ba7('0x3d')]({'id':_0x5817e5[_0x7ba7('0x3c')],'value':_0x5817e5['content'][_0x7ba7('0x2f')]()});}else if(_0x5817e5[_0x7ba7('0x36')]==='variable'&&_0x5817e5[_0x7ba7('0x3e')]&&_0x5817e5[_0x7ba7('0x3c')]&&_0x5817e5[_0x7ba7('0x39')]){_0x10dbb2[_0x5817e5[_0x7ba7('0x3e')]]&&_0x2f9d94[_0x7ba7('0x1a')]['push']({'id':_0x5817e5[_0x7ba7('0x3c')],'value':_0x10dbb2[_0x5817e5[_0x7ba7('0x3e')]][_0x7ba7('0x2f')]()});}else if(_0x5817e5[_0x7ba7('0x36')]===_0x7ba7('0x3f')&&_0x5817e5[_0x7ba7('0x40')]&&_0x5817e5[_0x7ba7('0x40')][_0x7ba7('0x18')]&&_0x5817e5[_0x7ba7('0x3c')]&&_0x5817e5[_0x7ba7('0x39')]){_0x10dbb2[_0x5817e5[_0x7ba7('0x40')][_0x7ba7('0x18')][_0x7ba7('0x3a')]()]&&_0x2f9d94[_0x7ba7('0x1a')][_0x7ba7('0x3d')]({'id':_0x5817e5[_0x7ba7('0x3c')],'value':_0x10dbb2[_0x5817e5[_0x7ba7('0x40')]['name'][_0x7ba7('0x3a')]()][_0x7ba7('0x2f')]()});}});}return _0x2f9d94;}exports[_0x7ba7('0x41')]=function(_0x1c591c,_0x2be1ef,_0x5b2394,_0x3e0800,_0x154e0e,_0x34f5a7){var _0x2eca28,_0x14ced6;_0x34f5a7[_0x7ba7('0x1e')]=intUtil[_0x7ba7('0x42')](_0x34f5a7[_0x7ba7('0x1e')]);_0x34f5a7[_0x7ba7('0x43')]=intUtil[_0x7ba7('0x42')](_0x34f5a7['serverUrl']);if(_0x154e0e&&_0x154e0e['monitor_format']){logger[_0x7ba7('0xe')]('[QUEUE]',_0x7ba7('0x44'));_0x2be1ef['recordingURL']=util[_0x7ba7('0x1d')](_0x7ba7('0x45'),_0x34f5a7[_0x7ba7('0x43')],_0x2be1ef[_0x7ba7('0x46')],md5(_0x2be1ef[_0x7ba7('0x46')]));}else{_0x2be1ef[_0x7ba7('0x47')]='';}headers[_0x7ba7('0x48')]=getAuth(_0x34f5a7);return getUser(_0x34f5a7,_0x3e0800[_0x7ba7('0x49')])[_0x7ba7('0x20')](function(_0x252022){_0x2eca28=_0x252022;logger[_0x7ba7('0xe')](_0x7ba7('0x4a'),_0x2eca28['id']);return getEndUser(_0x34f5a7,_0x2be1ef[_0x7ba7('0x11')],_0x2be1ef[_0x7ba7('0x12')]);})[_0x7ba7('0x20')](function(_0x229b1c){_0x14ced6=_0x229b1c;logger[_0x7ba7('0xe')](_0x7ba7('0x4b'),_0x14ced6['id']);return getTicket(_0x34f5a7,_0x2eca28,_0x14ced6,_0x5b2394,_0x2be1ef);})['then'](function(_0x234800){if(_0x234800&&_0x234800['id']){logger[_0x7ba7('0xe')]('Ticket\x20created!');logger[_0x7ba7('0xe')](_0x7ba7('0x4c'),_0x234800['id']);logger['info'](_0x7ba7('0x4d'),_0x7ba7('0x4e'));emit(util[_0x7ba7('0x1d')]('user:%s',_0x3e0800['name']),_0x7ba7('0x4f'),{'uri':util['format'](_0x7ba7('0x50'),_0x34f5a7[_0x7ba7('0x1e')],_0x234800['id'])});}})['catch'](function(_0x4e1c0b){logger['error'](_0x7ba7('0x4d'),JSON[_0x7ba7('0x32')](_0x4e1c0b));});};exports[_0x7ba7('0x51')]=function(_0x104d99,_0x293f35,_0x1c41af,_0x1ac098,_0xac469f,_0x4b9e7a,_0x1f3ea0){var _0x119b35,_0x416be8;_0x4b9e7a[_0x7ba7('0x1e')]=intUtil[_0x7ba7('0x42')](_0x4b9e7a[_0x7ba7('0x1e')]);_0x4b9e7a[_0x7ba7('0x43')]=intUtil[_0x7ba7('0x42')](_0x4b9e7a[_0x7ba7('0x43')]);if(_0x1f3ea0&&_0x1f3ea0['recordingFormat']&&_0x1f3ea0[_0x7ba7('0x52')]!==_0x7ba7('0x53')){logger[_0x7ba7('0xe')](_0x7ba7('0x54'),_0x7ba7('0x44'));_0x293f35[_0x7ba7('0x47')]=util[_0x7ba7('0x1d')](_0x7ba7('0x45'),_0x4b9e7a[_0x7ba7('0x43')],_0x293f35[_0x7ba7('0x46')],md5(_0x293f35[_0x7ba7('0x46')]));}headers['Authorization']=getAuth(_0x4b9e7a);return getUser(_0x4b9e7a,_0x1ac098[_0x7ba7('0x49')])[_0x7ba7('0x20')](function(_0x356007){_0x119b35=_0x356007;logger[_0x7ba7('0xe')](_0x7ba7('0x4a'),_0x119b35['id']);return getEndUser(_0x4b9e7a,_0x293f35['destcalleridname'],_0x293f35[_0x7ba7('0x55')]);})[_0x7ba7('0x20')](function(_0x299a40){_0x416be8=_0x299a40;logger[_0x7ba7('0xe')](_0x7ba7('0x4b'),_0x416be8['id']);return getTicket(_0x4b9e7a,_0x119b35,_0x416be8,_0x1c41af,_0x293f35);})[_0x7ba7('0x20')](function(_0x3beaf6){if(_0x3beaf6&&_0x3beaf6['id']){logger[_0x7ba7('0xe')](_0x7ba7('0x21'));logger[_0x7ba7('0xe')]('The\x20Ticket\x20ID\x20is:',_0x3beaf6['id']);logger[_0x7ba7('0xe')](_0x7ba7('0x54'),_0x7ba7('0x4e'));emit(util[_0x7ba7('0x1d')](_0x7ba7('0x56'),_0x1ac098[_0x7ba7('0x18')]),_0x7ba7('0x4f'),{'uri':util[_0x7ba7('0x1d')](_0x7ba7('0x50'),_0x4b9e7a[_0x7ba7('0x1e')],_0x3beaf6['id'])});}})[_0x7ba7('0x57')](function(_0xbf83c3){logger['error'](_0x7ba7('0x54'),JSON[_0x7ba7('0x32')](_0xbf83c3));});};exports['unmanaged']=function(_0x39d889,_0x1712a6,_0x15c20d,_0x591112,_0x5cefdc,_0x3959ee){var _0x336f49,_0x190c99;_0x3959ee['remoteUri']=intUtil['stripTrailingSlash'](_0x3959ee['remoteUri']);_0x3959ee['serverUrl']=intUtil[_0x7ba7('0x42')](_0x3959ee[_0x7ba7('0x43')]);if(_0x5cefdc&&_0x5cefdc[_0x7ba7('0x58')]){logger[_0x7ba7('0xe')]('['+_0x1712a6[_0x7ba7('0x59')][_0x7ba7('0x5a')]()+']',_0x7ba7('0x44'));_0x1712a6[_0x7ba7('0x47')]=util[_0x7ba7('0x1d')](_0x7ba7('0x45'),_0x3959ee[_0x7ba7('0x43')],_0x1712a6[_0x7ba7('0x46')],md5(_0x1712a6['uniqueid']));}else{_0x1712a6['recordingURL']='';}headers['Authorization']=getAuth(_0x3959ee);return getUser(_0x3959ee,'')[_0x7ba7('0x20')](function(_0x2e340f){_0x336f49=_0x2e340f;logger[_0x7ba7('0xe')]('The\x20User\x20ID\x20is:',_0x336f49['id']);return getEndUser(_0x3959ee,_0x1712a6[_0x7ba7('0x11')],_0x1712a6[_0x7ba7('0x12')]);})[_0x7ba7('0x20')](function(_0xfda78b){_0x190c99=_0xfda78b;logger[_0x7ba7('0xe')](_0x7ba7('0x4b'),_0x190c99['id']);return getTicket(_0x3959ee,_0x336f49,_0x190c99,_0x15c20d,_0x1712a6);})[_0x7ba7('0x20')](function(_0x12f78b){if(_0x12f78b){logger[_0x7ba7('0xe')](_0x7ba7('0x21'));logger[_0x7ba7('0xe')](_0x7ba7('0x4c'),_0x12f78b['id']);}})[_0x7ba7('0x57')](function(_0x28a5ba){logger['error']('['+_0x1712a6[_0x7ba7('0x59')][_0x7ba7('0x5a')]()+']',JSON[_0x7ba7('0x32')](_0x28a5ba));});};