Built motion from commit (unavailable).|2.5.18
[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 _0x4bac=['variable','push','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','The\x20Ticket\x20ID\x20is:','[QUEUE]','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','toUpperCase','Authorization','lastevent','lodash','request-promise','md5','./util','../../../../config/environment','freshdesk','redis','defaults','localhost','application/json','emit','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','Agent\x20found!','contact','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','debug','[HTTP]','stringify','length','forEach','type','string','nameField','customField','toLowerCase','content','toString','idField'];(function(_0x23214b,_0xd53a83){var _0x459519=function(_0x508db6){while(--_0x508db6){_0x23214b['push'](_0x23214b['shift']());}};_0x459519(++_0xd53a83);}(_0x4bac,0xd3));var _0xc4ba=function(_0x351a22,_0x4d026d){_0x351a22=_0x351a22-0x0;var _0x4492b6=_0x4bac[_0x351a22];return _0x4492b6;};'use strict';var _=require(_0xc4ba('0x0'));var rp=require(_0xc4ba('0x1'));var md5=require(_0xc4ba('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xc4ba('0x3'));var config=require(_0xc4ba('0x4'));var logger=require('../../../../config/logger')(_0xc4ba('0x5'));config[_0xc4ba('0x6')]=_[_0xc4ba('0x7')](config['redis'],{'host':_0xc4ba('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc4ba('0x6')]));var headers={'Content-Type':_0xc4ba('0x9'),'Accept':_0xc4ba('0x9')};function emit(_0x2d35ea,_0x2b6644,_0x5b7cd5){io['to'](_0x2d35ea)[_0xc4ba('0xa')](_0x2b6644,_0x5b7cd5);}function getTicket(_0x7b68fc,_0x692777,_0x3e8840,_0x13aabf,_0x226e73){logger['info'](_0xc4ba('0xb'));var _0x276ddc=_['merge']({'responder_id':_0x692777['id'],'requester_id':_0x3e8840['id'],'name':util[_0xc4ba('0xc')](_0xc4ba('0xd'),_0x226e73['calleridname']),'phone':_0x226e73[_0xc4ba('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xc4ba('0xf')](_0x13aabf[_0xc4ba('0x10')],_0x226e73,'\x20'),'description':intUtil[_0xc4ba('0xf')](_0x13aabf[_0xc4ba('0x11')],_0x226e73,_0xc4ba('0x12')),'tags':getTags(_0x13aabf[_0xc4ba('0x13')],_0xc4ba('0x14'))},getCustomFields(_0x13aabf[_0xc4ba('0x15')],_0x226e73));_0x276ddc[_0xc4ba('0x16')]=_[_0xc4ba('0x17')](_['keyBy'](_0x276ddc[_0xc4ba('0x16')],'id'),'value');return request({'uri':util[_0xc4ba('0xc')](_0xc4ba('0x18'),_0x7b68fc[_0xc4ba('0x19')]),'method':_0xc4ba('0x1a'),'body':_0x276ddc})[_0xc4ba('0x1b')](function(_0x430fca){logger[_0xc4ba('0x1c')](_0xc4ba('0x1d'));return _0x430fca;});}function getUser(_0x38ac72,_0x468d2a){if(intUtil[_0xc4ba('0x1e')](_0x468d2a)){return request({'uri':util['format']('%s/api/v2/agents',_0x38ac72[_0xc4ba('0x19')]),'qs':{'email':_0x468d2a}})[_0xc4ba('0x1b')](function(_0x231d42){if(_0x231d42['length']){logger[_0xc4ba('0x1c')](_0xc4ba('0x1f'));return _['find'](_0x231d42,function(_0x4c48b7){return _0x4c48b7[_0xc4ba('0x20')]['email']===_0x468d2a;});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc4ba('0xc')](_0xc4ba('0x21'),_0x38ac72[_0xc4ba('0x19')])})['then'](function(_0x4486f1){logger[_0xc4ba('0x1c')]('Admin\x20account\x20selected.');return _0x4486f1;});}});}else{logger['info'](_0xc4ba('0x22'));return request({'uri':util['format'](_0xc4ba('0x21'),_0x38ac72['remoteUri'])})[_0xc4ba('0x1b')](function(_0x17ad6b){logger[_0xc4ba('0x1c')](_0xc4ba('0x23'));return _0x17ad6b;});}}function getEndUser(_0x41214b,_0x2c6dfc,_0x3ffbda){logger[_0xc4ba('0x1c')](_0xc4ba('0x24'),_0x3ffbda);return request({'uri':util['format'](_0xc4ba('0x25'),_0x41214b[_0xc4ba('0x19')]),'qs':{'phone':_0x3ffbda}})[_0xc4ba('0x1b')](function(_0x3d3b9b){if(_0x3d3b9b['length']){logger[_0xc4ba('0x1c')]('Enduser\x20found!');return _[_0xc4ba('0x26')](_0x3d3b9b,{'phone':_0x3ffbda});}else{logger[_0xc4ba('0x1c')](_0xc4ba('0x27'));return request({'uri':util['format']('%s/api/v2/contacts',_0x41214b[_0xc4ba('0x19')]),'method':'POST','body':{'name':_0x2c6dfc,'phone':_0x3ffbda}})[_0xc4ba('0x1b')](function(_0x1ab1b0){logger[_0xc4ba('0x1c')](_0xc4ba('0x28'));return _0x1ab1b0;});}});}function getAuth(_0x1e315f){return util[_0xc4ba('0xc')](_0xc4ba('0x29'),new Buffer(_0x1e315f[_0xc4ba('0x2a')]+':X')['toString']('base64'));}function request(_0x535382){logger[_0xc4ba('0x2b')](_0xc4ba('0x2c'),JSON[_0xc4ba('0x2d')](_0x535382));return rp(_[_0xc4ba('0x7')](_0x535382,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x26d02a,_0x857db9){var _0x20a500=[];if(_0x26d02a&&_0x26d02a['length']>0x0){_0x20a500=_['map'](_0x26d02a,_0x857db9);}return _0x20a500;}function getCustomFields(_0x2dfea3,_0x46b022){var _0x20a220=[];var _0x3bcace={'custom_fields':[]};if(_0x2dfea3[_0xc4ba('0x2e')]>0x0){_[_0xc4ba('0x2f')](_0x2dfea3,function(_0x55d1af){if(_0x55d1af[_0xc4ba('0x30')]===_0xc4ba('0x31')&&_0x55d1af[_0xc4ba('0x32')]&&!_0x55d1af[_0xc4ba('0x33')]){_0x3bcace[_0x55d1af['nameField'][_0xc4ba('0x34')]()]=_0x55d1af[_0xc4ba('0x35')][_0xc4ba('0x36')]();}else if(_0x55d1af[_0xc4ba('0x30')]===_0xc4ba('0x31')&&_0x55d1af[_0xc4ba('0x37')]&&_0x55d1af[_0xc4ba('0x33')]){_0x3bcace[_0xc4ba('0x16')]['push']({'id':_0x55d1af[_0xc4ba('0x37')],'value':_0x55d1af[_0xc4ba('0x35')][_0xc4ba('0x36')]()});}else if(_0x55d1af[_0xc4ba('0x30')]===_0xc4ba('0x38')&&_0x55d1af['variableName']&&_0x55d1af['idField']&&_0x55d1af[_0xc4ba('0x33')]){_0x46b022[_0x55d1af['variableName']]&&_0x3bcace[_0xc4ba('0x16')][_0xc4ba('0x39')]({'id':_0x55d1af[_0xc4ba('0x37')],'value':_0x46b022[_0x55d1af[_0xc4ba('0x3a')]][_0xc4ba('0x36')]()});}else if(_0x55d1af[_0xc4ba('0x30')]===_0xc4ba('0x3b')&&_0x55d1af[_0xc4ba('0x3c')]&&_0x55d1af[_0xc4ba('0x3c')]['name']&&_0x55d1af[_0xc4ba('0x37')]&&_0x55d1af[_0xc4ba('0x33')]){_0x46b022[_0x55d1af[_0xc4ba('0x3c')][_0xc4ba('0x14')]['toLowerCase']()]&&_0x3bcace['custom_fields'][_0xc4ba('0x39')]({'id':_0x55d1af['idField'],'value':_0x46b022[_0x55d1af['Variable'][_0xc4ba('0x14')][_0xc4ba('0x34')]()][_0xc4ba('0x36')]()});}});}return _0x3bcace;}exports['queue']=function(_0x1b72c0,_0x281b8d,_0x1f7e3b,_0x335bc3,_0x27924f,_0x1f585e){var _0x10f0f7,_0x5a04e7;_0x1f585e[_0xc4ba('0x19')]=intUtil[_0xc4ba('0x3d')](_0x1f585e[_0xc4ba('0x19')]);_0x1f585e[_0xc4ba('0x3e')]=intUtil[_0xc4ba('0x3d')](_0x1f585e[_0xc4ba('0x3e')]);if(_0x27924f&&_0x27924f[_0xc4ba('0x3f')]){logger[_0xc4ba('0x1c')]('[QUEUE]',_0xc4ba('0x40'));_0x281b8d[_0xc4ba('0x41')]=util[_0xc4ba('0xc')](_0xc4ba('0x42'),_0x1f585e[_0xc4ba('0x3e')],_0x281b8d[_0xc4ba('0x43')],md5(_0x281b8d[_0xc4ba('0x43')]));}else{_0x281b8d['recordingURL']='';}headers['Authorization']=getAuth(_0x1f585e);return getUser(_0x1f585e,_0x335bc3[_0xc4ba('0x44')])[_0xc4ba('0x1b')](function(_0x2284b2){_0x10f0f7=_0x2284b2;logger[_0xc4ba('0x1c')]('The\x20User\x20ID\x20is:',_0x10f0f7['id']);return getEndUser(_0x1f585e,_0x281b8d[_0xc4ba('0x45')],_0x281b8d[_0xc4ba('0xe')]);})[_0xc4ba('0x1b')](function(_0x5c0a4d){_0x5a04e7=_0x5c0a4d;logger[_0xc4ba('0x1c')]('The\x20Enduser\x20ID\x20is:',_0x5a04e7['id']);return getTicket(_0x1f585e,_0x10f0f7,_0x5a04e7,_0x1f7e3b,_0x281b8d);})[_0xc4ba('0x1b')](function(_0x16b2e3){if(_0x16b2e3&&_0x16b2e3['id']){logger[_0xc4ba('0x1c')]('Ticket\x20created!');logger[_0xc4ba('0x1c')](_0xc4ba('0x46'),_0x16b2e3['id']);logger[_0xc4ba('0x1c')](_0xc4ba('0x47'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc4ba('0xc')](_0xc4ba('0x48'),_0x335bc3[_0xc4ba('0x14')]),_0xc4ba('0x49'),{'uri':util[_0xc4ba('0xc')](_0xc4ba('0x4a'),_0x1f585e[_0xc4ba('0x19')],_0x16b2e3['id'])});}})[_0xc4ba('0x4b')](function(_0x28cd44){logger[_0xc4ba('0x4c')](_0xc4ba('0x47'),JSON[_0xc4ba('0x2d')](_0x28cd44));});};exports[_0xc4ba('0x4d')]=function(_0x13b308,_0x34a11c,_0x5de7df,_0xacd8d1,_0x478c31,_0x2317c1,_0x1bcebe){var _0x517fb9,_0x46dc11;_0x2317c1['remoteUri']=intUtil[_0xc4ba('0x3d')](_0x2317c1['remoteUri']);_0x2317c1['serverUrl']=intUtil[_0xc4ba('0x3d')](_0x2317c1['serverUrl']);if(_0x1bcebe&&_0x1bcebe['recordingFormat']&&_0x1bcebe[_0xc4ba('0x4e')]!==_0xc4ba('0x4f')){logger[_0xc4ba('0x1c')](_0xc4ba('0x50'),_0xc4ba('0x40'));_0x34a11c[_0xc4ba('0x41')]=util[_0xc4ba('0xc')](_0xc4ba('0x42'),_0x2317c1[_0xc4ba('0x3e')],_0x34a11c[_0xc4ba('0x43')],md5(_0x34a11c['uniqueid']));}headers['Authorization']=getAuth(_0x2317c1);return getUser(_0x2317c1,_0xacd8d1[_0xc4ba('0x44')])[_0xc4ba('0x1b')](function(_0x3080eb){_0x517fb9=_0x3080eb;logger['info'](_0xc4ba('0x51'),_0x517fb9['id']);return getEndUser(_0x2317c1,_0x34a11c[_0xc4ba('0x52')],_0x34a11c[_0xc4ba('0x53')]);})[_0xc4ba('0x1b')](function(_0x47333a){_0x46dc11=_0x47333a;logger['info'](_0xc4ba('0x54'),_0x46dc11['id']);return getTicket(_0x2317c1,_0x517fb9,_0x46dc11,_0x5de7df,_0x34a11c);})[_0xc4ba('0x1b')](function(_0x222e03){if(_0x222e03&&_0x222e03['id']){logger[_0xc4ba('0x1c')](_0xc4ba('0x1d'));logger[_0xc4ba('0x1c')](_0xc4ba('0x46'),_0x222e03['id']);logger[_0xc4ba('0x1c')]('[OUTBOUND]',_0xc4ba('0x55'));emit(util[_0xc4ba('0xc')](_0xc4ba('0x48'),_0xacd8d1[_0xc4ba('0x14')]),_0xc4ba('0x49'),{'uri':util['format'](_0xc4ba('0x4a'),_0x2317c1['remoteUri'],_0x222e03['id'])});}})[_0xc4ba('0x4b')](function(_0x4c4592){logger[_0xc4ba('0x4c')](_0xc4ba('0x50'),JSON[_0xc4ba('0x2d')](_0x4c4592));});};exports['unmanaged']=function(_0x2a9c52,_0x5ce454,_0x4953f0,_0x422ec9,_0x320620,_0x2282c5){var _0x239dac,_0x3f3726;_0x2282c5[_0xc4ba('0x19')]=intUtil[_0xc4ba('0x3d')](_0x2282c5[_0xc4ba('0x19')]);_0x2282c5['serverUrl']=intUtil['stripTrailingSlash'](_0x2282c5[_0xc4ba('0x3e')]);if(_0x320620&&_0x320620[_0xc4ba('0x3f')]){logger[_0xc4ba('0x1c')]('['+_0x5ce454['lastevent'][_0xc4ba('0x56')]()+']',_0xc4ba('0x40'));_0x5ce454['recordingURL']=util[_0xc4ba('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2282c5[_0xc4ba('0x3e')],_0x5ce454[_0xc4ba('0x43')],md5(_0x5ce454[_0xc4ba('0x43')]));}else{_0x5ce454[_0xc4ba('0x41')]='';}headers[_0xc4ba('0x57')]=getAuth(_0x2282c5);return getUser(_0x2282c5,'')[_0xc4ba('0x1b')](function(_0x539714){_0x239dac=_0x539714;logger[_0xc4ba('0x1c')]('The\x20User\x20ID\x20is:',_0x239dac['id']);return getEndUser(_0x2282c5,_0x5ce454[_0xc4ba('0x45')],_0x5ce454[_0xc4ba('0xe')]);})[_0xc4ba('0x1b')](function(_0x6fa415){_0x3f3726=_0x6fa415;logger['info'](_0xc4ba('0x54'),_0x3f3726['id']);return getTicket(_0x2282c5,_0x239dac,_0x3f3726,_0x4953f0,_0x5ce454);})[_0xc4ba('0x1b')](function(_0x1ec779){if(_0x1ec779){logger[_0xc4ba('0x1c')](_0xc4ba('0x1d'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x1ec779['id']);}})[_0xc4ba('0x4b')](function(_0x4dbf26){logger[_0xc4ba('0x4c')]('['+_0x5ce454[_0xc4ba('0x58')][_0xc4ba('0x56')]()+']',JSON[_0xc4ba('0x2d')](_0x4dbf26));});};