Built motion from commit 994c64e1.|2.6.1
[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 _0xdd28=['Searching\x20enduser\x20with\x20phone','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','apiKey','toString','base64','stringify','GET','map','includes','string','type','customField','nameField','toLowerCase','content','picklist','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','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:','user:%s','catch','error','outbound','recordingFormat','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','toUpperCase','lastevent','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!'];(function(_0xa84d75,_0x4573e6){var _0x24bf0a=function(_0x337eb3){while(--_0x337eb3){_0xa84d75['push'](_0xa84d75['shift']());}};_0x24bf0a(++_0x4573e6);}(_0xdd28,0x92));var _0x8dd2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd28[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8dd2('0x0'));var rp=require(_0x8dd2('0x1'));var md5=require(_0x8dd2('0x2'));var util=require(_0x8dd2('0x3'));var Redis=require(_0x8dd2('0x4'));var intUtil=require(_0x8dd2('0x5'));var config=require('../../../../config/environment');var logger=require(_0x8dd2('0x6'))(_0x8dd2('0x7'));config[_0x8dd2('0x8')]=_[_0x8dd2('0x9')](config[_0x8dd2('0x8')],{'host':_0x8dd2('0xa'),'port':0x18eb});var io=require(_0x8dd2('0xb'))(new Redis(config[_0x8dd2('0x8')]));var headers={'Content-Type':_0x8dd2('0xc'),'Accept':_0x8dd2('0xc')};function emit(_0x1c6493,_0x30eb9a,_0x36b46d){io['to'](_0x1c6493)['emit'](_0x30eb9a,_0x36b46d);}function getTicket(_0x399dbb,_0x5f00b0,_0x3f459d,_0x43575b,_0x31e7ad){logger[_0x8dd2('0xd')](_0x8dd2('0xe'));var _0x2bee3e=_[_0x8dd2('0xf')]({'responder_id':_0x5f00b0['id'],'requester_id':_0x3f459d['id'],'name':util[_0x8dd2('0x10')](_0x8dd2('0x11'),_0x31e7ad[_0x8dd2('0x12')]),'phone':_0x31e7ad[_0x8dd2('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x8dd2('0x14')](_0x43575b[_0x8dd2('0x15')],_0x31e7ad,'\x20'),'description':intUtil[_0x8dd2('0x14')](_0x43575b[_0x8dd2('0x16')],_0x31e7ad,_0x8dd2('0x17')),'tags':getTags(_0x43575b[_0x8dd2('0x18')],_0x8dd2('0x19'))},getCustomFields(_0x43575b[_0x8dd2('0x1a')],_0x31e7ad));_0x2bee3e[_0x8dd2('0x1b')]=_[_0x8dd2('0x1c')](_[_0x8dd2('0x1d')](_0x2bee3e['custom_fields'],'id'),_0x8dd2('0x1e'));return request({'uri':util[_0x8dd2('0x10')]('%s/api/v2/tickets',_0x399dbb[_0x8dd2('0x1f')]),'method':_0x8dd2('0x20'),'body':_0x2bee3e})[_0x8dd2('0x21')](function(_0xc7c694){logger['info'](_0x8dd2('0x22'));return _0xc7c694;});}function getUser(_0x1a0eb2,_0x4ac393){if(intUtil[_0x8dd2('0x23')](_0x4ac393)){return request({'uri':util[_0x8dd2('0x10')](_0x8dd2('0x24'),_0x1a0eb2['remoteUri']),'qs':{'email':_0x4ac393}})['then'](function(_0x59f2a0){if(_0x59f2a0[_0x8dd2('0x25')]){logger[_0x8dd2('0xd')](_0x8dd2('0x26'));return _['find'](_0x59f2a0,function(_0x523aa8){return _0x523aa8['contact'][_0x8dd2('0x27')]===_0x4ac393;});}else{logger[_0x8dd2('0xd')](_0x8dd2('0x28'));return request({'uri':util[_0x8dd2('0x10')](_0x8dd2('0x29'),_0x1a0eb2[_0x8dd2('0x1f')])})[_0x8dd2('0x21')](function(_0x831a87){logger['info'](_0x8dd2('0x2a'));return _0x831a87;});}});}else{logger[_0x8dd2('0xd')](_0x8dd2('0x2b'));return request({'uri':util[_0x8dd2('0x10')](_0x8dd2('0x29'),_0x1a0eb2[_0x8dd2('0x1f')])})[_0x8dd2('0x21')](function(_0x4df8d4){logger['info'](_0x8dd2('0x2a'));return _0x4df8d4;});}}function getEndUser(_0x5050e7,_0x2374b1,_0x3fcb47){logger[_0x8dd2('0xd')](_0x8dd2('0x2c'),_0x3fcb47);return request({'uri':util[_0x8dd2('0x10')]('%s/api/v2/contacts',_0x5050e7['remoteUri']),'qs':{'phone':_0x3fcb47}})[_0x8dd2('0x21')](function(_0x59280b){if(_0x59280b[_0x8dd2('0x25')]){logger[_0x8dd2('0xd')](_0x8dd2('0x2d'));return _[_0x8dd2('0x2e')](_0x59280b,{'phone':_0x3fcb47});}else{logger[_0x8dd2('0xd')](_0x8dd2('0x2f'));return request({'uri':util[_0x8dd2('0x10')](_0x8dd2('0x30'),_0x5050e7['remoteUri']),'method':_0x8dd2('0x20'),'body':{'name':_0x2374b1,'phone':_0x3fcb47}})[_0x8dd2('0x21')](function(_0x31646b){logger['info'](_0x8dd2('0x31'));return _0x31646b;});}});}function getAuth(_0x1d0873){return util[_0x8dd2('0x10')]('Basic\x20%s',new Buffer(_0x1d0873[_0x8dd2('0x32')]+':X')[_0x8dd2('0x33')](_0x8dd2('0x34')));}function request(_0xadee50){logger['debug']('[HTTP]',JSON[_0x8dd2('0x35')](_0xadee50));return rp(_[_0x8dd2('0x9')](_0xadee50,{'method':_0x8dd2('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x467ea3,_0x28cfa0){var _0x23f894=[];if(_0x467ea3&&_0x467ea3[_0x8dd2('0x25')]>0x0){_0x23f894=_[_0x8dd2('0x37')](_0x467ea3,_0x28cfa0);}return _0x23f894;}function getCustomFields(_0x1e6e23,_0x229612){var _0x133894=[];var _0x5b4666={'custom_fields':[]};if(_0x1e6e23['length']>0x0){_['forEach'](_0x1e6e23,function(_0x1a68db){if(_[_0x8dd2('0x38')]([_0x8dd2('0x39'),'picklist'],_0x1a68db[_0x8dd2('0x3a')])&&_0x1a68db['nameField']&&!_0x1a68db[_0x8dd2('0x3b')]){_0x5b4666[_0x1a68db[_0x8dd2('0x3c')][_0x8dd2('0x3d')]()]=_0x1a68db[_0x8dd2('0x3e')][_0x8dd2('0x33')]();}else if(_[_0x8dd2('0x38')]([_0x8dd2('0x39'),_0x8dd2('0x3f')],_0x1a68db[_0x8dd2('0x3a')])&&_0x1a68db[_0x8dd2('0x40')]&&_0x1a68db[_0x8dd2('0x3b')]){_0x5b4666[_0x8dd2('0x1b')][_0x8dd2('0x41')]({'id':_0x1a68db[_0x8dd2('0x40')],'value':_0x1a68db[_0x8dd2('0x3e')][_0x8dd2('0x33')]()});}else if(_0x1a68db['type']===_0x8dd2('0x42')&&_0x1a68db[_0x8dd2('0x43')]&&_0x1a68db[_0x8dd2('0x40')]&&_0x1a68db['customField']){_0x229612[_0x1a68db[_0x8dd2('0x43')]]&&_0x5b4666[_0x8dd2('0x1b')]['push']({'id':_0x1a68db[_0x8dd2('0x40')],'value':_0x229612[_0x1a68db[_0x8dd2('0x43')]][_0x8dd2('0x33')]()});}else if(_0x1a68db[_0x8dd2('0x3a')]===_0x8dd2('0x44')&&_0x1a68db[_0x8dd2('0x45')]&&_0x1a68db[_0x8dd2('0x45')][_0x8dd2('0x19')]&&_0x1a68db[_0x8dd2('0x40')]&&_0x1a68db[_0x8dd2('0x3b')]){_0x229612[_0x1a68db[_0x8dd2('0x45')][_0x8dd2('0x19')][_0x8dd2('0x3d')]()]&&_0x5b4666[_0x8dd2('0x1b')][_0x8dd2('0x41')]({'id':_0x1a68db[_0x8dd2('0x40')],'value':_0x229612[_0x1a68db[_0x8dd2('0x45')][_0x8dd2('0x19')][_0x8dd2('0x3d')]()][_0x8dd2('0x33')]()});}});}return _0x5b4666;}exports[_0x8dd2('0x46')]=function(_0x3968d0,_0x571993,_0x4e4c13,_0x997ec4,_0x5f3cb4,_0xb21a46){var _0x1aa6aa,_0x10e4b3;_0xb21a46['remoteUri']=intUtil[_0x8dd2('0x47')](_0xb21a46['remoteUri']);_0xb21a46[_0x8dd2('0x48')]=intUtil[_0x8dd2('0x47')](_0xb21a46['serverUrl']);if(_0x5f3cb4&&_0x5f3cb4[_0x8dd2('0x49')]){logger[_0x8dd2('0xd')](_0x8dd2('0x4a'),_0x8dd2('0x4b'));_0x571993[_0x8dd2('0x4c')]=util[_0x8dd2('0x10')](_0x8dd2('0x4d'),_0xb21a46[_0x8dd2('0x48')],_0x571993[_0x8dd2('0x4e')],md5(_0x571993[_0x8dd2('0x4e')]));}else{_0x571993['recordingURL']='';}headers[_0x8dd2('0x4f')]=getAuth(_0xb21a46);return getUser(_0xb21a46,_0x997ec4[_0x8dd2('0x27')])[_0x8dd2('0x21')](function(_0x395e56){_0x1aa6aa=_0x395e56;logger[_0x8dd2('0xd')](_0x8dd2('0x50'),_0x1aa6aa['id']);return getEndUser(_0xb21a46,_0x571993[_0x8dd2('0x12')],_0x571993[_0x8dd2('0x13')]);})[_0x8dd2('0x21')](function(_0x2e8f7f){_0x10e4b3=_0x2e8f7f;logger[_0x8dd2('0xd')](_0x8dd2('0x51'),_0x10e4b3['id']);return getTicket(_0xb21a46,_0x1aa6aa,_0x10e4b3,_0x4e4c13,_0x571993);})[_0x8dd2('0x21')](function(_0x2527db){if(_0x2527db&&_0x2527db['id']){logger[_0x8dd2('0xd')](_0x8dd2('0x22'));logger[_0x8dd2('0xd')](_0x8dd2('0x52'),_0x2527db['id']);logger[_0x8dd2('0xd')](_0x8dd2('0x4a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x8dd2('0x10')](_0x8dd2('0x53'),_0x997ec4['name']),'trigger:browser:url',{'uri':util[_0x8dd2('0x10')]('%s/helpdesk/tickets/%d',_0xb21a46[_0x8dd2('0x1f')],_0x2527db['id'])});}})[_0x8dd2('0x54')](function(_0x2048f9){logger[_0x8dd2('0x55')](_0x8dd2('0x4a'),JSON[_0x8dd2('0x35')](_0x2048f9));});};exports[_0x8dd2('0x56')]=function(_0x4d786e,_0x1dfd74,_0x584af9,_0x486706,_0x40b71d,_0x1b9c42,_0x1d3317){var _0x35cf4f,_0x42c8a5;_0x1b9c42[_0x8dd2('0x1f')]=intUtil[_0x8dd2('0x47')](_0x1b9c42['remoteUri']);_0x1b9c42[_0x8dd2('0x48')]=intUtil[_0x8dd2('0x47')](_0x1b9c42[_0x8dd2('0x48')]);if(_0x1d3317&&_0x1d3317[_0x8dd2('0x57')]&&_0x1d3317[_0x8dd2('0x57')]!=='none'){logger[_0x8dd2('0xd')](_0x8dd2('0x58'),_0x8dd2('0x4b'));_0x1dfd74[_0x8dd2('0x4c')]=util[_0x8dd2('0x10')](_0x8dd2('0x4d'),_0x1b9c42[_0x8dd2('0x48')],_0x1dfd74['uniqueid'],md5(_0x1dfd74[_0x8dd2('0x4e')]));}headers[_0x8dd2('0x4f')]=getAuth(_0x1b9c42);return getUser(_0x1b9c42,_0x486706[_0x8dd2('0x27')])['then'](function(_0x3f6bf3){_0x35cf4f=_0x3f6bf3;logger[_0x8dd2('0xd')](_0x8dd2('0x50'),_0x35cf4f['id']);return getEndUser(_0x1b9c42,_0x1dfd74['destcalleridname'],_0x1dfd74[_0x8dd2('0x59')]);})['then'](function(_0x30aae6){_0x42c8a5=_0x30aae6;logger[_0x8dd2('0xd')](_0x8dd2('0x51'),_0x42c8a5['id']);return getTicket(_0x1b9c42,_0x35cf4f,_0x42c8a5,_0x584af9,_0x1dfd74);})[_0x8dd2('0x21')](function(_0x5bcfc2){if(_0x5bcfc2&&_0x5bcfc2['id']){logger[_0x8dd2('0xd')](_0x8dd2('0x22'));logger[_0x8dd2('0xd')](_0x8dd2('0x52'),_0x5bcfc2['id']);logger[_0x8dd2('0xd')](_0x8dd2('0x58'),_0x8dd2('0x5a'));emit(util['format'](_0x8dd2('0x53'),_0x486706[_0x8dd2('0x19')]),_0x8dd2('0x5b'),{'uri':util[_0x8dd2('0x10')](_0x8dd2('0x5c'),_0x1b9c42[_0x8dd2('0x1f')],_0x5bcfc2['id'])});}})['catch'](function(_0x54548e){logger[_0x8dd2('0x55')](_0x8dd2('0x58'),JSON[_0x8dd2('0x35')](_0x54548e));});};exports['unmanaged']=function(_0x585e53,_0x3c5940,_0x31870d,_0x3bca05,_0x18def6,_0x2c0b5d){var _0x189cc9,_0x5f1ce2;_0x2c0b5d[_0x8dd2('0x1f')]=intUtil[_0x8dd2('0x47')](_0x2c0b5d[_0x8dd2('0x1f')]);_0x2c0b5d[_0x8dd2('0x48')]=intUtil[_0x8dd2('0x47')](_0x2c0b5d[_0x8dd2('0x48')]);if(_0x18def6&&_0x18def6[_0x8dd2('0x49')]){logger[_0x8dd2('0xd')]('['+_0x3c5940['lastevent'][_0x8dd2('0x5d')]()+']',_0x8dd2('0x4b'));_0x3c5940[_0x8dd2('0x4c')]=util[_0x8dd2('0x10')](_0x8dd2('0x4d'),_0x2c0b5d[_0x8dd2('0x48')],_0x3c5940[_0x8dd2('0x4e')],md5(_0x3c5940[_0x8dd2('0x4e')]));}else{_0x3c5940[_0x8dd2('0x4c')]='';}headers['Authorization']=getAuth(_0x2c0b5d);return getUser(_0x2c0b5d,'')[_0x8dd2('0x21')](function(_0x17066a){_0x189cc9=_0x17066a;logger[_0x8dd2('0xd')](_0x8dd2('0x50'),_0x189cc9['id']);return getEndUser(_0x2c0b5d,_0x3c5940[_0x8dd2('0x12')],_0x3c5940[_0x8dd2('0x13')]);})[_0x8dd2('0x21')](function(_0x43139e){_0x5f1ce2=_0x43139e;logger['info'](_0x8dd2('0x51'),_0x5f1ce2['id']);return getTicket(_0x2c0b5d,_0x189cc9,_0x5f1ce2,_0x31870d,_0x3c5940);})['then'](function(_0x49567e){if(_0x49567e){logger[_0x8dd2('0xd')](_0x8dd2('0x22'));logger['info'](_0x8dd2('0x52'),_0x49567e['id']);}})['catch'](function(_0x21303c){logger[_0x8dd2('0x55')]('['+_0x3c5940[_0x8dd2('0x5e')][_0x8dd2('0x5d')]()+']',JSON[_0x8dd2('0x35')](_0x21303c));});};