Built motion from commit (unavailable).|2.5.13
[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 _0xbb90=['unmanaged','toUpperCase','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','remoteUri','Admin\x20account\x20selected.','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','[HTTP]','map','type','nameField','content','string','idField','customField','push','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','stringify','recordingFormat','Recording\x20is\x20enabled!','[OUTBOUND]','user:%s','catch','error'];(function(_0x4b4ef2,_0x325d22){var _0x2404cc=function(_0x178db1){while(--_0x178db1){_0x4b4ef2['push'](_0x4b4ef2['shift']());}};_0x2404cc(++_0x325d22);}(_0xbb90,0x1bf));var _0x0bb9=function(_0x36ff59,_0x4c2884){_0x36ff59=_0x36ff59-0x0;var _0x32df9d=_0xbb90[_0x36ff59];return _0x32df9d;};'use strict';var _=require(_0x0bb9('0x0'));var rp=require(_0x0bb9('0x1'));var md5=require(_0x0bb9('0x2'));var util=require('util');var Redis=require(_0x0bb9('0x3'));var intUtil=require(_0x0bb9('0x4'));var config=require(_0x0bb9('0x5'));var logger=require(_0x0bb9('0x6'))(_0x0bb9('0x7'));config['redis']=_[_0x0bb9('0x8')](config[_0x0bb9('0x9')],{'host':_0x0bb9('0xa'),'port':0x18eb});var io=require(_0x0bb9('0xb'))(new Redis(config[_0x0bb9('0x9')]));var headers={'Content-Type':_0x0bb9('0xc'),'Accept':_0x0bb9('0xc')};function emit(_0xb9e072,_0x5e2c5a,_0x107d0a){io['to'](_0xb9e072)[_0x0bb9('0xd')](_0x5e2c5a,_0x107d0a);}function getTicket(_0x4cac3b,_0x7f6c5f,_0x179a82,_0x323785,_0x45b52e){logger[_0x0bb9('0xe')](_0x0bb9('0xf'));var _0x4d904a=_[_0x0bb9('0x10')]({'responder_id':_0x7f6c5f['id'],'requester_id':_0x179a82['id'],'name':util[_0x0bb9('0x11')](_0x0bb9('0x12'),_0x45b52e[_0x0bb9('0x13')]),'phone':_0x45b52e['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0bb9('0x14')](_0x323785[_0x0bb9('0x15')],_0x45b52e,'\x20'),'description':intUtil[_0x0bb9('0x14')](_0x323785[_0x0bb9('0x16')],_0x45b52e,_0x0bb9('0x17')),'tags':getTags(_0x323785[_0x0bb9('0x18')],_0x0bb9('0x19'))},getCustomFields(_0x323785[_0x0bb9('0x1a')],_0x45b52e));_0x4d904a[_0x0bb9('0x1b')]=_[_0x0bb9('0x1c')](_[_0x0bb9('0x1d')](_0x4d904a['custom_fields'],'id'),_0x0bb9('0x1e'));return request({'uri':util['format']('%s/api/v2/tickets',_0x4cac3b['remoteUri']),'method':_0x0bb9('0x1f'),'body':_0x4d904a})[_0x0bb9('0x20')](function(_0x20b113){logger[_0x0bb9('0xe')](_0x0bb9('0x21'));return _0x20b113;});}function getUser(_0x3de5b0,_0x2d7369){if(intUtil[_0x0bb9('0x22')](_0x2d7369)){return request({'uri':util[_0x0bb9('0x11')](_0x0bb9('0x23'),_0x3de5b0['remoteUri']),'qs':{'email':_0x2d7369}})[_0x0bb9('0x20')](function(_0x52a4ee){if(_0x52a4ee[_0x0bb9('0x24')]){logger[_0x0bb9('0xe')]('Agent\x20found!');return _['find'](_0x52a4ee,function(_0x2e3c0d){return _0x2e3c0d[_0x0bb9('0x25')][_0x0bb9('0x26')]===_0x2d7369;});}else{logger[_0x0bb9('0xe')](_0x0bb9('0x27'));return request({'uri':util[_0x0bb9('0x11')]('%s/api/v2/agents/me',_0x3de5b0['remoteUri'])})[_0x0bb9('0x20')](function(_0x4c1b5d){logger[_0x0bb9('0xe')]('Admin\x20account\x20selected.');return _0x4c1b5d;});}});}else{logger[_0x0bb9('0xe')](_0x0bb9('0x28'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x3de5b0[_0x0bb9('0x29')])})[_0x0bb9('0x20')](function(_0x243465){logger[_0x0bb9('0xe')](_0x0bb9('0x2a'));return _0x243465;});}}function getEndUser(_0x270717,_0xe3ddbc,_0xd089f7){logger[_0x0bb9('0xe')]('Searching\x20enduser\x20with\x20phone',_0xd089f7);return request({'uri':util['format']('%s/api/v2/contacts',_0x270717[_0x0bb9('0x29')]),'qs':{'phone':_0xd089f7}})['then'](function(_0x4476e8){if(_0x4476e8[_0x0bb9('0x24')]){logger[_0x0bb9('0xe')](_0x0bb9('0x2b'));return _[_0x0bb9('0x2c')](_0x4476e8,{'phone':_0xd089f7});}else{logger[_0x0bb9('0xe')](_0x0bb9('0x2d'));return request({'uri':util[_0x0bb9('0x11')](_0x0bb9('0x2e'),_0x270717[_0x0bb9('0x29')]),'method':_0x0bb9('0x1f'),'body':{'name':_0xe3ddbc,'phone':_0xd089f7}})[_0x0bb9('0x20')](function(_0x164b2b){logger[_0x0bb9('0xe')](_0x0bb9('0x2f'));return _0x164b2b;});}});}function getAuth(_0x1a589){return util[_0x0bb9('0x11')](_0x0bb9('0x30'),new Buffer(_0x1a589[_0x0bb9('0x31')]+':X')[_0x0bb9('0x32')]('base64'));}function request(_0x52d47b){logger['debug'](_0x0bb9('0x33'),JSON['stringify'](_0x52d47b));return rp(_['defaults'](_0x52d47b,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x196e6a,_0x5eb76f){var _0x3c6c1c=[];if(_0x196e6a&&_0x196e6a[_0x0bb9('0x24')]>0x0){_0x3c6c1c=_[_0x0bb9('0x34')](_0x196e6a,_0x5eb76f);}return _0x3c6c1c;}function getCustomFields(_0x4356fa,_0x1339e9){var _0x2c20a6=[];var _0x41b44b={'custom_fields':[]};if(_0x4356fa['length']>0x0){_['forEach'](_0x4356fa,function(_0x5af35b){if(_0x5af35b[_0x0bb9('0x35')]==='string'&&_0x5af35b[_0x0bb9('0x36')]&&!_0x5af35b['customField']){_0x41b44b[_0x5af35b[_0x0bb9('0x36')]['toLowerCase']()]=_0x5af35b[_0x0bb9('0x37')][_0x0bb9('0x32')]();}else if(_0x5af35b[_0x0bb9('0x35')]===_0x0bb9('0x38')&&_0x5af35b[_0x0bb9('0x39')]&&_0x5af35b[_0x0bb9('0x3a')]){_0x41b44b[_0x0bb9('0x1b')][_0x0bb9('0x3b')]({'id':_0x5af35b[_0x0bb9('0x39')],'value':_0x5af35b[_0x0bb9('0x37')][_0x0bb9('0x32')]()});}else if(_0x5af35b['type']==='variable'&&_0x5af35b[_0x0bb9('0x3c')]&&_0x5af35b[_0x0bb9('0x39')]&&_0x5af35b[_0x0bb9('0x3a')]){_0x1339e9[_0x5af35b['variableName']]&&_0x41b44b[_0x0bb9('0x1b')][_0x0bb9('0x3b')]({'id':_0x5af35b[_0x0bb9('0x39')],'value':_0x1339e9[_0x5af35b['variableName']][_0x0bb9('0x32')]()});}else if(_0x5af35b[_0x0bb9('0x35')]===_0x0bb9('0x3d')&&_0x5af35b[_0x0bb9('0x3e')]&&_0x5af35b[_0x0bb9('0x3e')]['name']&&_0x5af35b[_0x0bb9('0x39')]&&_0x5af35b[_0x0bb9('0x3a')]){_0x1339e9[_0x5af35b[_0x0bb9('0x3e')][_0x0bb9('0x19')][_0x0bb9('0x3f')]()]&&_0x41b44b[_0x0bb9('0x1b')][_0x0bb9('0x3b')]({'id':_0x5af35b['idField'],'value':_0x1339e9[_0x5af35b[_0x0bb9('0x3e')][_0x0bb9('0x19')][_0x0bb9('0x3f')]()][_0x0bb9('0x32')]()});}});}return _0x41b44b;}exports[_0x0bb9('0x40')]=function(_0x57dae9,_0x5bd862,_0x3f61a4,_0x262e9d,_0x36f83f,_0x30ff3a){var _0x51d105,_0x2d892d;_0x30ff3a[_0x0bb9('0x29')]=intUtil[_0x0bb9('0x41')](_0x30ff3a[_0x0bb9('0x29')]);_0x30ff3a[_0x0bb9('0x42')]=intUtil[_0x0bb9('0x41')](_0x30ff3a[_0x0bb9('0x42')]);if(_0x36f83f&&_0x36f83f[_0x0bb9('0x43')]){logger[_0x0bb9('0xe')](_0x0bb9('0x44'),'Recording\x20is\x20enabled!');_0x5bd862[_0x0bb9('0x45')]=util[_0x0bb9('0x11')](_0x0bb9('0x46'),_0x30ff3a['serverUrl'],_0x5bd862[_0x0bb9('0x47')],md5(_0x5bd862[_0x0bb9('0x47')]));}else{_0x5bd862['recordingURL']='';}headers[_0x0bb9('0x48')]=getAuth(_0x30ff3a);return getUser(_0x30ff3a,_0x262e9d['email'])[_0x0bb9('0x20')](function(_0x2dce15){_0x51d105=_0x2dce15;logger[_0x0bb9('0xe')](_0x0bb9('0x49'),_0x51d105['id']);return getEndUser(_0x30ff3a,_0x5bd862[_0x0bb9('0x13')],_0x5bd862[_0x0bb9('0x4a')]);})[_0x0bb9('0x20')](function(_0x37cb24){_0x2d892d=_0x37cb24;logger[_0x0bb9('0xe')](_0x0bb9('0x4b'),_0x2d892d['id']);return getTicket(_0x30ff3a,_0x51d105,_0x2d892d,_0x3f61a4,_0x5bd862);})['then'](function(_0x493f85){if(_0x493f85&&_0x493f85['id']){logger[_0x0bb9('0xe')]('Ticket\x20created!');logger[_0x0bb9('0xe')](_0x0bb9('0x4c'),_0x493f85['id']);logger[_0x0bb9('0xe')](_0x0bb9('0x44'),_0x0bb9('0x4d'));emit(util[_0x0bb9('0x11')]('user:%s',_0x262e9d[_0x0bb9('0x19')]),_0x0bb9('0x4e'),{'uri':util['format'](_0x0bb9('0x4f'),_0x30ff3a[_0x0bb9('0x29')],_0x493f85['id'])});}})['catch'](function(_0x4135d4){logger['error'](_0x0bb9('0x44'),JSON[_0x0bb9('0x50')](_0x4135d4));});};exports['outbound']=function(_0x55487e,_0x185793,_0x22c431,_0x2011a1,_0x3cd9a1,_0x22a814,_0x1215d5){var _0x5cf173,_0x43e016;_0x22a814['remoteUri']=intUtil['stripTrailingSlash'](_0x22a814[_0x0bb9('0x29')]);_0x22a814[_0x0bb9('0x42')]=intUtil[_0x0bb9('0x41')](_0x22a814[_0x0bb9('0x42')]);if(_0x1215d5&&_0x1215d5[_0x0bb9('0x51')]&&_0x1215d5[_0x0bb9('0x51')]!=='none'){logger['info']('[OUTBOUND]',_0x0bb9('0x52'));_0x185793[_0x0bb9('0x45')]=util[_0x0bb9('0x11')](_0x0bb9('0x46'),_0x22a814[_0x0bb9('0x42')],_0x185793['uniqueid'],md5(_0x185793[_0x0bb9('0x47')]));}headers[_0x0bb9('0x48')]=getAuth(_0x22a814);return getUser(_0x22a814,_0x2011a1['email'])[_0x0bb9('0x20')](function(_0x19cda7){_0x5cf173=_0x19cda7;logger['info'](_0x0bb9('0x49'),_0x5cf173['id']);return getEndUser(_0x22a814,_0x185793['destcalleridname'],_0x185793['destcalleridnum']);})[_0x0bb9('0x20')](function(_0x925e48){_0x43e016=_0x925e48;logger['info']('The\x20Enduser\x20ID\x20is:',_0x43e016['id']);return getTicket(_0x22a814,_0x5cf173,_0x43e016,_0x22c431,_0x185793);})['then'](function(_0x48b4d6){if(_0x48b4d6&&_0x48b4d6['id']){logger['info'](_0x0bb9('0x21'));logger['info'](_0x0bb9('0x4c'),_0x48b4d6['id']);logger['info'](_0x0bb9('0x53'),_0x0bb9('0x4d'));emit(util[_0x0bb9('0x11')](_0x0bb9('0x54'),_0x2011a1[_0x0bb9('0x19')]),_0x0bb9('0x4e'),{'uri':util[_0x0bb9('0x11')](_0x0bb9('0x4f'),_0x22a814[_0x0bb9('0x29')],_0x48b4d6['id'])});}})[_0x0bb9('0x55')](function(_0x3d4052){logger[_0x0bb9('0x56')](_0x0bb9('0x53'),JSON[_0x0bb9('0x50')](_0x3d4052));});};exports[_0x0bb9('0x57')]=function(_0x558840,_0x186ca5,_0x2d92df,_0x4522ea,_0x8767b3,_0x22c796){var _0x1219e6,_0x2076e4;_0x22c796[_0x0bb9('0x29')]=intUtil[_0x0bb9('0x41')](_0x22c796[_0x0bb9('0x29')]);_0x22c796['serverUrl']=intUtil[_0x0bb9('0x41')](_0x22c796[_0x0bb9('0x42')]);if(_0x8767b3&&_0x8767b3['monitor_format']){logger[_0x0bb9('0xe')]('['+_0x186ca5['lastevent'][_0x0bb9('0x58')]()+']',_0x0bb9('0x52'));_0x186ca5[_0x0bb9('0x45')]=util['format'](_0x0bb9('0x46'),_0x22c796[_0x0bb9('0x42')],_0x186ca5[_0x0bb9('0x47')],md5(_0x186ca5['uniqueid']));}else{_0x186ca5[_0x0bb9('0x45')]='';}headers[_0x0bb9('0x48')]=getAuth(_0x22c796);return getUser(_0x22c796,'')[_0x0bb9('0x20')](function(_0x2e59cd){_0x1219e6=_0x2e59cd;logger[_0x0bb9('0xe')](_0x0bb9('0x49'),_0x1219e6['id']);return getEndUser(_0x22c796,_0x186ca5[_0x0bb9('0x13')],_0x186ca5[_0x0bb9('0x4a')]);})[_0x0bb9('0x20')](function(_0x3332b4){_0x2076e4=_0x3332b4;logger['info'](_0x0bb9('0x4b'),_0x2076e4['id']);return getTicket(_0x22c796,_0x1219e6,_0x2076e4,_0x2d92df,_0x186ca5);})[_0x0bb9('0x20')](function(_0x339b3c){if(_0x339b3c){logger['info'](_0x0bb9('0x21'));logger[_0x0bb9('0xe')](_0x0bb9('0x4c'),_0x339b3c['id']);}})[_0x0bb9('0x55')](function(_0x430547){logger[_0x0bb9('0x56')]('['+_0x186ca5['lastevent'][_0x0bb9('0x58')]()+']',JSON[_0x0bb9('0x50')](_0x430547));});};