Built motion from commit 00bf23f6.|2.6.16
[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 _0x439c=['unmanaged','toUpperCase','The\x20User\x20ID\x20is:','catch','lastevent','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','merge','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','<br>','Tags','name','custom_fields','mapValues','keyBy','value','format','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','Agent\x20found!','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','GET','map','string','nameField','customField','toLowerCase','includes','type','push','idField','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20Enduser\x20ID\x20is:','user:%s','%s/helpdesk/tickets/%d','error','none','[OUTBOUND]','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...'];(function(_0x5ec569,_0x17c7bc){var _0x15091=function(_0xf1cc8e){while(--_0xf1cc8e){_0x5ec569['push'](_0x5ec569['shift']());}};_0x15091(++_0x17c7bc);}(_0x439c,0x110));var _0xc439=function(_0x13b7ab,_0x590916){_0x13b7ab=_0x13b7ab-0x0;var _0x152fe2=_0x439c[_0x13b7ab];return _0x152fe2;};'use strict';var _=require(_0xc439('0x0'));var rp=require(_0xc439('0x1'));var md5=require('md5');var util=require(_0xc439('0x2'));var Redis=require(_0xc439('0x3'));var intUtil=require(_0xc439('0x4'));var config=require(_0xc439('0x5'));var logger=require(_0xc439('0x6'))('freshdesk');config[_0xc439('0x7')]=_[_0xc439('0x8')](config[_0xc439('0x7')],{'host':_0xc439('0x9'),'port':0x18eb});var io=require(_0xc439('0xa'))(new Redis(config[_0xc439('0x7')]));var headers={'Content-Type':_0xc439('0xb'),'Accept':_0xc439('0xb')};function emit(_0x1d735c,_0x26b1a8,_0x219297){io['to'](_0x1d735c)[_0xc439('0xc')](_0x26b1a8,_0x219297);}function getTicket(_0x16df7e,_0x46a4b3,_0x529cca,_0x184db8,_0x4d9dcf){logger[_0xc439('0xd')]('Creating\x20new\x20ticket...');var _0x1350cb=_[_0xc439('0xe')]({'responder_id':_0x46a4b3['id'],'requester_id':_0x529cca['id'],'name':util['format'](_0xc439('0xf'),_0x4d9dcf[_0xc439('0x10')]),'phone':_0x4d9dcf[_0xc439('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x184db8[_0xc439('0x12')],_0x4d9dcf,'\x20'),'description':intUtil[_0xc439('0x13')](_0x184db8['Descriptions'],_0x4d9dcf,_0xc439('0x14')),'tags':getTags(_0x184db8[_0xc439('0x15')],_0xc439('0x16'))},getCustomFields(_0x184db8['Fields'],_0x4d9dcf));_0x1350cb[_0xc439('0x17')]=_[_0xc439('0x18')](_[_0xc439('0x19')](_0x1350cb[_0xc439('0x17')],'id'),_0xc439('0x1a'));return request({'uri':util[_0xc439('0x1b')](_0xc439('0x1c'),_0x16df7e[_0xc439('0x1d')]),'method':'POST','body':_0x1350cb})[_0xc439('0x1e')](function(_0x4a6fd2){logger[_0xc439('0xd')](_0xc439('0x1f'));return _0x4a6fd2;});}function getUser(_0x37d240,_0x4b51f1){if(intUtil[_0xc439('0x20')](_0x4b51f1)){return request({'uri':util[_0xc439('0x1b')](_0xc439('0x21'),_0x37d240[_0xc439('0x1d')]),'qs':{'email':_0x4b51f1}})['then'](function(_0x3fd93d){if(_0x3fd93d['length']){logger[_0xc439('0xd')](_0xc439('0x22'));return _['find'](_0x3fd93d,function(_0xcd81d9){return _0xcd81d9[_0xc439('0x23')][_0xc439('0x24')]===_0x4b51f1;});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc439('0x1b')](_0xc439('0x25'),_0x37d240['remoteUri'])})['then'](function(_0x5a99c9){logger[_0xc439('0xd')](_0xc439('0x26'));return _0x5a99c9;});}});}else{logger[_0xc439('0xd')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc439('0x1b')]('%s/api/v2/agents/me',_0x37d240[_0xc439('0x1d')])})[_0xc439('0x1e')](function(_0x381d42){logger[_0xc439('0xd')](_0xc439('0x26'));return _0x381d42;});}}function getEndUser(_0x188498,_0x44e819,_0x2dfd4d){logger[_0xc439('0xd')](_0xc439('0x27'),_0x2dfd4d);return request({'uri':util[_0xc439('0x1b')](_0xc439('0x28'),_0x188498[_0xc439('0x1d')]),'qs':{'phone':_0x2dfd4d}})[_0xc439('0x1e')](function(_0x582d8a){if(_0x582d8a[_0xc439('0x29')]){logger[_0xc439('0xd')](_0xc439('0x2a'));return _[_0xc439('0x2b')](_0x582d8a,{'phone':_0x2dfd4d});}else{logger[_0xc439('0xd')](_0xc439('0x2c'));return request({'uri':util[_0xc439('0x1b')]('%s/api/v2/contacts',_0x188498['remoteUri']),'method':_0xc439('0x2d'),'body':{'name':_0x44e819,'phone':_0x2dfd4d}})[_0xc439('0x1e')](function(_0x4336f1){logger[_0xc439('0xd')](_0xc439('0x2e'));return _0x4336f1;});}});}function getAuth(_0x361764){return util['format'](_0xc439('0x2f'),new Buffer(_0x361764[_0xc439('0x30')]+':X')[_0xc439('0x31')]('base64'));}function request(_0x196b12){logger[_0xc439('0x32')](_0xc439('0x33'),JSON[_0xc439('0x34')](_0x196b12));return rp(_[_0xc439('0x8')](_0x196b12,{'method':_0xc439('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x384f28,_0x2a4612){var _0x3ce8ba=[];if(_0x384f28&&_0x384f28[_0xc439('0x29')]>0x0){_0x3ce8ba=_[_0xc439('0x36')](_0x384f28,_0x2a4612);}return _0x3ce8ba;}function getCustomFields(_0x31aa96,_0x30d2ea){var _0x5f1f5e=[];var _0x25509={'custom_fields':[]};if(_0x31aa96[_0xc439('0x29')]>0x0){_['forEach'](_0x31aa96,function(_0x171b98){if(_['includes']([_0xc439('0x37'),'picklist'],_0x171b98['type'])&&_0x171b98[_0xc439('0x38')]&&!_0x171b98[_0xc439('0x39')]){_0x25509[_0x171b98[_0xc439('0x38')][_0xc439('0x3a')]()]=_0x171b98['content'][_0xc439('0x31')]();}else if(_[_0xc439('0x3b')](['string','picklist'],_0x171b98[_0xc439('0x3c')])&&_0x171b98['idField']&&_0x171b98['customField']){_0x25509[_0xc439('0x17')][_0xc439('0x3d')]({'id':_0x171b98['idField'],'value':_0x171b98['content'][_0xc439('0x31')]()});}else if(_0x171b98[_0xc439('0x3c')]==='variable'&&_0x171b98['variableName']&&_0x171b98[_0xc439('0x3e')]&&_0x171b98[_0xc439('0x39')]){_0x30d2ea[_0x171b98['variableName']]&&_0x25509[_0xc439('0x17')][_0xc439('0x3d')]({'id':_0x171b98['idField'],'value':_0x30d2ea[_0x171b98[_0xc439('0x3f')]][_0xc439('0x31')]()});}else if(_0x171b98['type']===_0xc439('0x40')&&_0x171b98[_0xc439('0x41')]&&_0x171b98['Variable'][_0xc439('0x16')]&&_0x171b98[_0xc439('0x3e')]&&_0x171b98[_0xc439('0x39')]){_0x30d2ea[_0x171b98['Variable'][_0xc439('0x16')][_0xc439('0x3a')]()]&&_0x25509[_0xc439('0x17')]['push']({'id':_0x171b98[_0xc439('0x3e')],'value':_0x30d2ea[_0x171b98[_0xc439('0x41')][_0xc439('0x16')]['toLowerCase']()][_0xc439('0x31')]()});}});}return _0x25509;}exports['queue']=function(_0x4a5c67,_0x47e6ab,_0x1e7d83,_0x1fa347,_0x4e7ea2,_0x14feba){var _0x28d1be,_0x30fe48;_0x14feba['remoteUri']=intUtil[_0xc439('0x42')](_0x14feba['remoteUri']);_0x14feba[_0xc439('0x43')]=intUtil[_0xc439('0x42')](_0x14feba[_0xc439('0x43')]);if(_0x4e7ea2&&_0x4e7ea2[_0xc439('0x44')]){logger[_0xc439('0xd')](_0xc439('0x45'),_0xc439('0x46'));_0x47e6ab['recordingURL']=util[_0xc439('0x1b')](_0xc439('0x47'),_0x14feba[_0xc439('0x43')],_0x47e6ab[_0xc439('0x48')],md5(_0x47e6ab[_0xc439('0x48')]));}else{_0x47e6ab[_0xc439('0x49')]='';}headers[_0xc439('0x4a')]=getAuth(_0x14feba);return getUser(_0x14feba,_0x1fa347[_0xc439('0x24')])['then'](function(_0x422f16){_0x28d1be=_0x422f16;logger[_0xc439('0xd')]('The\x20User\x20ID\x20is:',_0x28d1be['id']);return getEndUser(_0x14feba,_0x47e6ab[_0xc439('0x10')],_0x47e6ab[_0xc439('0x11')]);})[_0xc439('0x1e')](function(_0x583b22){_0x30fe48=_0x583b22;logger[_0xc439('0xd')](_0xc439('0x4b'),_0x30fe48['id']);return getTicket(_0x14feba,_0x28d1be,_0x30fe48,_0x1e7d83,_0x47e6ab);})[_0xc439('0x1e')](function(_0x4f0eb4){if(_0x4f0eb4&&_0x4f0eb4['id']){logger[_0xc439('0xd')]('Ticket\x20created!');logger[_0xc439('0xd')]('The\x20Ticket\x20ID\x20is:',_0x4f0eb4['id']);logger[_0xc439('0xd')](_0xc439('0x45'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc439('0x1b')](_0xc439('0x4c'),_0x1fa347[_0xc439('0x16')]),'trigger:browser:url',{'uri':util[_0xc439('0x1b')](_0xc439('0x4d'),_0x14feba[_0xc439('0x1d')],_0x4f0eb4['id'])});}})['catch'](function(_0x139d23){logger[_0xc439('0x4e')](_0xc439('0x45'),JSON[_0xc439('0x34')](_0x139d23));});};exports['outbound']=function(_0x27f655,_0x4bf663,_0x32c150,_0x177eaa,_0x414fd7,_0x2c2807,_0x23ea01){var _0x203996,_0x51dcb9;_0x2c2807['remoteUri']=intUtil[_0xc439('0x42')](_0x2c2807[_0xc439('0x1d')]);_0x2c2807[_0xc439('0x43')]=intUtil[_0xc439('0x42')](_0x2c2807[_0xc439('0x43')]);if(_0x23ea01&&_0x23ea01['recordingFormat']&&_0x23ea01['recordingFormat']!==_0xc439('0x4f')){logger[_0xc439('0xd')](_0xc439('0x50'),_0xc439('0x46'));_0x4bf663[_0xc439('0x49')]=util[_0xc439('0x1b')](_0xc439('0x47'),_0x2c2807[_0xc439('0x43')],_0x4bf663['uniqueid'],md5(_0x4bf663[_0xc439('0x48')]));}headers[_0xc439('0x4a')]=getAuth(_0x2c2807);return getUser(_0x2c2807,_0x177eaa[_0xc439('0x24')])[_0xc439('0x1e')](function(_0x4cf808){_0x203996=_0x4cf808;logger[_0xc439('0xd')]('The\x20User\x20ID\x20is:',_0x203996['id']);return getEndUser(_0x2c2807,_0x4bf663['destcalleridname'],_0x4bf663[_0xc439('0x51')]);})['then'](function(_0x2d83e7){_0x51dcb9=_0x2d83e7;logger[_0xc439('0xd')]('The\x20Enduser\x20ID\x20is:',_0x51dcb9['id']);return getTicket(_0x2c2807,_0x203996,_0x51dcb9,_0x32c150,_0x4bf663);})[_0xc439('0x1e')](function(_0x29bd12){if(_0x29bd12&&_0x29bd12['id']){logger[_0xc439('0xd')](_0xc439('0x1f'));logger[_0xc439('0xd')](_0xc439('0x52'),_0x29bd12['id']);logger[_0xc439('0xd')](_0xc439('0x50'),_0xc439('0x53'));emit(util['format'](_0xc439('0x4c'),_0x177eaa[_0xc439('0x16')]),'trigger:browser:url',{'uri':util[_0xc439('0x1b')](_0xc439('0x4d'),_0x2c2807[_0xc439('0x1d')],_0x29bd12['id'])});}})['catch'](function(_0x2a02b8){logger[_0xc439('0x4e')]('[OUTBOUND]',JSON[_0xc439('0x34')](_0x2a02b8));});};exports[_0xc439('0x54')]=function(_0xeb7a59,_0x1e412e,_0x21636f,_0x300604,_0x21670a,_0x45be13){var _0x7877f9,_0x27873c;_0x45be13[_0xc439('0x1d')]=intUtil[_0xc439('0x42')](_0x45be13[_0xc439('0x1d')]);_0x45be13[_0xc439('0x43')]=intUtil[_0xc439('0x42')](_0x45be13[_0xc439('0x43')]);if(_0x21670a&&_0x21670a['monitor_format']){logger[_0xc439('0xd')]('['+_0x1e412e['lastevent'][_0xc439('0x55')]()+']','Recording\x20is\x20enabled!');_0x1e412e[_0xc439('0x49')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x45be13[_0xc439('0x43')],_0x1e412e['uniqueid'],md5(_0x1e412e[_0xc439('0x48')]));}else{_0x1e412e['recordingURL']='';}headers[_0xc439('0x4a')]=getAuth(_0x45be13);return getUser(_0x45be13,'')[_0xc439('0x1e')](function(_0x42586d){_0x7877f9=_0x42586d;logger['info'](_0xc439('0x56'),_0x7877f9['id']);return getEndUser(_0x45be13,_0x1e412e[_0xc439('0x10')],_0x1e412e['calleridnum']);})[_0xc439('0x1e')](function(_0x4bf45b){_0x27873c=_0x4bf45b;logger[_0xc439('0xd')]('The\x20Enduser\x20ID\x20is:',_0x27873c['id']);return getTicket(_0x45be13,_0x7877f9,_0x27873c,_0x21636f,_0x1e412e);})[_0xc439('0x1e')](function(_0x46cef4){if(_0x46cef4){logger[_0xc439('0xd')]('Ticket\x20created!');logger[_0xc439('0xd')](_0xc439('0x52'),_0x46cef4['id']);}})[_0xc439('0x57')](function(_0x4e58ec){logger[_0xc439('0x4e')]('['+_0x1e412e[_0xc439('0x58')][_0xc439('0x55')]()+']',JSON[_0xc439('0x34')](_0x4e58ec));});};