Built motion from commit (unavailable).|2.5.2
[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=['Recording\x20is\x20enabled!','destcalleridnum','unmanaged','lastevent','lodash','request-promise','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','format','calleridname','calleridnum','Subjects','getString','Descriptions','Tags','name','custom_fields','value','%s/api/v2/tickets','POST','then','Ticket\x20created!','%s/api/v2/agents','remoteUri','length','info','find','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','map','forEach','type','string','nameField','customField','toLowerCase','content','push','idField','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]'];(function(_0x183e7f,_0x230f08){var _0x12d988=function(_0x1faf51){while(--_0x1faf51){_0x183e7f['push'](_0x183e7f['shift']());}};_0x12d988(++_0x230f08);}(_0x7306,0x15c));var _0x6730=function(_0x947814,_0x2f21ee){_0x947814=_0x947814-0x0;var _0x1e7cb9=_0x7306[_0x947814];return _0x1e7cb9;};'use strict';var _=require(_0x6730('0x0'));var rp=require(_0x6730('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0x6730('0x2'));var intUtil=require('./util');var config=require(_0x6730('0x3'));var logger=require(_0x6730('0x4'))(_0x6730('0x5'));config[_0x6730('0x6')]=_[_0x6730('0x7')](config[_0x6730('0x6')],{'host':_0x6730('0x8'),'port':0x18eb});var io=require(_0x6730('0x9'))(new Redis(config[_0x6730('0x6')]));var headers={'Content-Type':_0x6730('0xa'),'Accept':_0x6730('0xa')};function emit(_0x732c6,_0xba10b1,_0x37539a){io['to'](_0x732c6)[_0x6730('0xb')](_0xba10b1,_0x37539a);}function getTicket(_0x2f5da2,_0x1fc237,_0x390885,_0x52453b,_0xff13f3){logger['info'](_0x6730('0xc'));var _0x8d70a3=_['merge']({'responder_id':_0x1fc237['id'],'requester_id':_0x390885['id'],'name':util[_0x6730('0xd')]('Caller\x20-\x20%s',_0xff13f3[_0x6730('0xe')]),'phone':_0xff13f3[_0x6730('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x52453b[_0x6730('0x10')],_0xff13f3,'\x20'),'description':intUtil[_0x6730('0x11')](_0x52453b[_0x6730('0x12')],_0xff13f3,'<br>'),'tags':getTags(_0x52453b[_0x6730('0x13')],_0x6730('0x14'))},getCustomFields(_0x52453b['Fields'],_0xff13f3));_0x8d70a3[_0x6730('0x15')]=_['mapValues'](_['keyBy'](_0x8d70a3[_0x6730('0x15')],'id'),_0x6730('0x16'));return request({'uri':util[_0x6730('0xd')](_0x6730('0x17'),_0x2f5da2['remoteUri']),'method':_0x6730('0x18'),'body':_0x8d70a3})[_0x6730('0x19')](function(_0x499efc){logger['info'](_0x6730('0x1a'));return _0x499efc;});}function getUser(_0x2e3c04,_0x3a4810){if(intUtil['validateEmail'](_0x3a4810)){return request({'uri':util[_0x6730('0xd')](_0x6730('0x1b'),_0x2e3c04[_0x6730('0x1c')]),'qs':{'email':_0x3a4810}})['then'](function(_0x4c640b){if(_0x4c640b[_0x6730('0x1d')]){logger[_0x6730('0x1e')]('Agent\x20found!');return _[_0x6730('0x1f')](_0x4c640b,function(_0x427ef6){return _0x427ef6['contact'][_0x6730('0x20')]===_0x3a4810;});}else{logger[_0x6730('0x1e')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x6730('0xd')](_0x6730('0x21'),_0x2e3c04[_0x6730('0x1c')])})['then'](function(_0x503cba){logger[_0x6730('0x1e')](_0x6730('0x22'));return _0x503cba;});}});}else{logger[_0x6730('0x1e')](_0x6730('0x23'));return request({'uri':util[_0x6730('0xd')](_0x6730('0x21'),_0x2e3c04['remoteUri'])})[_0x6730('0x19')](function(_0x549247){logger['info'](_0x6730('0x22'));return _0x549247;});}}function getEndUser(_0x54d167,_0x3db5fc,_0x4e9c2e){logger[_0x6730('0x1e')](_0x6730('0x24'),_0x4e9c2e);return request({'uri':util[_0x6730('0xd')](_0x6730('0x25'),_0x54d167[_0x6730('0x1c')]),'qs':{'phone':_0x4e9c2e}})[_0x6730('0x19')](function(_0x35757d){if(_0x35757d[_0x6730('0x1d')]){logger[_0x6730('0x1e')](_0x6730('0x26'));return _[_0x6730('0x1f')](_0x35757d,{'phone':_0x4e9c2e});}else{logger[_0x6730('0x1e')](_0x6730('0x27'));return request({'uri':util[_0x6730('0xd')](_0x6730('0x25'),_0x54d167[_0x6730('0x1c')]),'method':_0x6730('0x18'),'body':{'name':_0x3db5fc,'phone':_0x4e9c2e}})[_0x6730('0x19')](function(_0x57166b){logger[_0x6730('0x1e')](_0x6730('0x28'));return _0x57166b;});}});}function getAuth(_0x27a836){return util['format'](_0x6730('0x29'),new Buffer(_0x27a836['apiKey']+':X')[_0x6730('0x2a')](_0x6730('0x2b')));}function request(_0x32fe00){logger[_0x6730('0x2c')](_0x6730('0x2d'),JSON[_0x6730('0x2e')](_0x32fe00));return rp(_[_0x6730('0x7')](_0x32fe00,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x43727a,_0x7d1a5c){var _0x11b90c=[];if(_0x43727a&&_0x43727a[_0x6730('0x1d')]>0x0){_0x11b90c=_[_0x6730('0x2f')](_0x43727a,_0x7d1a5c);}return _0x11b90c;}function getCustomFields(_0x321313,_0x2d5d4d){var _0x1a71f4=[];var _0x5ba3ba={'custom_fields':[]};if(_0x321313[_0x6730('0x1d')]>0x0){_[_0x6730('0x30')](_0x321313,function(_0x38365a){if(_0x38365a[_0x6730('0x31')]===_0x6730('0x32')&&_0x38365a[_0x6730('0x33')]&&!_0x38365a[_0x6730('0x34')]){_0x5ba3ba[_0x38365a[_0x6730('0x33')][_0x6730('0x35')]()]=_0x38365a[_0x6730('0x36')]['toString']();}else if(_0x38365a[_0x6730('0x31')]===_0x6730('0x32')&&_0x38365a['idField']&&_0x38365a[_0x6730('0x34')]){_0x5ba3ba[_0x6730('0x15')][_0x6730('0x37')]({'id':_0x38365a[_0x6730('0x38')],'value':_0x38365a[_0x6730('0x36')][_0x6730('0x2a')]()});}else if(_0x38365a[_0x6730('0x31')]===_0x6730('0x39')&&_0x38365a[_0x6730('0x3a')]&&_0x38365a['idField']&&_0x38365a['customField']){_0x2d5d4d[_0x38365a[_0x6730('0x3a')]]&&_0x5ba3ba[_0x6730('0x15')]['push']({'id':_0x38365a[_0x6730('0x38')],'value':_0x2d5d4d[_0x38365a[_0x6730('0x3a')]][_0x6730('0x2a')]()});}else if(_0x38365a[_0x6730('0x31')]===_0x6730('0x3b')&&_0x38365a[_0x6730('0x3c')]&&_0x38365a[_0x6730('0x3c')][_0x6730('0x14')]&&_0x38365a[_0x6730('0x38')]&&_0x38365a[_0x6730('0x34')]){_0x2d5d4d[_0x38365a[_0x6730('0x3c')]['name'][_0x6730('0x35')]()]&&_0x5ba3ba[_0x6730('0x15')][_0x6730('0x37')]({'id':_0x38365a[_0x6730('0x38')],'value':_0x2d5d4d[_0x38365a[_0x6730('0x3c')][_0x6730('0x14')][_0x6730('0x35')]()][_0x6730('0x2a')]()});}});}return _0x5ba3ba;}exports['queue']=function(_0x41971c,_0x2ec468,_0x3a8399,_0x53ad40,_0x226c25,_0xc6d9ff){var _0x3a8ae8,_0x1fcaa8;_0xc6d9ff['remoteUri']=intUtil[_0x6730('0x3d')](_0xc6d9ff[_0x6730('0x1c')]);_0xc6d9ff['serverUrl']=intUtil[_0x6730('0x3d')](_0xc6d9ff[_0x6730('0x3e')]);if(_0x226c25&&_0x226c25[_0x6730('0x3f')]){logger[_0x6730('0x1e')]('[QUEUE]','Recording\x20is\x20enabled!');_0x2ec468[_0x6730('0x40')]=util[_0x6730('0xd')](_0x6730('0x41'),_0xc6d9ff['serverUrl'],_0x2ec468[_0x6730('0x42')],md5(_0x2ec468['uniqueid']));}else{_0x2ec468[_0x6730('0x40')]='';}headers[_0x6730('0x43')]=getAuth(_0xc6d9ff);return getUser(_0xc6d9ff,_0x53ad40[_0x6730('0x20')])['then'](function(_0x4359ca){_0x3a8ae8=_0x4359ca;logger[_0x6730('0x1e')](_0x6730('0x44'),_0x3a8ae8['id']);return getEndUser(_0xc6d9ff,_0x2ec468[_0x6730('0xe')],_0x2ec468[_0x6730('0xf')]);})[_0x6730('0x19')](function(_0x59fcbe){_0x1fcaa8=_0x59fcbe;logger[_0x6730('0x1e')](_0x6730('0x45'),_0x1fcaa8['id']);return getTicket(_0xc6d9ff,_0x3a8ae8,_0x1fcaa8,_0x3a8399,_0x2ec468);})[_0x6730('0x19')](function(_0x36c817){if(_0x36c817&&_0x36c817['id']){logger[_0x6730('0x1e')](_0x6730('0x1a'));logger[_0x6730('0x1e')](_0x6730('0x46'),_0x36c817['id']);logger[_0x6730('0x1e')](_0x6730('0x47'),_0x6730('0x48'));emit(util[_0x6730('0xd')](_0x6730('0x49'),_0x53ad40[_0x6730('0x14')]),_0x6730('0x4a'),{'uri':util[_0x6730('0xd')](_0x6730('0x4b'),_0xc6d9ff['remoteUri'],_0x36c817['id'])});}})[_0x6730('0x4c')](function(_0x453bea){logger[_0x6730('0x4d')](_0x6730('0x47'),JSON[_0x6730('0x2e')](_0x453bea));});};exports[_0x6730('0x4e')]=function(_0x374fc2,_0x4e026d,_0x4dbfc5,_0x18854e,_0x58c85e,_0x834067,_0xfc44e2){var _0x1661d9,_0xba0818;_0x834067[_0x6730('0x1c')]=intUtil['stripTrailingSlash'](_0x834067[_0x6730('0x1c')]);_0x834067[_0x6730('0x3e')]=intUtil['stripTrailingSlash'](_0x834067[_0x6730('0x3e')]);if(_0xfc44e2&&_0xfc44e2[_0x6730('0x4f')]&&_0xfc44e2['recordingFormat']!==_0x6730('0x50')){logger[_0x6730('0x1e')](_0x6730('0x51'),_0x6730('0x52'));_0x4e026d['recordingURL']=util[_0x6730('0xd')](_0x6730('0x41'),_0x834067[_0x6730('0x3e')],_0x4e026d['uniqueid'],md5(_0x4e026d[_0x6730('0x42')]));}headers['Authorization']=getAuth(_0x834067);return getUser(_0x834067,_0x18854e['email'])[_0x6730('0x19')](function(_0x3a5f02){_0x1661d9=_0x3a5f02;logger[_0x6730('0x1e')](_0x6730('0x44'),_0x1661d9['id']);return getEndUser(_0x834067,_0x4e026d['destcalleridname'],_0x4e026d[_0x6730('0x53')]);})[_0x6730('0x19')](function(_0x1c6709){_0xba0818=_0x1c6709;logger[_0x6730('0x1e')](_0x6730('0x45'),_0xba0818['id']);return getTicket(_0x834067,_0x1661d9,_0xba0818,_0x4dbfc5,_0x4e026d);})[_0x6730('0x19')](function(_0x378f4b){if(_0x378f4b&&_0x378f4b['id']){logger['info'](_0x6730('0x1a'));logger['info'](_0x6730('0x46'),_0x378f4b['id']);logger[_0x6730('0x1e')](_0x6730('0x51'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x6730('0xd')](_0x6730('0x49'),_0x18854e[_0x6730('0x14')]),_0x6730('0x4a'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x834067[_0x6730('0x1c')],_0x378f4b['id'])});}})[_0x6730('0x4c')](function(_0x5192a2){logger[_0x6730('0x4d')](_0x6730('0x51'),JSON['stringify'](_0x5192a2));});};exports[_0x6730('0x54')]=function(_0x3a4f83,_0x510a81,_0x2128a1,_0x3ab9d3,_0xf5f976,_0x3a03a3){var _0x3e9d29,_0x5da09b;_0x3a03a3[_0x6730('0x1c')]=intUtil[_0x6730('0x3d')](_0x3a03a3['remoteUri']);_0x3a03a3[_0x6730('0x3e')]=intUtil[_0x6730('0x3d')](_0x3a03a3[_0x6730('0x3e')]);if(_0xf5f976&&_0xf5f976[_0x6730('0x3f')]){logger['info']('['+_0x510a81[_0x6730('0x55')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x510a81['recordingURL']=util[_0x6730('0xd')](_0x6730('0x41'),_0x3a03a3['serverUrl'],_0x510a81[_0x6730('0x42')],md5(_0x510a81[_0x6730('0x42')]));}else{_0x510a81[_0x6730('0x40')]='';}headers[_0x6730('0x43')]=getAuth(_0x3a03a3);return getUser(_0x3a03a3,'')[_0x6730('0x19')](function(_0x5a4dcc){_0x3e9d29=_0x5a4dcc;logger[_0x6730('0x1e')](_0x6730('0x44'),_0x3e9d29['id']);return getEndUser(_0x3a03a3,_0x510a81[_0x6730('0xe')],_0x510a81[_0x6730('0xf')]);})[_0x6730('0x19')](function(_0x5c6d0a){_0x5da09b=_0x5c6d0a;logger[_0x6730('0x1e')](_0x6730('0x45'),_0x5da09b['id']);return getTicket(_0x3a03a3,_0x3e9d29,_0x5da09b,_0x2128a1,_0x510a81);})[_0x6730('0x19')](function(_0x1fdafc){if(_0x1fdafc){logger[_0x6730('0x1e')](_0x6730('0x1a'));logger['info'](_0x6730('0x46'),_0x1fdafc['id']);}})[_0x6730('0x4c')](function(_0x399f07){logger['error']('['+_0x510a81[_0x6730('0x55')]['toUpperCase']()+']',JSON[_0x6730('0x2e')](_0x399f07));});};