Built motion from commit (unavailable).|2.5.23
[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 _0x5978=['%s/api/v2/tickets','POST','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','then','length','Agent\x20found!','find','contact','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','forEach','includes','picklist','type','content','string','idField','variable','customField','variableName','push','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','unmanaged','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','Descriptions','Tags','name','Fields','custom_fields','mapValues','keyBy','value'];(function(_0x4521e3,_0x10a8a4){var _0x46a272=function(_0x2f4c64){while(--_0x2f4c64){_0x4521e3['push'](_0x4521e3['shift']());}};_0x46a272(++_0x10a8a4);}(_0x5978,0x103));var _0x8597=function(_0x42a179,_0x59fe39){_0x42a179=_0x42a179-0x0;var _0x5d170e=_0x5978[_0x42a179];return _0x5d170e;};'use strict';var _=require(_0x8597('0x0'));var rp=require(_0x8597('0x1'));var md5=require(_0x8597('0x2'));var util=require(_0x8597('0x3'));var Redis=require(_0x8597('0x4'));var intUtil=require(_0x8597('0x5'));var config=require(_0x8597('0x6'));var logger=require(_0x8597('0x7'))('freshdesk');config['redis']=_[_0x8597('0x8')](config[_0x8597('0x9')],{'host':_0x8597('0xa'),'port':0x18eb});var io=require(_0x8597('0xb'))(new Redis(config['redis']));var headers={'Content-Type':_0x8597('0xc'),'Accept':_0x8597('0xc')};function emit(_0x47e317,_0x2be987,_0x42bc98){io['to'](_0x47e317)[_0x8597('0xd')](_0x2be987,_0x42bc98);}function getTicket(_0x1bb512,_0x4710ec,_0x165b5b,_0x1d9780,_0x1e623c){logger['info'](_0x8597('0xe'));var _0x2a6ba0=_[_0x8597('0xf')]({'responder_id':_0x4710ec['id'],'requester_id':_0x165b5b['id'],'name':util[_0x8597('0x10')](_0x8597('0x11'),_0x1e623c[_0x8597('0x12')]),'phone':_0x1e623c[_0x8597('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x1d9780[_0x8597('0x14')],_0x1e623c,'\x20'),'description':intUtil['getString'](_0x1d9780[_0x8597('0x15')],_0x1e623c,'<br>'),'tags':getTags(_0x1d9780[_0x8597('0x16')],_0x8597('0x17'))},getCustomFields(_0x1d9780[_0x8597('0x18')],_0x1e623c));_0x2a6ba0[_0x8597('0x19')]=_[_0x8597('0x1a')](_[_0x8597('0x1b')](_0x2a6ba0['custom_fields'],'id'),_0x8597('0x1c'));return request({'uri':util['format'](_0x8597('0x1d'),_0x1bb512['remoteUri']),'method':_0x8597('0x1e'),'body':_0x2a6ba0})['then'](function(_0x55c46d){logger[_0x8597('0x1f')](_0x8597('0x20'));return _0x55c46d;});}function getUser(_0x15ffe1,_0x19b482){if(intUtil[_0x8597('0x21')](_0x19b482)){return request({'uri':util[_0x8597('0x10')](_0x8597('0x22'),_0x15ffe1[_0x8597('0x23')]),'qs':{'email':_0x19b482}})[_0x8597('0x24')](function(_0x1b5984){if(_0x1b5984[_0x8597('0x25')]){logger[_0x8597('0x1f')](_0x8597('0x26'));return _[_0x8597('0x27')](_0x1b5984,function(_0x11716b){return _0x11716b[_0x8597('0x28')]['email']===_0x19b482;});}else{logger[_0x8597('0x1f')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x8597('0x10')](_0x8597('0x29'),_0x15ffe1[_0x8597('0x23')])})[_0x8597('0x24')](function(_0xad0f85){logger[_0x8597('0x1f')](_0x8597('0x2a'));return _0xad0f85;});}});}else{logger[_0x8597('0x1f')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x8597('0x10')]('%s/api/v2/agents/me',_0x15ffe1[_0x8597('0x23')])})[_0x8597('0x24')](function(_0x3ec732){logger[_0x8597('0x1f')](_0x8597('0x2a'));return _0x3ec732;});}}function getEndUser(_0x3503e1,_0x396e90,_0x543590){logger[_0x8597('0x1f')](_0x8597('0x2b'),_0x543590);return request({'uri':util['format'](_0x8597('0x2c'),_0x3503e1[_0x8597('0x23')]),'qs':{'phone':_0x543590}})[_0x8597('0x24')](function(_0xbb0851){if(_0xbb0851[_0x8597('0x25')]){logger['info'](_0x8597('0x2d'));return _[_0x8597('0x27')](_0xbb0851,{'phone':_0x543590});}else{logger[_0x8597('0x1f')](_0x8597('0x2e'));return request({'uri':util[_0x8597('0x10')](_0x8597('0x2c'),_0x3503e1['remoteUri']),'method':_0x8597('0x1e'),'body':{'name':_0x396e90,'phone':_0x543590}})['then'](function(_0xdb732b){logger[_0x8597('0x1f')]('Enduser\x20created.');return _0xdb732b;});}});}function getAuth(_0x57b72e){return util['format'](_0x8597('0x2f'),new Buffer(_0x57b72e[_0x8597('0x30')]+':X')[_0x8597('0x31')](_0x8597('0x32')));}function request(_0x399aa8){logger[_0x8597('0x33')](_0x8597('0x34'),JSON[_0x8597('0x35')](_0x399aa8));return rp(_[_0x8597('0x8')](_0x399aa8,{'method':_0x8597('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x2c30a1,_0xdf3fe9){var _0x2c772e=[];if(_0x2c30a1&&_0x2c30a1['length']>0x0){_0x2c772e=_['map'](_0x2c30a1,_0xdf3fe9);}return _0x2c772e;}function getCustomFields(_0x37847f,_0x2038e0){var _0x3c7c73=[];var _0x3124e8={'custom_fields':[]};if(_0x37847f[_0x8597('0x25')]>0x0){_[_0x8597('0x37')](_0x37847f,function(_0xf4c8a4){if(_[_0x8597('0x38')](['string',_0x8597('0x39')],_0xf4c8a4[_0x8597('0x3a')])&&_0xf4c8a4['nameField']&&!_0xf4c8a4['customField']){_0x3124e8[_0xf4c8a4['nameField']['toLowerCase']()]=_0xf4c8a4[_0x8597('0x3b')][_0x8597('0x31')]();}else if(_[_0x8597('0x38')]([_0x8597('0x3c'),_0x8597('0x39')],_0xf4c8a4['type'])&&_0xf4c8a4[_0x8597('0x3d')]&&_0xf4c8a4['customField']){_0x3124e8['custom_fields']['push']({'id':_0xf4c8a4['idField'],'value':_0xf4c8a4[_0x8597('0x3b')][_0x8597('0x31')]()});}else if(_0xf4c8a4[_0x8597('0x3a')]===_0x8597('0x3e')&&_0xf4c8a4['variableName']&&_0xf4c8a4[_0x8597('0x3d')]&&_0xf4c8a4[_0x8597('0x3f')]){_0x2038e0[_0xf4c8a4[_0x8597('0x40')]]&&_0x3124e8['custom_fields'][_0x8597('0x41')]({'id':_0xf4c8a4[_0x8597('0x3d')],'value':_0x2038e0[_0xf4c8a4[_0x8597('0x40')]][_0x8597('0x31')]()});}else if(_0xf4c8a4[_0x8597('0x3a')]===_0x8597('0x42')&&_0xf4c8a4[_0x8597('0x43')]&&_0xf4c8a4['Variable'][_0x8597('0x17')]&&_0xf4c8a4[_0x8597('0x3d')]&&_0xf4c8a4['customField']){_0x2038e0[_0xf4c8a4[_0x8597('0x43')][_0x8597('0x17')]['toLowerCase']()]&&_0x3124e8[_0x8597('0x19')][_0x8597('0x41')]({'id':_0xf4c8a4['idField'],'value':_0x2038e0[_0xf4c8a4[_0x8597('0x43')][_0x8597('0x17')][_0x8597('0x44')]()][_0x8597('0x31')]()});}});}return _0x3124e8;}exports[_0x8597('0x45')]=function(_0x5bb12a,_0x4edd11,_0x2f2812,_0xa79d19,_0x4b47e0,_0x3faa86){var _0x58a674,_0x490fa4;_0x3faa86[_0x8597('0x23')]=intUtil[_0x8597('0x46')](_0x3faa86[_0x8597('0x23')]);_0x3faa86[_0x8597('0x47')]=intUtil[_0x8597('0x46')](_0x3faa86['serverUrl']);if(_0x4b47e0&&_0x4b47e0[_0x8597('0x48')]){logger[_0x8597('0x1f')](_0x8597('0x49'),'Recording\x20is\x20enabled!');_0x4edd11['recordingURL']=util['format'](_0x8597('0x4a'),_0x3faa86[_0x8597('0x47')],_0x4edd11[_0x8597('0x4b')],md5(_0x4edd11[_0x8597('0x4b')]));}else{_0x4edd11['recordingURL']='';}headers[_0x8597('0x4c')]=getAuth(_0x3faa86);return getUser(_0x3faa86,_0xa79d19['email'])[_0x8597('0x24')](function(_0x70a30b){_0x58a674=_0x70a30b;logger[_0x8597('0x1f')](_0x8597('0x4d'),_0x58a674['id']);return getEndUser(_0x3faa86,_0x4edd11['calleridname'],_0x4edd11[_0x8597('0x13')]);})[_0x8597('0x24')](function(_0x560189){_0x490fa4=_0x560189;logger[_0x8597('0x1f')](_0x8597('0x4e'),_0x490fa4['id']);return getTicket(_0x3faa86,_0x58a674,_0x490fa4,_0x2f2812,_0x4edd11);})[_0x8597('0x24')](function(_0x49e206){if(_0x49e206&&_0x49e206['id']){logger['info'](_0x8597('0x20'));logger[_0x8597('0x1f')](_0x8597('0x4f'),_0x49e206['id']);logger[_0x8597('0x1f')](_0x8597('0x49'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0xa79d19['name']),'trigger:browser:url',{'uri':util['format']('%s/helpdesk/tickets/%d',_0x3faa86[_0x8597('0x23')],_0x49e206['id'])});}})['catch'](function(_0x2d97f3){logger['error'](_0x8597('0x49'),JSON[_0x8597('0x35')](_0x2d97f3));});};exports[_0x8597('0x50')]=function(_0x2abb3e,_0x4bc335,_0x35a605,_0x9f2654,_0x10036b,_0x5d0f3d,_0xad4c56){var _0x52bb0d,_0x2496dd;_0x5d0f3d[_0x8597('0x23')]=intUtil['stripTrailingSlash'](_0x5d0f3d[_0x8597('0x23')]);_0x5d0f3d[_0x8597('0x47')]=intUtil['stripTrailingSlash'](_0x5d0f3d['serverUrl']);if(_0xad4c56&&_0xad4c56[_0x8597('0x51')]&&_0xad4c56[_0x8597('0x51')]!==_0x8597('0x52')){logger['info'](_0x8597('0x53'),_0x8597('0x54'));_0x4bc335[_0x8597('0x55')]=util[_0x8597('0x10')](_0x8597('0x4a'),_0x5d0f3d[_0x8597('0x47')],_0x4bc335['uniqueid'],md5(_0x4bc335['uniqueid']));}headers[_0x8597('0x4c')]=getAuth(_0x5d0f3d);return getUser(_0x5d0f3d,_0x9f2654['email'])[_0x8597('0x24')](function(_0x252723){_0x52bb0d=_0x252723;logger['info'](_0x8597('0x4d'),_0x52bb0d['id']);return getEndUser(_0x5d0f3d,_0x4bc335[_0x8597('0x56')],_0x4bc335[_0x8597('0x57')]);})[_0x8597('0x24')](function(_0x97f21d){_0x2496dd=_0x97f21d;logger['info'](_0x8597('0x4e'),_0x2496dd['id']);return getTicket(_0x5d0f3d,_0x52bb0d,_0x2496dd,_0x35a605,_0x4bc335);})['then'](function(_0x3ad02a){if(_0x3ad02a&&_0x3ad02a['id']){logger['info']('Ticket\x20created!');logger['info'](_0x8597('0x4f'),_0x3ad02a['id']);logger[_0x8597('0x1f')]('[OUTBOUND]',_0x8597('0x58'));emit(util[_0x8597('0x10')](_0x8597('0x59'),_0x9f2654[_0x8597('0x17')]),_0x8597('0x5a'),{'uri':util[_0x8597('0x10')](_0x8597('0x5b'),_0x5d0f3d[_0x8597('0x23')],_0x3ad02a['id'])});}})[_0x8597('0x5c')](function(_0x28027f){logger[_0x8597('0x5d')](_0x8597('0x53'),JSON['stringify'](_0x28027f));});};exports[_0x8597('0x5e')]=function(_0x5be048,_0x20c47e,_0x4b2d1c,_0x156ac3,_0x5733f3,_0x13e228){var _0x5e754a,_0x553fab;_0x13e228['remoteUri']=intUtil[_0x8597('0x46')](_0x13e228[_0x8597('0x23')]);_0x13e228[_0x8597('0x47')]=intUtil[_0x8597('0x46')](_0x13e228[_0x8597('0x47')]);if(_0x5733f3&&_0x5733f3['monitor_format']){logger[_0x8597('0x1f')]('['+_0x20c47e['lastevent'][_0x8597('0x5f')]()+']',_0x8597('0x54'));_0x20c47e[_0x8597('0x55')]=util[_0x8597('0x10')](_0x8597('0x4a'),_0x13e228[_0x8597('0x47')],_0x20c47e[_0x8597('0x4b')],md5(_0x20c47e[_0x8597('0x4b')]));}else{_0x20c47e[_0x8597('0x55')]='';}headers[_0x8597('0x4c')]=getAuth(_0x13e228);return getUser(_0x13e228,'')[_0x8597('0x24')](function(_0x231216){_0x5e754a=_0x231216;logger[_0x8597('0x1f')](_0x8597('0x4d'),_0x5e754a['id']);return getEndUser(_0x13e228,_0x20c47e[_0x8597('0x12')],_0x20c47e[_0x8597('0x13')]);})[_0x8597('0x24')](function(_0x1aa49a){_0x553fab=_0x1aa49a;logger[_0x8597('0x1f')]('The\x20Enduser\x20ID\x20is:',_0x553fab['id']);return getTicket(_0x13e228,_0x5e754a,_0x553fab,_0x4b2d1c,_0x20c47e);})[_0x8597('0x24')](function(_0x338cf7){if(_0x338cf7){logger[_0x8597('0x1f')](_0x8597('0x20'));logger[_0x8597('0x1f')](_0x8597('0x4f'),_0x338cf7['id']);}})[_0x8597('0x5c')](function(_0x4b61df){logger['error']('['+_0x20c47e['lastevent'][_0x8597('0x5f')]()+']',JSON[_0x8597('0x35')](_0x4b61df));});};