Built motion from commit (unavailable).|2.5.31
[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 _0x7306=['request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','[HTTP]','stringify','defaults','GET','includes','string','picklist','type','customField','nameField','content','idField','push','variable','variableName','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','%s/helpdesk/tickets/%d','catch','unmanaged','lastevent','toUpperCase','error','lodash'];(function(_0x35bb98,_0x4d4b60){var _0x24c5d2=function(_0x4cc084){while(--_0x4cc084){_0x35bb98['push'](_0x35bb98['shift']());}};_0x24c5d2(++_0x4d4b60);}(_0x7306,0xb7));var _0x6730=function(_0x1f7eb4,_0x1e8f97){_0x1f7eb4=_0x1f7eb4-0x0;var _0x1cde05=_0x7306[_0x1f7eb4];return _0x1cde05;};'use strict';var _=require(_0x6730('0x0'));var rp=require(_0x6730('0x1'));var md5=require(_0x6730('0x2'));var util=require(_0x6730('0x3'));var Redis=require(_0x6730('0x4'));var intUtil=require(_0x6730('0x5'));var config=require(_0x6730('0x6'));var logger=require(_0x6730('0x7'))('freshdesk');config[_0x6730('0x8')]=_['defaults'](config[_0x6730('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x6730('0x9'),'Accept':_0x6730('0x9')};function emit(_0x27508e,_0x5b3a8e,_0xfc8090){io['to'](_0x27508e)[_0x6730('0xa')](_0x5b3a8e,_0xfc8090);}function getTicket(_0x1d1ec4,_0x28dcef,_0x1f55c5,_0x38b370,_0x403566){logger[_0x6730('0xb')](_0x6730('0xc'));var _0x4e096f=_[_0x6730('0xd')]({'responder_id':_0x28dcef['id'],'requester_id':_0x1f55c5['id'],'name':util[_0x6730('0xe')]('Caller\x20-\x20%s',_0x403566[_0x6730('0xf')]),'phone':_0x403566[_0x6730('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x6730('0x11')](_0x38b370[_0x6730('0x12')],_0x403566,'\x20'),'description':intUtil[_0x6730('0x11')](_0x38b370[_0x6730('0x13')],_0x403566,_0x6730('0x14')),'tags':getTags(_0x38b370['Tags'],'name')},getCustomFields(_0x38b370['Fields'],_0x403566));_0x4e096f[_0x6730('0x15')]=_[_0x6730('0x16')](_[_0x6730('0x17')](_0x4e096f[_0x6730('0x15')],'id'),_0x6730('0x18'));return request({'uri':util['format'](_0x6730('0x19'),_0x1d1ec4[_0x6730('0x1a')]),'method':_0x6730('0x1b'),'body':_0x4e096f})['then'](function(_0x15461b){logger[_0x6730('0xb')]('Ticket\x20created!');return _0x15461b;});}function getUser(_0xe2121d,_0x38207a){if(intUtil['validateEmail'](_0x38207a)){return request({'uri':util[_0x6730('0xe')]('%s/api/v2/agents',_0xe2121d[_0x6730('0x1a')]),'qs':{'email':_0x38207a}})[_0x6730('0x1c')](function(_0x4b9333){if(_0x4b9333[_0x6730('0x1d')]){logger['info'](_0x6730('0x1e'));return _[_0x6730('0x1f')](_0x4b9333,function(_0x10b4fd){return _0x10b4fd[_0x6730('0x20')][_0x6730('0x21')]===_0x38207a;});}else{logger[_0x6730('0xb')](_0x6730('0x22'));return request({'uri':util[_0x6730('0xe')](_0x6730('0x23'),_0xe2121d[_0x6730('0x1a')])})[_0x6730('0x1c')](function(_0x2c0f41){logger['info']('Admin\x20account\x20selected.');return _0x2c0f41;});}});}else{logger[_0x6730('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x6730('0x23'),_0xe2121d[_0x6730('0x1a')])})['then'](function(_0x290408){logger[_0x6730('0xb')](_0x6730('0x24'));return _0x290408;});}}function getEndUser(_0x23158d,_0x3c0a37,_0x3526f1){logger[_0x6730('0xb')]('Searching\x20enduser\x20with\x20phone',_0x3526f1);return request({'uri':util[_0x6730('0xe')]('%s/api/v2/contacts',_0x23158d[_0x6730('0x1a')]),'qs':{'phone':_0x3526f1}})[_0x6730('0x1c')](function(_0x1e7d86){if(_0x1e7d86[_0x6730('0x1d')]){logger[_0x6730('0xb')](_0x6730('0x25'));return _[_0x6730('0x1f')](_0x1e7d86,{'phone':_0x3526f1});}else{logger[_0x6730('0xb')](_0x6730('0x26'));return request({'uri':util[_0x6730('0xe')](_0x6730('0x27'),_0x23158d[_0x6730('0x1a')]),'method':_0x6730('0x1b'),'body':{'name':_0x3c0a37,'phone':_0x3526f1}})['then'](function(_0x3570bd){logger[_0x6730('0xb')](_0x6730('0x28'));return _0x3570bd;});}});}function getAuth(_0x47a60e){return util[_0x6730('0xe')](_0x6730('0x29'),new Buffer(_0x47a60e[_0x6730('0x2a')]+':X')[_0x6730('0x2b')](_0x6730('0x2c')));}function request(_0x304fd6){logger['debug'](_0x6730('0x2d'),JSON[_0x6730('0x2e')](_0x304fd6));return rp(_[_0x6730('0x2f')](_0x304fd6,{'method':_0x6730('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x4b3be4,_0x361d8a){var _0x500101=[];if(_0x4b3be4&&_0x4b3be4[_0x6730('0x1d')]>0x0){_0x500101=_['map'](_0x4b3be4,_0x361d8a);}return _0x500101;}function getCustomFields(_0x543098,_0x58978a){var _0x387ec7=[];var _0x24b262={'custom_fields':[]};if(_0x543098[_0x6730('0x1d')]>0x0){_['forEach'](_0x543098,function(_0x4c9aa4){if(_[_0x6730('0x31')]([_0x6730('0x32'),_0x6730('0x33')],_0x4c9aa4[_0x6730('0x34')])&&_0x4c9aa4['nameField']&&!_0x4c9aa4[_0x6730('0x35')]){_0x24b262[_0x4c9aa4[_0x6730('0x36')]['toLowerCase']()]=_0x4c9aa4[_0x6730('0x37')][_0x6730('0x2b')]();}else if(_[_0x6730('0x31')]([_0x6730('0x32'),_0x6730('0x33')],_0x4c9aa4['type'])&&_0x4c9aa4[_0x6730('0x38')]&&_0x4c9aa4['customField']){_0x24b262['custom_fields'][_0x6730('0x39')]({'id':_0x4c9aa4[_0x6730('0x38')],'value':_0x4c9aa4[_0x6730('0x37')]['toString']()});}else if(_0x4c9aa4[_0x6730('0x34')]===_0x6730('0x3a')&&_0x4c9aa4[_0x6730('0x3b')]&&_0x4c9aa4['idField']&&_0x4c9aa4[_0x6730('0x35')]){_0x58978a[_0x4c9aa4['variableName']]&&_0x24b262[_0x6730('0x15')][_0x6730('0x39')]({'id':_0x4c9aa4['idField'],'value':_0x58978a[_0x4c9aa4[_0x6730('0x3b')]][_0x6730('0x2b')]()});}else if(_0x4c9aa4[_0x6730('0x34')]===_0x6730('0x3c')&&_0x4c9aa4[_0x6730('0x3d')]&&_0x4c9aa4[_0x6730('0x3d')][_0x6730('0x3e')]&&_0x4c9aa4[_0x6730('0x38')]&&_0x4c9aa4['customField']){_0x58978a[_0x4c9aa4['Variable']['name']['toLowerCase']()]&&_0x24b262[_0x6730('0x15')]['push']({'id':_0x4c9aa4['idField'],'value':_0x58978a[_0x4c9aa4[_0x6730('0x3d')][_0x6730('0x3e')][_0x6730('0x3f')]()][_0x6730('0x2b')]()});}});}return _0x24b262;}exports[_0x6730('0x40')]=function(_0x2a982b,_0x212f6d,_0x5cb8a0,_0x402e02,_0x2c2a1f,_0xb3c9a1){var _0x158f8c,_0x53ccd7;_0xb3c9a1[_0x6730('0x1a')]=intUtil[_0x6730('0x41')](_0xb3c9a1[_0x6730('0x1a')]);_0xb3c9a1[_0x6730('0x42')]=intUtil[_0x6730('0x41')](_0xb3c9a1['serverUrl']);if(_0x2c2a1f&&_0x2c2a1f[_0x6730('0x43')]){logger[_0x6730('0xb')](_0x6730('0x44'),_0x6730('0x45'));_0x212f6d[_0x6730('0x46')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xb3c9a1[_0x6730('0x42')],_0x212f6d[_0x6730('0x47')],md5(_0x212f6d[_0x6730('0x47')]));}else{_0x212f6d[_0x6730('0x46')]='';}headers[_0x6730('0x48')]=getAuth(_0xb3c9a1);return getUser(_0xb3c9a1,_0x402e02[_0x6730('0x21')])[_0x6730('0x1c')](function(_0x37d345){_0x158f8c=_0x37d345;logger['info']('The\x20User\x20ID\x20is:',_0x158f8c['id']);return getEndUser(_0xb3c9a1,_0x212f6d['calleridname'],_0x212f6d['calleridnum']);})[_0x6730('0x1c')](function(_0x3ee32d){_0x53ccd7=_0x3ee32d;logger[_0x6730('0xb')](_0x6730('0x49'),_0x53ccd7['id']);return getTicket(_0xb3c9a1,_0x158f8c,_0x53ccd7,_0x5cb8a0,_0x212f6d);})[_0x6730('0x1c')](function(_0x4e89a4){if(_0x4e89a4&&_0x4e89a4['id']){logger[_0x6730('0xb')](_0x6730('0x4a'));logger[_0x6730('0xb')](_0x6730('0x4b'),_0x4e89a4['id']);logger[_0x6730('0xb')]('[QUEUE]',_0x6730('0x4c'));emit(util['format'](_0x6730('0x4d'),_0x402e02[_0x6730('0x3e')]),_0x6730('0x4e'),{'uri':util[_0x6730('0xe')]('%s/helpdesk/tickets/%d',_0xb3c9a1[_0x6730('0x1a')],_0x4e89a4['id'])});}})['catch'](function(_0x3d802e){logger['error'](_0x6730('0x44'),JSON[_0x6730('0x2e')](_0x3d802e));});};exports['outbound']=function(_0x2f8e2c,_0x3669c1,_0xec01a5,_0x2acc59,_0x11a592,_0x3310d0,_0x3bb69a){var _0x38aa25,_0x284e01;_0x3310d0['remoteUri']=intUtil['stripTrailingSlash'](_0x3310d0[_0x6730('0x1a')]);_0x3310d0['serverUrl']=intUtil[_0x6730('0x41')](_0x3310d0['serverUrl']);if(_0x3bb69a&&_0x3bb69a['recordingFormat']&&_0x3bb69a[_0x6730('0x4f')]!==_0x6730('0x50')){logger[_0x6730('0xb')](_0x6730('0x51'),_0x6730('0x45'));_0x3669c1[_0x6730('0x46')]=util[_0x6730('0xe')](_0x6730('0x52'),_0x3310d0[_0x6730('0x42')],_0x3669c1[_0x6730('0x47')],md5(_0x3669c1[_0x6730('0x47')]));}headers[_0x6730('0x48')]=getAuth(_0x3310d0);return getUser(_0x3310d0,_0x2acc59[_0x6730('0x21')])[_0x6730('0x1c')](function(_0x1a165a){_0x38aa25=_0x1a165a;logger['info'](_0x6730('0x53'),_0x38aa25['id']);return getEndUser(_0x3310d0,_0x3669c1[_0x6730('0x54')],_0x3669c1[_0x6730('0x55')]);})['then'](function(_0x362aa8){_0x284e01=_0x362aa8;logger[_0x6730('0xb')](_0x6730('0x49'),_0x284e01['id']);return getTicket(_0x3310d0,_0x38aa25,_0x284e01,_0xec01a5,_0x3669c1);})[_0x6730('0x1c')](function(_0xdc7d88){if(_0xdc7d88&&_0xdc7d88['id']){logger['info'](_0x6730('0x4a'));logger[_0x6730('0xb')](_0x6730('0x4b'),_0xdc7d88['id']);logger[_0x6730('0xb')](_0x6730('0x51'),_0x6730('0x4c'));emit(util[_0x6730('0xe')](_0x6730('0x4d'),_0x2acc59['name']),_0x6730('0x4e'),{'uri':util['format'](_0x6730('0x56'),_0x3310d0['remoteUri'],_0xdc7d88['id'])});}})[_0x6730('0x57')](function(_0x5727dd){logger['error'](_0x6730('0x51'),JSON[_0x6730('0x2e')](_0x5727dd));});};exports[_0x6730('0x58')]=function(_0x5a8c5b,_0x82ca61,_0x2ad21,_0x6e6db3,_0x84191a,_0xe1e50f){var _0x4d780d,_0x396f2f;_0xe1e50f[_0x6730('0x1a')]=intUtil[_0x6730('0x41')](_0xe1e50f[_0x6730('0x1a')]);_0xe1e50f['serverUrl']=intUtil[_0x6730('0x41')](_0xe1e50f['serverUrl']);if(_0x84191a&&_0x84191a[_0x6730('0x43')]){logger[_0x6730('0xb')]('['+_0x82ca61[_0x6730('0x59')][_0x6730('0x5a')]()+']',_0x6730('0x45'));_0x82ca61[_0x6730('0x46')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xe1e50f[_0x6730('0x42')],_0x82ca61[_0x6730('0x47')],md5(_0x82ca61[_0x6730('0x47')]));}else{_0x82ca61[_0x6730('0x46')]='';}headers[_0x6730('0x48')]=getAuth(_0xe1e50f);return getUser(_0xe1e50f,'')[_0x6730('0x1c')](function(_0x4067b4){_0x4d780d=_0x4067b4;logger[_0x6730('0xb')](_0x6730('0x53'),_0x4d780d['id']);return getEndUser(_0xe1e50f,_0x82ca61[_0x6730('0xf')],_0x82ca61[_0x6730('0x10')]);})[_0x6730('0x1c')](function(_0x3ad997){_0x396f2f=_0x3ad997;logger['info'](_0x6730('0x49'),_0x396f2f['id']);return getTicket(_0xe1e50f,_0x4d780d,_0x396f2f,_0x2ad21,_0x82ca61);})[_0x6730('0x1c')](function(_0xc74502){if(_0xc74502){logger[_0x6730('0xb')]('Ticket\x20created!');logger[_0x6730('0xb')](_0x6730('0x4b'),_0xc74502['id']);}})[_0x6730('0x57')](function(_0x3ec4d6){logger[_0x6730('0x5b')]('['+_0x82ca61['lastevent'][_0x6730('0x5a')]()+']',JSON[_0x6730('0x2e')](_0x3ec4d6));});};