Built motion from commit 616d3211.|2.6.4
[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 _0x2231=['serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','freshdesk','redis','localhost','application/json','emit','info','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','format','%s/api/v2/tickets','remoteUri','POST','then','validateEmail','length','Agent\x20found!','find','%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!','apiKey','debug','stringify','defaults','forEach','includes','string','type','nameField','customField','toLowerCase','content','toString','picklist','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash'];(function(_0x36a2ff,_0x53f9d7){var _0x6b7cee=function(_0x2d9478){while(--_0x2d9478){_0x36a2ff['push'](_0x36a2ff['shift']());}};_0x6b7cee(++_0x53f9d7);}(_0x2231,0x184));var _0x1223=function(_0x50c7e5,_0x380f0f){_0x50c7e5=_0x50c7e5-0x0;var _0x108f56=_0x2231[_0x50c7e5];return _0x108f56;};'use strict';var _=require(_0x1223('0x0'));var rp=require(_0x1223('0x1'));var md5=require(_0x1223('0x2'));var util=require(_0x1223('0x3'));var Redis=require(_0x1223('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x1223('0x5'));config[_0x1223('0x6')]=_['defaults'](config[_0x1223('0x6')],{'host':_0x1223('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0x1223('0x8')};function emit(_0x16b78b,_0x22c3ec,_0x271e7a){io['to'](_0x16b78b)[_0x1223('0x9')](_0x22c3ec,_0x271e7a);}function getTicket(_0x47a686,_0x47020e,_0x5a9ce6,_0x3bed38,_0x3f8024){logger[_0x1223('0xa')]('Creating\x20new\x20ticket...');var _0xce0da2=_[_0x1223('0xb')]({'responder_id':_0x47020e['id'],'requester_id':_0x5a9ce6['id'],'name':util['format'](_0x1223('0xc'),_0x3f8024[_0x1223('0xd')]),'phone':_0x3f8024[_0x1223('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x1223('0xf')](_0x3bed38[_0x1223('0x10')],_0x3f8024,'\x20'),'description':intUtil[_0x1223('0xf')](_0x3bed38['Descriptions'],_0x3f8024,_0x1223('0x11')),'tags':getTags(_0x3bed38[_0x1223('0x12')],_0x1223('0x13'))},getCustomFields(_0x3bed38[_0x1223('0x14')],_0x3f8024));_0xce0da2[_0x1223('0x15')]=_[_0x1223('0x16')](_[_0x1223('0x17')](_0xce0da2[_0x1223('0x15')],'id'),_0x1223('0x18'));return request({'uri':util[_0x1223('0x19')](_0x1223('0x1a'),_0x47a686[_0x1223('0x1b')]),'method':_0x1223('0x1c'),'body':_0xce0da2})[_0x1223('0x1d')](function(_0x2db1f3){logger['info']('Ticket\x20created!');return _0x2db1f3;});}function getUser(_0x4e1d7e,_0x5ee911){if(intUtil[_0x1223('0x1e')](_0x5ee911)){return request({'uri':util[_0x1223('0x19')]('%s/api/v2/agents',_0x4e1d7e['remoteUri']),'qs':{'email':_0x5ee911}})[_0x1223('0x1d')](function(_0x2cd781){if(_0x2cd781[_0x1223('0x1f')]){logger[_0x1223('0xa')](_0x1223('0x20'));return _[_0x1223('0x21')](_0x2cd781,function(_0x377bf1){return _0x377bf1['contact']['email']===_0x5ee911;});}else{logger[_0x1223('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1223('0x19')](_0x1223('0x22'),_0x4e1d7e['remoteUri'])})['then'](function(_0x1a1e32){logger[_0x1223('0xa')](_0x1223('0x23'));return _0x1a1e32;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1223('0x19')](_0x1223('0x22'),_0x4e1d7e[_0x1223('0x1b')])})[_0x1223('0x1d')](function(_0x4752c9){logger[_0x1223('0xa')]('Admin\x20account\x20selected.');return _0x4752c9;});}}function getEndUser(_0x3256ab,_0x48f6b3,_0x31368f){logger['info'](_0x1223('0x24'),_0x31368f);return request({'uri':util[_0x1223('0x19')](_0x1223('0x25'),_0x3256ab['remoteUri']),'qs':{'phone':_0x31368f}})[_0x1223('0x1d')](function(_0x530b8b){if(_0x530b8b[_0x1223('0x1f')]){logger[_0x1223('0xa')](_0x1223('0x26'));return _[_0x1223('0x21')](_0x530b8b,{'phone':_0x31368f});}else{logger[_0x1223('0xa')](_0x1223('0x27'));return request({'uri':util['format'](_0x1223('0x25'),_0x3256ab[_0x1223('0x1b')]),'method':'POST','body':{'name':_0x48f6b3,'phone':_0x31368f}})['then'](function(_0x2ef08b){logger[_0x1223('0xa')]('Enduser\x20created.');return _0x2ef08b;});}});}function getAuth(_0x38ca34){return util[_0x1223('0x19')]('Basic\x20%s',new Buffer(_0x38ca34[_0x1223('0x28')]+':X')['toString']('base64'));}function request(_0x37d7d1){logger[_0x1223('0x29')]('[HTTP]',JSON[_0x1223('0x2a')](_0x37d7d1));return rp(_[_0x1223('0x2b')](_0x37d7d1,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x23d87d,_0x1872c2){var _0x364b47=[];if(_0x23d87d&&_0x23d87d[_0x1223('0x1f')]>0x0){_0x364b47=_['map'](_0x23d87d,_0x1872c2);}return _0x364b47;}function getCustomFields(_0x425af6,_0x13217d){var _0x75bb8f=[];var _0x44a5cf={'custom_fields':[]};if(_0x425af6[_0x1223('0x1f')]>0x0){_[_0x1223('0x2c')](_0x425af6,function(_0x2a355d){if(_[_0x1223('0x2d')]([_0x1223('0x2e'),'picklist'],_0x2a355d[_0x1223('0x2f')])&&_0x2a355d[_0x1223('0x30')]&&!_0x2a355d[_0x1223('0x31')]){_0x44a5cf[_0x2a355d[_0x1223('0x30')][_0x1223('0x32')]()]=_0x2a355d[_0x1223('0x33')][_0x1223('0x34')]();}else if(_[_0x1223('0x2d')]([_0x1223('0x2e'),_0x1223('0x35')],_0x2a355d[_0x1223('0x2f')])&&_0x2a355d[_0x1223('0x36')]&&_0x2a355d[_0x1223('0x31')]){_0x44a5cf[_0x1223('0x15')][_0x1223('0x37')]({'id':_0x2a355d['idField'],'value':_0x2a355d[_0x1223('0x33')][_0x1223('0x34')]()});}else if(_0x2a355d[_0x1223('0x2f')]===_0x1223('0x38')&&_0x2a355d[_0x1223('0x39')]&&_0x2a355d[_0x1223('0x36')]&&_0x2a355d[_0x1223('0x31')]){_0x13217d[_0x2a355d[_0x1223('0x39')]]&&_0x44a5cf[_0x1223('0x15')][_0x1223('0x37')]({'id':_0x2a355d[_0x1223('0x36')],'value':_0x13217d[_0x2a355d['variableName']][_0x1223('0x34')]()});}else if(_0x2a355d[_0x1223('0x2f')]===_0x1223('0x3a')&&_0x2a355d[_0x1223('0x3b')]&&_0x2a355d[_0x1223('0x3b')]['name']&&_0x2a355d[_0x1223('0x36')]&&_0x2a355d['customField']){_0x13217d[_0x2a355d[_0x1223('0x3b')][_0x1223('0x13')]['toLowerCase']()]&&_0x44a5cf['custom_fields'][_0x1223('0x37')]({'id':_0x2a355d[_0x1223('0x36')],'value':_0x13217d[_0x2a355d[_0x1223('0x3b')][_0x1223('0x13')]['toLowerCase']()][_0x1223('0x34')]()});}});}return _0x44a5cf;}exports[_0x1223('0x3c')]=function(_0x5eb82e,_0xb74df8,_0x752e78,_0x163167,_0x3fbf9c,_0x296595){var _0xa48f59,_0x261d27;_0x296595[_0x1223('0x1b')]=intUtil[_0x1223('0x3d')](_0x296595[_0x1223('0x1b')]);_0x296595[_0x1223('0x3e')]=intUtil[_0x1223('0x3d')](_0x296595['serverUrl']);if(_0x3fbf9c&&_0x3fbf9c[_0x1223('0x3f')]){logger['info'](_0x1223('0x40'),'Recording\x20is\x20enabled!');_0xb74df8[_0x1223('0x41')]=util[_0x1223('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x296595[_0x1223('0x3e')],_0xb74df8[_0x1223('0x42')],md5(_0xb74df8['uniqueid']));}else{_0xb74df8[_0x1223('0x41')]='';}headers[_0x1223('0x43')]=getAuth(_0x296595);return getUser(_0x296595,_0x163167[_0x1223('0x44')])[_0x1223('0x1d')](function(_0x49c0d3){_0xa48f59=_0x49c0d3;logger[_0x1223('0xa')](_0x1223('0x45'),_0xa48f59['id']);return getEndUser(_0x296595,_0xb74df8[_0x1223('0xd')],_0xb74df8[_0x1223('0xe')]);})[_0x1223('0x1d')](function(_0x40c55f){_0x261d27=_0x40c55f;logger['info'](_0x1223('0x46'),_0x261d27['id']);return getTicket(_0x296595,_0xa48f59,_0x261d27,_0x752e78,_0xb74df8);})[_0x1223('0x1d')](function(_0x5b1f9a){if(_0x5b1f9a&&_0x5b1f9a['id']){logger[_0x1223('0xa')](_0x1223('0x47'));logger[_0x1223('0xa')]('The\x20Ticket\x20ID\x20is:',_0x5b1f9a['id']);logger[_0x1223('0xa')](_0x1223('0x40'),_0x1223('0x48'));emit(util['format']('user:%s',_0x163167[_0x1223('0x13')]),_0x1223('0x49'),{'uri':util['format'](_0x1223('0x4a'),_0x296595[_0x1223('0x1b')],_0x5b1f9a['id'])});}})[_0x1223('0x4b')](function(_0x2b8838){logger[_0x1223('0x4c')](_0x1223('0x40'),JSON[_0x1223('0x2a')](_0x2b8838));});};exports[_0x1223('0x4d')]=function(_0x570935,_0x5c3de7,_0x1ada0e,_0x4a21f6,_0x2aa575,_0xb1e1a1,_0x338f7d){var _0x30473d,_0x32b846;_0xb1e1a1['remoteUri']=intUtil[_0x1223('0x3d')](_0xb1e1a1['remoteUri']);_0xb1e1a1[_0x1223('0x3e')]=intUtil[_0x1223('0x3d')](_0xb1e1a1[_0x1223('0x3e')]);if(_0x338f7d&&_0x338f7d[_0x1223('0x4e')]&&_0x338f7d[_0x1223('0x4e')]!==_0x1223('0x4f')){logger[_0x1223('0xa')](_0x1223('0x50'),_0x1223('0x51'));_0x5c3de7['recordingURL']=util['format'](_0x1223('0x52'),_0xb1e1a1[_0x1223('0x3e')],_0x5c3de7[_0x1223('0x42')],md5(_0x5c3de7[_0x1223('0x42')]));}headers[_0x1223('0x43')]=getAuth(_0xb1e1a1);return getUser(_0xb1e1a1,_0x4a21f6[_0x1223('0x44')])['then'](function(_0x36dd1e){_0x30473d=_0x36dd1e;logger[_0x1223('0xa')](_0x1223('0x45'),_0x30473d['id']);return getEndUser(_0xb1e1a1,_0x5c3de7[_0x1223('0x53')],_0x5c3de7[_0x1223('0x54')]);})[_0x1223('0x1d')](function(_0x3901a1){_0x32b846=_0x3901a1;logger[_0x1223('0xa')](_0x1223('0x46'),_0x32b846['id']);return getTicket(_0xb1e1a1,_0x30473d,_0x32b846,_0x1ada0e,_0x5c3de7);})['then'](function(_0x2c6da4){if(_0x2c6da4&&_0x2c6da4['id']){logger['info'](_0x1223('0x47'));logger[_0x1223('0xa')](_0x1223('0x55'),_0x2c6da4['id']);logger['info'](_0x1223('0x50'),_0x1223('0x48'));emit(util[_0x1223('0x19')](_0x1223('0x56'),_0x4a21f6['name']),_0x1223('0x49'),{'uri':util[_0x1223('0x19')](_0x1223('0x4a'),_0xb1e1a1[_0x1223('0x1b')],_0x2c6da4['id'])});}})[_0x1223('0x4b')](function(_0x24f57f){logger[_0x1223('0x4c')](_0x1223('0x50'),JSON[_0x1223('0x2a')](_0x24f57f));});};exports[_0x1223('0x57')]=function(_0x54f6b3,_0x1b5ad1,_0x5b6e49,_0x2ae237,_0x2ce301,_0x16d55f){var _0x4d10af,_0x2e43ac;_0x16d55f[_0x1223('0x1b')]=intUtil[_0x1223('0x3d')](_0x16d55f[_0x1223('0x1b')]);_0x16d55f[_0x1223('0x3e')]=intUtil['stripTrailingSlash'](_0x16d55f['serverUrl']);if(_0x2ce301&&_0x2ce301[_0x1223('0x3f')]){logger[_0x1223('0xa')]('['+_0x1b5ad1[_0x1223('0x58')][_0x1223('0x59')]()+']',_0x1223('0x51'));_0x1b5ad1['recordingURL']=util[_0x1223('0x19')](_0x1223('0x52'),_0x16d55f[_0x1223('0x3e')],_0x1b5ad1[_0x1223('0x42')],md5(_0x1b5ad1['uniqueid']));}else{_0x1b5ad1[_0x1223('0x41')]='';}headers[_0x1223('0x43')]=getAuth(_0x16d55f);return getUser(_0x16d55f,'')[_0x1223('0x1d')](function(_0x540eff){_0x4d10af=_0x540eff;logger['info'](_0x1223('0x45'),_0x4d10af['id']);return getEndUser(_0x16d55f,_0x1b5ad1[_0x1223('0xd')],_0x1b5ad1[_0x1223('0xe')]);})[_0x1223('0x1d')](function(_0x47b306){_0x2e43ac=_0x47b306;logger['info'](_0x1223('0x46'),_0x2e43ac['id']);return getTicket(_0x16d55f,_0x4d10af,_0x2e43ac,_0x5b6e49,_0x1b5ad1);})[_0x1223('0x1d')](function(_0x378469){if(_0x378469){logger[_0x1223('0xa')](_0x1223('0x47'));logger['info'](_0x1223('0x55'),_0x378469['id']);}})[_0x1223('0x4b')](function(_0x229ec1){logger[_0x1223('0x4c')]('['+_0x1b5ad1['lastevent'][_0x1223('0x59')]()+']',JSON[_0x1223('0x2a')](_0x229ec1));});};