6d22f32085d051f24e9e29723728a1087b675f02
[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 _0x902c=['emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','<br>','Tags','name','Fields','mapValues','custom_fields','value','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','POST','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','picklist','type','toLowerCase','content','idField','customField','push','variable','variableName','Variable','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridname','destcalleridnum','error','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json'];(function(_0x15a97c,_0x18b506){var _0x46c6cd=function(_0x3ca007){while(--_0x3ca007){_0x15a97c['push'](_0x15a97c['shift']());}};_0x46c6cd(++_0x18b506);}(_0x902c,0x160));var _0xc902=function(_0xec5e0c,_0x5245ea){_0xec5e0c=_0xec5e0c-0x0;var _0x4006ce=_0x902c[_0xec5e0c];return _0x4006ce;};'use strict';var _=require(_0xc902('0x0'));var rp=require(_0xc902('0x1'));var md5=require(_0xc902('0x2'));var util=require(_0xc902('0x3'));var Redis=require(_0xc902('0x4'));var intUtil=require(_0xc902('0x5'));var config=require('../../../../config/environment');var logger=require(_0xc902('0x6'))(_0xc902('0x7'));config[_0xc902('0x8')]=_['defaults'](config[_0xc902('0x8')],{'host':_0xc902('0x9'),'port':0x18eb});var io=require(_0xc902('0xa'))(new Redis(config[_0xc902('0x8')]));var headers={'Content-Type':_0xc902('0xb'),'Accept':_0xc902('0xb')};function emit(_0xbd5656,_0x341a27,_0x534f84){io['to'](_0xbd5656)[_0xc902('0xc')](_0x341a27,_0x534f84);}function getTicket(_0x16fc33,_0x24b295,_0x4ddac8,_0x5dfc1f,_0x4aac8b){logger[_0xc902('0xd')](_0xc902('0xe'));var _0x491b87=_[_0xc902('0xf')]({'responder_id':_0x24b295['id'],'requester_id':_0x4ddac8['id'],'name':util[_0xc902('0x10')](_0xc902('0x11'),_0x4aac8b[_0xc902('0x12')]),'phone':_0x4aac8b[_0xc902('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x5dfc1f[_0xc902('0x14')],_0x4aac8b,'\x20'),'description':intUtil['getString'](_0x5dfc1f['Descriptions'],_0x4aac8b,_0xc902('0x15')),'tags':getTags(_0x5dfc1f[_0xc902('0x16')],_0xc902('0x17'))},getCustomFields(_0x5dfc1f[_0xc902('0x18')],_0x4aac8b));_0x491b87['custom_fields']=_[_0xc902('0x19')](_['keyBy'](_0x491b87[_0xc902('0x1a')],'id'),_0xc902('0x1b'));return request({'uri':util[_0xc902('0x10')](_0xc902('0x1c'),_0x16fc33[_0xc902('0x1d')]),'method':'POST','body':_0x491b87})[_0xc902('0x1e')](function(_0x1d3e08){logger['info'](_0xc902('0x1f'));return _0x1d3e08;});}function getUser(_0x50193d,_0x38e1d4){if(intUtil[_0xc902('0x20')](_0x38e1d4)){return request({'uri':util[_0xc902('0x10')](_0xc902('0x21'),_0x50193d[_0xc902('0x1d')]),'qs':{'email':_0x38e1d4}})[_0xc902('0x1e')](function(_0x525ead){if(_0x525ead[_0xc902('0x22')]){logger[_0xc902('0xd')]('Agent\x20found!');return _[_0xc902('0x23')](_0x525ead,function(_0x53a240){return _0x53a240[_0xc902('0x24')][_0xc902('0x25')]===_0x38e1d4;});}else{logger[_0xc902('0xd')](_0xc902('0x26'));return request({'uri':util[_0xc902('0x10')]('%s/api/v2/agents/me',_0x50193d[_0xc902('0x1d')])})['then'](function(_0x105797){logger[_0xc902('0xd')]('Admin\x20account\x20selected.');return _0x105797;});}});}else{logger[_0xc902('0xd')](_0xc902('0x27'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x50193d[_0xc902('0x1d')])})[_0xc902('0x1e')](function(_0x1d996e){logger['info']('Admin\x20account\x20selected.');return _0x1d996e;});}}function getEndUser(_0x22202b,_0x480ca0,_0x2dc4a7){logger[_0xc902('0xd')](_0xc902('0x28'),_0x2dc4a7);return request({'uri':util[_0xc902('0x10')]('%s/api/v2/contacts',_0x22202b[_0xc902('0x1d')]),'qs':{'phone':_0x2dc4a7}})[_0xc902('0x1e')](function(_0xf9d1c1){if(_0xf9d1c1['length']){logger[_0xc902('0xd')](_0xc902('0x29'));return _[_0xc902('0x23')](_0xf9d1c1,{'phone':_0x2dc4a7});}else{logger[_0xc902('0xd')](_0xc902('0x2a'));return request({'uri':util[_0xc902('0x10')](_0xc902('0x2b'),_0x22202b[_0xc902('0x1d')]),'method':_0xc902('0x2c'),'body':{'name':_0x480ca0,'phone':_0x2dc4a7}})[_0xc902('0x1e')](function(_0x3d41b6){logger[_0xc902('0xd')](_0xc902('0x2d'));return _0x3d41b6;});}});}function getAuth(_0x222eac){return util[_0xc902('0x10')](_0xc902('0x2e'),new Buffer(_0x222eac[_0xc902('0x2f')]+':X')[_0xc902('0x30')](_0xc902('0x31')));}function request(_0x3c1806){logger[_0xc902('0x32')](_0xc902('0x33'),JSON[_0xc902('0x34')](_0x3c1806));return rp(_['defaults'](_0x3c1806,{'method':_0xc902('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x1fd55e,_0x28f597){var _0x4a46bb=[];if(_0x1fd55e&&_0x1fd55e[_0xc902('0x22')]>0x0){_0x4a46bb=_[_0xc902('0x36')](_0x1fd55e,_0x28f597);}return _0x4a46bb;}function getCustomFields(_0xe4e984,_0x4829e1){var _0x559c05=[];var _0x370809={'custom_fields':[]};if(_0xe4e984['length']>0x0){_[_0xc902('0x37')](_0xe4e984,function(_0x13aab2){if(_[_0xc902('0x38')](['string',_0xc902('0x39')],_0x13aab2[_0xc902('0x3a')])&&_0x13aab2['nameField']&&!_0x13aab2['customField']){_0x370809[_0x13aab2['nameField'][_0xc902('0x3b')]()]=_0x13aab2[_0xc902('0x3c')][_0xc902('0x30')]();}else if(_[_0xc902('0x38')](['string',_0xc902('0x39')],_0x13aab2['type'])&&_0x13aab2[_0xc902('0x3d')]&&_0x13aab2[_0xc902('0x3e')]){_0x370809[_0xc902('0x1a')][_0xc902('0x3f')]({'id':_0x13aab2[_0xc902('0x3d')],'value':_0x13aab2[_0xc902('0x3c')]['toString']()});}else if(_0x13aab2[_0xc902('0x3a')]===_0xc902('0x40')&&_0x13aab2['variableName']&&_0x13aab2['idField']&&_0x13aab2['customField']){_0x4829e1[_0x13aab2[_0xc902('0x41')]]&&_0x370809[_0xc902('0x1a')][_0xc902('0x3f')]({'id':_0x13aab2['idField'],'value':_0x4829e1[_0x13aab2['variableName']][_0xc902('0x30')]()});}else if(_0x13aab2['type']==='customVariable'&&_0x13aab2['Variable']&&_0x13aab2[_0xc902('0x42')][_0xc902('0x17')]&&_0x13aab2[_0xc902('0x3d')]&&_0x13aab2[_0xc902('0x3e')]){_0x4829e1[_0x13aab2['Variable']['name'][_0xc902('0x3b')]()]&&_0x370809['custom_fields'][_0xc902('0x3f')]({'id':_0x13aab2['idField'],'value':_0x4829e1[_0x13aab2[_0xc902('0x42')][_0xc902('0x17')][_0xc902('0x3b')]()][_0xc902('0x30')]()});}});}return _0x370809;}exports['queue']=function(_0x58fc14,_0x54792b,_0x2f7c91,_0x5d2365,_0x12559f,_0x2911c3){var _0x37edf8,_0x3cd539;_0x2911c3[_0xc902('0x1d')]=intUtil['stripTrailingSlash'](_0x2911c3[_0xc902('0x1d')]);_0x2911c3[_0xc902('0x43')]=intUtil[_0xc902('0x44')](_0x2911c3[_0xc902('0x43')]);if(_0x12559f&&_0x12559f['monitor_format']){logger['info'](_0xc902('0x45'),_0xc902('0x46'));_0x54792b['recordingURL']=util[_0xc902('0x10')](_0xc902('0x47'),_0x2911c3[_0xc902('0x43')],_0x54792b[_0xc902('0x48')],md5(_0x54792b['uniqueid']));}else{_0x54792b['recordingURL']='';}headers[_0xc902('0x49')]=getAuth(_0x2911c3);return getUser(_0x2911c3,_0x5d2365[_0xc902('0x25')])[_0xc902('0x1e')](function(_0x444345){_0x37edf8=_0x444345;logger[_0xc902('0xd')](_0xc902('0x4a'),_0x37edf8['id']);return getEndUser(_0x2911c3,_0x54792b[_0xc902('0x12')],_0x54792b[_0xc902('0x13')]);})[_0xc902('0x1e')](function(_0x4c6867){_0x3cd539=_0x4c6867;logger[_0xc902('0xd')]('The\x20Enduser\x20ID\x20is:',_0x3cd539['id']);return getTicket(_0x2911c3,_0x37edf8,_0x3cd539,_0x2f7c91,_0x54792b);})[_0xc902('0x1e')](function(_0x27f252){if(_0x27f252&&_0x27f252['id']){logger[_0xc902('0xd')](_0xc902('0x1f'));logger[_0xc902('0xd')](_0xc902('0x4b'),_0x27f252['id']);logger[_0xc902('0xd')](_0xc902('0x45'),_0xc902('0x4c'));emit(util[_0xc902('0x10')](_0xc902('0x4d'),_0x5d2365[_0xc902('0x17')]),_0xc902('0x4e'),{'uri':util['format'](_0xc902('0x4f'),_0x2911c3['remoteUri'],_0x27f252['id'])});}})[_0xc902('0x50')](function(_0x511918){logger['error'](_0xc902('0x45'),JSON[_0xc902('0x34')](_0x511918));});};exports['outbound']=function(_0x246cda,_0x60618,_0x456192,_0x4b1c30,_0x29adf3,_0x1c4cba,_0x343dd2){var _0x3403b5,_0x4050bc;_0x1c4cba[_0xc902('0x1d')]=intUtil[_0xc902('0x44')](_0x1c4cba[_0xc902('0x1d')]);_0x1c4cba[_0xc902('0x43')]=intUtil[_0xc902('0x44')](_0x1c4cba['serverUrl']);if(_0x343dd2&&_0x343dd2['recordingFormat']&&_0x343dd2[_0xc902('0x51')]!==_0xc902('0x52')){logger[_0xc902('0xd')](_0xc902('0x53'),_0xc902('0x46'));_0x60618[_0xc902('0x54')]=util['format'](_0xc902('0x47'),_0x1c4cba[_0xc902('0x43')],_0x60618[_0xc902('0x48')],md5(_0x60618[_0xc902('0x48')]));}headers['Authorization']=getAuth(_0x1c4cba);return getUser(_0x1c4cba,_0x4b1c30['email'])[_0xc902('0x1e')](function(_0x3c967c){_0x3403b5=_0x3c967c;logger[_0xc902('0xd')](_0xc902('0x4a'),_0x3403b5['id']);return getEndUser(_0x1c4cba,_0x60618[_0xc902('0x55')],_0x60618[_0xc902('0x56')]);})['then'](function(_0x41c575){_0x4050bc=_0x41c575;logger['info']('The\x20Enduser\x20ID\x20is:',_0x4050bc['id']);return getTicket(_0x1c4cba,_0x3403b5,_0x4050bc,_0x456192,_0x60618);})[_0xc902('0x1e')](function(_0x160dbf){if(_0x160dbf&&_0x160dbf['id']){logger[_0xc902('0xd')](_0xc902('0x1f'));logger[_0xc902('0xd')](_0xc902('0x4b'),_0x160dbf['id']);logger[_0xc902('0xd')](_0xc902('0x53'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc902('0x10')](_0xc902('0x4d'),_0x4b1c30['name']),'trigger:browser:url',{'uri':util[_0xc902('0x10')](_0xc902('0x4f'),_0x1c4cba[_0xc902('0x1d')],_0x160dbf['id'])});}})[_0xc902('0x50')](function(_0x4f7c40){logger[_0xc902('0x57')](_0xc902('0x53'),JSON['stringify'](_0x4f7c40));});};exports['unmanaged']=function(_0x373bdf,_0x14e6d5,_0x327166,_0x4f72b6,_0x302328,_0x39c484){var _0x2b5759,_0x221c03;_0x39c484[_0xc902('0x1d')]=intUtil[_0xc902('0x44')](_0x39c484[_0xc902('0x1d')]);_0x39c484[_0xc902('0x43')]=intUtil['stripTrailingSlash'](_0x39c484[_0xc902('0x43')]);if(_0x302328&&_0x302328['monitor_format']){logger[_0xc902('0xd')]('['+_0x14e6d5[_0xc902('0x58')][_0xc902('0x59')]()+']',_0xc902('0x46'));_0x14e6d5[_0xc902('0x54')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x39c484[_0xc902('0x43')],_0x14e6d5['uniqueid'],md5(_0x14e6d5[_0xc902('0x48')]));}else{_0x14e6d5[_0xc902('0x54')]='';}headers[_0xc902('0x49')]=getAuth(_0x39c484);return getUser(_0x39c484,'')['then'](function(_0x2f2a86){_0x2b5759=_0x2f2a86;logger[_0xc902('0xd')](_0xc902('0x4a'),_0x2b5759['id']);return getEndUser(_0x39c484,_0x14e6d5[_0xc902('0x12')],_0x14e6d5[_0xc902('0x13')]);})[_0xc902('0x1e')](function(_0x5d7d87){_0x221c03=_0x5d7d87;logger[_0xc902('0xd')](_0xc902('0x5a'),_0x221c03['id']);return getTicket(_0x39c484,_0x2b5759,_0x221c03,_0x327166,_0x14e6d5);})['then'](function(_0x494f09){if(_0x494f09){logger['info']('Ticket\x20created!');logger[_0xc902('0xd')](_0xc902('0x4b'),_0x494f09['id']);}})[_0xc902('0x50')](function(_0x263bbb){logger['error']('['+_0x14e6d5[_0xc902('0x58')]['toUpperCase']()+']',JSON['stringify'](_0x263bbb));});};