Built motion from commit 67e5df37.|2.0.66
[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 _0x9bde=['email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20created.','apiKey','base64','debug','[HTTP]','stringify','map','forEach','type','customField','nameField','toLowerCase','content','toString','string','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','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','error','outbound','recordingFormat','none','destcalleridname','Ticket\x20created!','[OUTBOUND]','monitor_format','[ABANDONED]','request-promise','util','../../../../config/logger','freshdesk','socket.io-emitter','localhost','application/json','emit','info','Creating\x20new\x20ticket...','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','Descriptions','<br>','name','custom_fields','mapValues','keyBy','format','%s/api/v2/tickets','remoteUri','POST','then','%s/api/v2/agents','length','Agent\x20found!','contact'];(function(_0xf3b837,_0x4c2d5a){var _0x3e9a74=function(_0x50a2a2){while(--_0x50a2a2){_0xf3b837['push'](_0xf3b837['shift']());}};_0x3e9a74(++_0x4c2d5a);}(_0x9bde,0xe1));var _0xe9bd=function(_0x5bfba4,_0x196101){_0x5bfba4=_0x5bfba4-0x0;var _0x589d25=_0x9bde[_0x5bfba4];return _0x589d25;};'use strict';var _=require('lodash');var rp=require(_0xe9bd('0x0'));var md5=require('md5');var util=require(_0xe9bd('0x1'));var intUtil=require('./util');var logger=require(_0xe9bd('0x2'))(_0xe9bd('0x3'));var io=require(_0xe9bd('0x4'))({'host':_0xe9bd('0x5'),'port':0x18eb});var headers={'Content-Type':_0xe9bd('0x6'),'Accept':_0xe9bd('0x6')};function emit(_0x1baab1,_0x4fd7b8,_0x4763e9){io['to'](_0x1baab1)[_0xe9bd('0x7')](_0x4fd7b8,_0x4763e9);}function getTicket(_0x22a438,_0xa66ae2,_0x2d5c75,_0x3ef9e3,_0x29bc2b){logger[_0xe9bd('0x8')](_0xe9bd('0x9'));var _0x45c7ba=_['merge']({'responder_id':_0xa66ae2['id'],'requester_id':_0x2d5c75['id'],'name':util['format'](_0xe9bd('0xa'),_0x29bc2b[_0xe9bd('0xb')]),'phone':_0x29bc2b[_0xe9bd('0xc')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x3ef9e3[_0xe9bd('0xd')],_0x29bc2b,'\x20'),'description':intUtil[_0xe9bd('0xe')](_0x3ef9e3[_0xe9bd('0xf')],_0x29bc2b,_0xe9bd('0x10')),'tags':getTags(_0x3ef9e3['Tags'],_0xe9bd('0x11'))},getCustomFields(_0x3ef9e3['Fields'],_0x29bc2b));_0x45c7ba[_0xe9bd('0x12')]=_[_0xe9bd('0x13')](_[_0xe9bd('0x14')](_0x45c7ba['custom_fields'],'id'),'value');return request({'uri':util[_0xe9bd('0x15')](_0xe9bd('0x16'),_0x22a438[_0xe9bd('0x17')]),'method':_0xe9bd('0x18'),'body':_0x45c7ba})[_0xe9bd('0x19')](function(_0x389e7b){logger[_0xe9bd('0x8')]('Ticket\x20created!');return _0x389e7b;});}function getUser(_0x1d11a0,_0x464a1b){logger[_0xe9bd('0x8')]('Getting\x20agent\x20with\x20email',_0x464a1b);return request({'uri':util[_0xe9bd('0x15')](_0xe9bd('0x1a'),_0x1d11a0[_0xe9bd('0x17')]),'qs':{'email':_0x464a1b}})[_0xe9bd('0x19')](function(_0x5cf674){if(_0x5cf674[_0xe9bd('0x1b')]){logger['info'](_0xe9bd('0x1c'));return _['find'](_0x5cf674,function(_0x26aa4a){return _0x26aa4a[_0xe9bd('0x1d')][_0xe9bd('0x1e')]===_0x464a1b;});}else{logger[_0xe9bd('0x8')](_0xe9bd('0x1f'));return request({'uri':util[_0xe9bd('0x15')](_0xe9bd('0x20'),_0x1d11a0['remoteUri'])})[_0xe9bd('0x19')](function(_0x28cd17){logger['info'](_0xe9bd('0x21'));return _0x28cd17;});}});}function getEndUser(_0x505c23,_0x238ab1,_0x1b9cc9){logger[_0xe9bd('0x8')](_0xe9bd('0x22'),_0x1b9cc9);return request({'uri':util['format'](_0xe9bd('0x23'),_0x505c23[_0xe9bd('0x17')]),'qs':{'phone':_0x1b9cc9}})[_0xe9bd('0x19')](function(_0x39b206){if(_0x39b206[_0xe9bd('0x1b')]){logger[_0xe9bd('0x8')](_0xe9bd('0x24'));return _[_0xe9bd('0x25')](_0x39b206,{'phone':_0x1b9cc9});}else{logger[_0xe9bd('0x8')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xe9bd('0x15')](_0xe9bd('0x23'),_0x505c23['remoteUri']),'method':_0xe9bd('0x18'),'body':{'name':_0x238ab1,'phone':_0x1b9cc9}})[_0xe9bd('0x19')](function(_0x119672){logger[_0xe9bd('0x8')](_0xe9bd('0x26'));return _0x119672;});}});}function getAuth(_0x183601){return util['format']('Basic\x20%s',new Buffer(_0x183601[_0xe9bd('0x27')]+':X')['toString'](_0xe9bd('0x28')));}function request(_0x1f2c0e){logger[_0xe9bd('0x29')](_0xe9bd('0x2a'),JSON[_0xe9bd('0x2b')](_0x1f2c0e));return rp(_['defaults'](_0x1f2c0e,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x7f2c5,_0x3b6682){var _0x3f96a0=[];if(_0x7f2c5&&_0x7f2c5[_0xe9bd('0x1b')]>0x0){_0x3f96a0=_[_0xe9bd('0x2c')](_0x7f2c5,_0x3b6682);}return _0x3f96a0;}function getCustomFields(_0x1f0f9e,_0x3c31ee){var _0x66213a=[];var _0x45703e={'custom_fields':[]};if(_0x1f0f9e['length']>0x0){_[_0xe9bd('0x2d')](_0x1f0f9e,function(_0x81a31f){if(_0x81a31f[_0xe9bd('0x2e')]==='string'&&_0x81a31f['nameField']&&!_0x81a31f[_0xe9bd('0x2f')]){_0x45703e[_0x81a31f[_0xe9bd('0x30')][_0xe9bd('0x31')]()]=_0x81a31f[_0xe9bd('0x32')][_0xe9bd('0x33')]();}else if(_0x81a31f[_0xe9bd('0x2e')]===_0xe9bd('0x34')&&_0x81a31f[_0xe9bd('0x35')]&&_0x81a31f[_0xe9bd('0x2f')]){_0x45703e[_0xe9bd('0x12')][_0xe9bd('0x36')]({'id':_0x81a31f[_0xe9bd('0x35')],'value':_0x81a31f[_0xe9bd('0x32')][_0xe9bd('0x33')]()});}else if(_0x81a31f[_0xe9bd('0x2e')]===_0xe9bd('0x37')&&_0x81a31f[_0xe9bd('0x38')]&&_0x81a31f[_0xe9bd('0x35')]&&_0x81a31f['customField']){_0x3c31ee[_0x81a31f[_0xe9bd('0x38')]]&&_0x45703e[_0xe9bd('0x12')]['push']({'id':_0x81a31f[_0xe9bd('0x35')],'value':_0x3c31ee[_0x81a31f[_0xe9bd('0x38')]]['toString']()});}else if(_0x81a31f['type']===_0xe9bd('0x39')&&_0x81a31f[_0xe9bd('0x3a')]&&_0x81a31f['Variable'][_0xe9bd('0x11')]&&_0x81a31f[_0xe9bd('0x35')]&&_0x81a31f[_0xe9bd('0x2f')]){_0x3c31ee[_0x81a31f['Variable'][_0xe9bd('0x11')]['toLowerCase']()]&&_0x45703e[_0xe9bd('0x12')][_0xe9bd('0x36')]({'id':_0x81a31f[_0xe9bd('0x35')],'value':_0x3c31ee[_0x81a31f[_0xe9bd('0x3a')]['name'][_0xe9bd('0x31')]()][_0xe9bd('0x33')]()});}});}return _0x45703e;}exports[_0xe9bd('0x3b')]=function(_0x3f1212,_0x253359,_0x1e061d,_0x3647d8,_0xacfd19,_0x2b5a71){var _0x1d5d93,_0x4e8565;_0x2b5a71['remoteUri']=intUtil[_0xe9bd('0x3c')](_0x2b5a71['remoteUri']);_0x2b5a71[_0xe9bd('0x3d')]=intUtil[_0xe9bd('0x3c')](_0x2b5a71[_0xe9bd('0x3d')]);if(_0xacfd19&&_0xacfd19['monitor_format']){logger[_0xe9bd('0x8')](_0xe9bd('0x3e'),_0xe9bd('0x3f'));_0x253359['recordingURL']=util[_0xe9bd('0x15')](_0xe9bd('0x40'),_0x2b5a71[_0xe9bd('0x3d')],_0x253359[_0xe9bd('0x41')],md5(_0x253359[_0xe9bd('0x41')]));}else{_0x253359[_0xe9bd('0x42')]='';}headers[_0xe9bd('0x43')]=getAuth(_0x2b5a71);return getUser(_0x2b5a71,_0x3647d8[_0xe9bd('0x1e')])[_0xe9bd('0x19')](function(_0x300e07){_0x1d5d93=_0x300e07;logger[_0xe9bd('0x8')](_0xe9bd('0x44'),_0x1d5d93['id']);return getEndUser(_0x2b5a71,_0x253359[_0xe9bd('0xb')],_0x253359[_0xe9bd('0xc')]);})[_0xe9bd('0x19')](function(_0x5b70d3){_0x4e8565=_0x5b70d3;logger['info'](_0xe9bd('0x45'),_0x4e8565['id']);return getTicket(_0x2b5a71,_0x1d5d93,_0x4e8565,_0x1e061d,_0x253359);})[_0xe9bd('0x19')](function(_0x1fe93a){if(_0x1fe93a&&_0x1fe93a['id']){logger['info']('Ticket\x20created!');logger[_0xe9bd('0x8')](_0xe9bd('0x46'),_0x1fe93a['id']);logger[_0xe9bd('0x8')](_0xe9bd('0x3e'),_0xe9bd('0x47'));emit(util[_0xe9bd('0x15')](_0xe9bd('0x48'),_0x3647d8['name']),_0xe9bd('0x49'),{'uri':util['format'](_0xe9bd('0x4a'),_0x2b5a71[_0xe9bd('0x17')],_0x1fe93a['id'])});}})[_0xe9bd('0x4b')](function(_0x17dbcd){logger[_0xe9bd('0x4c')]('[QUEUE]',JSON[_0xe9bd('0x2b')](_0x17dbcd));});};exports[_0xe9bd('0x4d')]=function(_0xe14fa4,_0x58dc3b,_0xff4e14,_0x476f23,_0x34f787,_0x5a466b,_0x28d2ea){var _0x27e7b0,_0x2e634d;_0x5a466b[_0xe9bd('0x17')]=intUtil[_0xe9bd('0x3c')](_0x5a466b['remoteUri']);_0x5a466b[_0xe9bd('0x3d')]=intUtil['stripTrailingSlash'](_0x5a466b[_0xe9bd('0x3d')]);if(_0x28d2ea&&_0x28d2ea[_0xe9bd('0x4e')]&&_0x28d2ea[_0xe9bd('0x4e')]!==_0xe9bd('0x4f')){logger[_0xe9bd('0x8')]('[OUTBOUND]',_0xe9bd('0x3f'));_0x58dc3b['recordingURL']=util[_0xe9bd('0x15')](_0xe9bd('0x40'),_0x5a466b['serverUrl'],_0x58dc3b['uniqueid'],md5(_0x58dc3b[_0xe9bd('0x41')]));}headers['Authorization']=getAuth(_0x5a466b);return getUser(_0x5a466b,_0x476f23[_0xe9bd('0x1e')])['then'](function(_0x26b25a){_0x27e7b0=_0x26b25a;logger[_0xe9bd('0x8')]('The\x20User\x20ID\x20is:',_0x27e7b0['id']);return getEndUser(_0x5a466b,_0x58dc3b[_0xe9bd('0x50')],_0x58dc3b['destcalleridnum']);})[_0xe9bd('0x19')](function(_0x2d9a94){_0x2e634d=_0x2d9a94;logger[_0xe9bd('0x8')]('The\x20Enduser\x20ID\x20is:',_0x2e634d['id']);return getTicket(_0x5a466b,_0x27e7b0,_0x2e634d,_0xff4e14,_0x58dc3b);})[_0xe9bd('0x19')](function(_0x1d703f){if(_0x1d703f&&_0x1d703f['id']){logger[_0xe9bd('0x8')](_0xe9bd('0x51'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x1d703f['id']);logger[_0xe9bd('0x8')]('[OUTBOUND]',_0xe9bd('0x47'));emit(util[_0xe9bd('0x15')](_0xe9bd('0x48'),_0x476f23[_0xe9bd('0x11')]),_0xe9bd('0x49'),{'uri':util[_0xe9bd('0x15')](_0xe9bd('0x4a'),_0x5a466b[_0xe9bd('0x17')],_0x1d703f['id'])});}})[_0xe9bd('0x4b')](function(_0x3be526){logger[_0xe9bd('0x4c')](_0xe9bd('0x52'),JSON['stringify'](_0x3be526));});};exports['abandoned']=function(_0x566dd8,_0x10e685,_0x5a516e,_0x2c4ca7,_0xdd1301,_0x90db01){var _0x6232e5,_0x1c9328;_0x90db01[_0xe9bd('0x17')]=intUtil[_0xe9bd('0x3c')](_0x90db01[_0xe9bd('0x17')]);_0x90db01[_0xe9bd('0x3d')]=intUtil['stripTrailingSlash'](_0x90db01[_0xe9bd('0x3d')]);if(_0xdd1301&&_0xdd1301[_0xe9bd('0x53')]){logger[_0xe9bd('0x8')](_0xe9bd('0x54'),'Recording\x20is\x20enabled!');_0x10e685[_0xe9bd('0x42')]=util[_0xe9bd('0x15')](_0xe9bd('0x40'),_0x90db01['serverUrl'],_0x10e685[_0xe9bd('0x41')],md5(_0x10e685[_0xe9bd('0x41')]));}else{_0x10e685[_0xe9bd('0x42')]='';}headers[_0xe9bd('0x43')]=getAuth(_0x90db01);return getUser(_0x90db01,_0x2c4ca7['email'])['then'](function(_0x3e0de9){_0x6232e5=_0x3e0de9;logger[_0xe9bd('0x8')](_0xe9bd('0x44'),_0x6232e5['id']);return getEndUser(_0x90db01,_0x10e685[_0xe9bd('0xb')],_0x10e685['calleridnum']);})['then'](function(_0x305efa){_0x1c9328=_0x305efa;logger[_0xe9bd('0x8')](_0xe9bd('0x45'),_0x1c9328['id']);return getTicket(_0x90db01,_0x6232e5,_0x1c9328,_0x5a516e,_0x10e685);})[_0xe9bd('0x19')](function(_0x1fd2b5){if(_0x1fd2b5){logger[_0xe9bd('0x8')]('Ticket\x20created!');logger[_0xe9bd('0x8')]('The\x20Ticket\x20ID\x20is:',_0x1fd2b5['id']);}})[_0xe9bd('0x4b')](function(_0x28dd03){logger[_0xe9bd('0x4c')](_0xe9bd('0x54'),JSON['stringify'](_0x28dd03));});};