Built motion from commit 994c64e1.|2.6.1
[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 _0x5ac3=['serverUrl','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','error','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','Authorization','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','name','Fields','custom_fields','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','Agent\x20found!','find','contact','email','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','length','map','forEach','includes','string','picklist','type','nameField','customField','content','idField','push','variable','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s'];(function(_0x494d44,_0x4ef7b4){var _0x3e2c09=function(_0x1d833c){while(--_0x1d833c){_0x494d44['push'](_0x494d44['shift']());}};_0x3e2c09(++_0x4ef7b4);}(_0x5ac3,0xd1));var _0x35ac=function(_0x5a1cdb,_0x14a7dc){_0x5a1cdb=_0x5a1cdb-0x0;var _0x38ba47=_0x5ac3[_0x5a1cdb];return _0x38ba47;};'use strict';var _=require(_0x35ac('0x0'));var rp=require(_0x35ac('0x1'));var md5=require(_0x35ac('0x2'));var util=require(_0x35ac('0x3'));var Redis=require(_0x35ac('0x4'));var intUtil=require(_0x35ac('0x5'));var config=require(_0x35ac('0x6'));var logger=require(_0x35ac('0x7'))(_0x35ac('0x8'));config[_0x35ac('0x9')]=_[_0x35ac('0xa')](config[_0x35ac('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x35ac('0xb'))(new Redis(config[_0x35ac('0x9')]));var headers={'Content-Type':_0x35ac('0xc'),'Accept':_0x35ac('0xc')};function emit(_0x3c1f59,_0x1a6c7b,_0x20e61a){io['to'](_0x3c1f59)[_0x35ac('0xd')](_0x1a6c7b,_0x20e61a);}function getTicket(_0x3107ff,_0x18cd0b,_0x5e8b01,_0x14f021,_0x55b7b7){logger[_0x35ac('0xe')]('Creating\x20new\x20ticket...');var _0x220d92=_[_0x35ac('0xf')]({'responder_id':_0x18cd0b['id'],'requester_id':_0x5e8b01['id'],'name':util[_0x35ac('0x10')](_0x35ac('0x11'),_0x55b7b7['calleridname']),'phone':_0x55b7b7[_0x35ac('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x35ac('0x13')](_0x14f021[_0x35ac('0x14')],_0x55b7b7,'\x20'),'description':intUtil[_0x35ac('0x13')](_0x14f021[_0x35ac('0x15')],_0x55b7b7,'<br>'),'tags':getTags(_0x14f021['Tags'],_0x35ac('0x16'))},getCustomFields(_0x14f021[_0x35ac('0x17')],_0x55b7b7));_0x220d92[_0x35ac('0x18')]=_['mapValues'](_['keyBy'](_0x220d92['custom_fields'],'id'),'value');return request({'uri':util[_0x35ac('0x10')](_0x35ac('0x19'),_0x3107ff[_0x35ac('0x1a')]),'method':_0x35ac('0x1b'),'body':_0x220d92})[_0x35ac('0x1c')](function(_0x2d4665){logger[_0x35ac('0xe')](_0x35ac('0x1d'));return _0x2d4665;});}function getUser(_0x5361ec,_0x1bcece){if(intUtil[_0x35ac('0x1e')](_0x1bcece)){return request({'uri':util['format'](_0x35ac('0x1f'),_0x5361ec[_0x35ac('0x1a')]),'qs':{'email':_0x1bcece}})[_0x35ac('0x1c')](function(_0x41716b){if(_0x41716b['length']){logger[_0x35ac('0xe')](_0x35ac('0x20'));return _[_0x35ac('0x21')](_0x41716b,function(_0x1c5e54){return _0x1c5e54[_0x35ac('0x22')][_0x35ac('0x23')]===_0x1bcece;});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x35ac('0x10')]('%s/api/v2/agents/me',_0x5361ec[_0x35ac('0x1a')])})['then'](function(_0x3c11d2){logger[_0x35ac('0xe')](_0x35ac('0x24'));return _0x3c11d2;});}});}else{logger[_0x35ac('0xe')](_0x35ac('0x25'));return request({'uri':util[_0x35ac('0x10')](_0x35ac('0x26'),_0x5361ec[_0x35ac('0x1a')])})[_0x35ac('0x1c')](function(_0xe8345f){logger[_0x35ac('0xe')](_0x35ac('0x24'));return _0xe8345f;});}}function getEndUser(_0x22228c,_0x8d1608,_0x2d8d97){logger['info'](_0x35ac('0x27'),_0x2d8d97);return request({'uri':util['format']('%s/api/v2/contacts',_0x22228c[_0x35ac('0x1a')]),'qs':{'phone':_0x2d8d97}})[_0x35ac('0x1c')](function(_0x5aa300){if(_0x5aa300['length']){logger[_0x35ac('0xe')](_0x35ac('0x28'));return _[_0x35ac('0x21')](_0x5aa300,{'phone':_0x2d8d97});}else{logger[_0x35ac('0xe')](_0x35ac('0x29'));return request({'uri':util[_0x35ac('0x10')](_0x35ac('0x2a'),_0x22228c[_0x35ac('0x1a')]),'method':'POST','body':{'name':_0x8d1608,'phone':_0x2d8d97}})['then'](function(_0x15d905){logger['info'](_0x35ac('0x2b'));return _0x15d905;});}});}function getAuth(_0x3381df){return util[_0x35ac('0x10')](_0x35ac('0x2c'),new Buffer(_0x3381df[_0x35ac('0x2d')]+':X')[_0x35ac('0x2e')](_0x35ac('0x2f')));}function request(_0x7cd466){logger[_0x35ac('0x30')](_0x35ac('0x31'),JSON[_0x35ac('0x32')](_0x7cd466));return rp(_['defaults'](_0x7cd466,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x125862,_0x36f952){var _0x4b2e5b=[];if(_0x125862&&_0x125862[_0x35ac('0x33')]>0x0){_0x4b2e5b=_[_0x35ac('0x34')](_0x125862,_0x36f952);}return _0x4b2e5b;}function getCustomFields(_0x2d85bc,_0x5cfa5b){var _0x15c52d=[];var _0x50b90d={'custom_fields':[]};if(_0x2d85bc[_0x35ac('0x33')]>0x0){_[_0x35ac('0x35')](_0x2d85bc,function(_0x5b7ab8){if(_[_0x35ac('0x36')]([_0x35ac('0x37'),_0x35ac('0x38')],_0x5b7ab8[_0x35ac('0x39')])&&_0x5b7ab8[_0x35ac('0x3a')]&&!_0x5b7ab8[_0x35ac('0x3b')]){_0x50b90d[_0x5b7ab8[_0x35ac('0x3a')]['toLowerCase']()]=_0x5b7ab8[_0x35ac('0x3c')][_0x35ac('0x2e')]();}else if(_['includes']([_0x35ac('0x37'),_0x35ac('0x38')],_0x5b7ab8['type'])&&_0x5b7ab8[_0x35ac('0x3d')]&&_0x5b7ab8['customField']){_0x50b90d[_0x35ac('0x18')][_0x35ac('0x3e')]({'id':_0x5b7ab8[_0x35ac('0x3d')],'value':_0x5b7ab8['content'][_0x35ac('0x2e')]()});}else if(_0x5b7ab8[_0x35ac('0x39')]===_0x35ac('0x3f')&&_0x5b7ab8[_0x35ac('0x40')]&&_0x5b7ab8['idField']&&_0x5b7ab8[_0x35ac('0x3b')]){_0x5cfa5b[_0x5b7ab8[_0x35ac('0x40')]]&&_0x50b90d['custom_fields'][_0x35ac('0x3e')]({'id':_0x5b7ab8[_0x35ac('0x3d')],'value':_0x5cfa5b[_0x5b7ab8[_0x35ac('0x40')]][_0x35ac('0x2e')]()});}else if(_0x5b7ab8[_0x35ac('0x39')]===_0x35ac('0x41')&&_0x5b7ab8[_0x35ac('0x42')]&&_0x5b7ab8['Variable'][_0x35ac('0x16')]&&_0x5b7ab8[_0x35ac('0x3d')]&&_0x5b7ab8[_0x35ac('0x3b')]){_0x5cfa5b[_0x5b7ab8[_0x35ac('0x42')][_0x35ac('0x16')][_0x35ac('0x43')]()]&&_0x50b90d[_0x35ac('0x18')][_0x35ac('0x3e')]({'id':_0x5b7ab8[_0x35ac('0x3d')],'value':_0x5cfa5b[_0x5b7ab8[_0x35ac('0x42')][_0x35ac('0x16')][_0x35ac('0x43')]()][_0x35ac('0x2e')]()});}});}return _0x50b90d;}exports[_0x35ac('0x44')]=function(_0x3fd565,_0x5b1a30,_0x46ee43,_0x288e18,_0x5146ef,_0x4369ee){var _0x4673f1,_0xfc28c8;_0x4369ee['remoteUri']=intUtil[_0x35ac('0x45')](_0x4369ee[_0x35ac('0x1a')]);_0x4369ee['serverUrl']=intUtil[_0x35ac('0x45')](_0x4369ee['serverUrl']);if(_0x5146ef&&_0x5146ef['monitor_format']){logger[_0x35ac('0xe')](_0x35ac('0x46'),'Recording\x20is\x20enabled!');_0x5b1a30[_0x35ac('0x47')]=util['format'](_0x35ac('0x48'),_0x4369ee[_0x35ac('0x49')],_0x5b1a30[_0x35ac('0x4a')],md5(_0x5b1a30[_0x35ac('0x4a')]));}else{_0x5b1a30[_0x35ac('0x47')]='';}headers['Authorization']=getAuth(_0x4369ee);return getUser(_0x4369ee,_0x288e18[_0x35ac('0x23')])['then'](function(_0x5746f4){_0x4673f1=_0x5746f4;logger[_0x35ac('0xe')](_0x35ac('0x4b'),_0x4673f1['id']);return getEndUser(_0x4369ee,_0x5b1a30['calleridname'],_0x5b1a30[_0x35ac('0x12')]);})[_0x35ac('0x1c')](function(_0x53de5c){_0xfc28c8=_0x53de5c;logger[_0x35ac('0xe')](_0x35ac('0x4c'),_0xfc28c8['id']);return getTicket(_0x4369ee,_0x4673f1,_0xfc28c8,_0x46ee43,_0x5b1a30);})[_0x35ac('0x1c')](function(_0x441820){if(_0x441820&&_0x441820['id']){logger['info'](_0x35ac('0x1d'));logger[_0x35ac('0xe')](_0x35ac('0x4d'),_0x441820['id']);logger[_0x35ac('0xe')]('[QUEUE]',_0x35ac('0x4e'));emit(util['format'](_0x35ac('0x4f'),_0x288e18[_0x35ac('0x16')]),_0x35ac('0x50'),{'uri':util['format'](_0x35ac('0x51'),_0x4369ee[_0x35ac('0x1a')],_0x441820['id'])});}})[_0x35ac('0x52')](function(_0x104966){logger['error'](_0x35ac('0x46'),JSON[_0x35ac('0x32')](_0x104966));});};exports[_0x35ac('0x53')]=function(_0x184615,_0x153e60,_0x597f2e,_0x313104,_0x21deb3,_0x7cc449,_0x1570f3){var _0x2d0fe0,_0x187388;_0x7cc449['remoteUri']=intUtil[_0x35ac('0x45')](_0x7cc449[_0x35ac('0x1a')]);_0x7cc449['serverUrl']=intUtil[_0x35ac('0x45')](_0x7cc449[_0x35ac('0x49')]);if(_0x1570f3&&_0x1570f3[_0x35ac('0x54')]&&_0x1570f3[_0x35ac('0x54')]!==_0x35ac('0x55')){logger[_0x35ac('0xe')](_0x35ac('0x56'),'Recording\x20is\x20enabled!');_0x153e60[_0x35ac('0x47')]=util['format'](_0x35ac('0x48'),_0x7cc449[_0x35ac('0x49')],_0x153e60[_0x35ac('0x4a')],md5(_0x153e60['uniqueid']));}headers['Authorization']=getAuth(_0x7cc449);return getUser(_0x7cc449,_0x313104[_0x35ac('0x23')])[_0x35ac('0x1c')](function(_0x278582){_0x2d0fe0=_0x278582;logger[_0x35ac('0xe')](_0x35ac('0x4b'),_0x2d0fe0['id']);return getEndUser(_0x7cc449,_0x153e60['destcalleridname'],_0x153e60[_0x35ac('0x57')]);})['then'](function(_0x564f5b){_0x187388=_0x564f5b;logger['info'](_0x35ac('0x4c'),_0x187388['id']);return getTicket(_0x7cc449,_0x2d0fe0,_0x187388,_0x597f2e,_0x153e60);})[_0x35ac('0x1c')](function(_0x257bf0){if(_0x257bf0&&_0x257bf0['id']){logger[_0x35ac('0xe')]('Ticket\x20created!');logger[_0x35ac('0xe')](_0x35ac('0x4d'),_0x257bf0['id']);logger[_0x35ac('0xe')](_0x35ac('0x56'),_0x35ac('0x4e'));emit(util[_0x35ac('0x10')](_0x35ac('0x4f'),_0x313104['name']),_0x35ac('0x50'),{'uri':util[_0x35ac('0x10')](_0x35ac('0x51'),_0x7cc449[_0x35ac('0x1a')],_0x257bf0['id'])});}})[_0x35ac('0x52')](function(_0x51b1e4){logger[_0x35ac('0x58')]('[OUTBOUND]',JSON[_0x35ac('0x32')](_0x51b1e4));});};exports[_0x35ac('0x59')]=function(_0xa7a21,_0x2147d1,_0x5efa6a,_0x10ddb5,_0x1f4b24,_0x26acec){var _0x7bcedf,_0x548695;_0x26acec['remoteUri']=intUtil['stripTrailingSlash'](_0x26acec['remoteUri']);_0x26acec[_0x35ac('0x49')]=intUtil[_0x35ac('0x45')](_0x26acec[_0x35ac('0x49')]);if(_0x1f4b24&&_0x1f4b24['monitor_format']){logger[_0x35ac('0xe')]('['+_0x2147d1[_0x35ac('0x5a')][_0x35ac('0x5b')]()+']',_0x35ac('0x5c'));_0x2147d1['recordingURL']=util['format'](_0x35ac('0x48'),_0x26acec[_0x35ac('0x49')],_0x2147d1[_0x35ac('0x4a')],md5(_0x2147d1[_0x35ac('0x4a')]));}else{_0x2147d1[_0x35ac('0x47')]='';}headers[_0x35ac('0x5d')]=getAuth(_0x26acec);return getUser(_0x26acec,'')[_0x35ac('0x1c')](function(_0x3858c9){_0x7bcedf=_0x3858c9;logger['info'](_0x35ac('0x4b'),_0x7bcedf['id']);return getEndUser(_0x26acec,_0x2147d1['calleridname'],_0x2147d1[_0x35ac('0x12')]);})[_0x35ac('0x1c')](function(_0x339672){_0x548695=_0x339672;logger[_0x35ac('0xe')]('The\x20Enduser\x20ID\x20is:',_0x548695['id']);return getTicket(_0x26acec,_0x7bcedf,_0x548695,_0x5efa6a,_0x2147d1);})[_0x35ac('0x1c')](function(_0x413a8d){if(_0x413a8d){logger[_0x35ac('0xe')]('Ticket\x20created!');logger['info'](_0x35ac('0x4d'),_0x413a8d['id']);}})['catch'](function(_0x162ce7){logger[_0x35ac('0x58')]('['+_0x2147d1['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x162ce7));});};