Built motion from commit 25580385.|2.6.2
[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 _0x2b7a=['Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','trigger:browser:url','%s/helpdesk/tickets/%d','error','[QUEUE]','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','unmanaged','monitor_format','toUpperCase','lastevent','request-promise','md5','util','./util','../../../../config/environment','freshdesk','redis','defaults','application/json','emit','info','Creating\x20new\x20ticket...','merge','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','mapValues','keyBy','custom_fields','value','format','remoteUri','validateEmail','then','length','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','POST','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','forEach','includes','type','nameField','content','picklist','idField','customField','push','variable','variableName','customVariable','Variable','toLowerCase','stripTrailingSlash','serverUrl'];(function(_0x2b64ab,_0x37f9de){var _0xd292c8=function(_0x51ca85){while(--_0x51ca85){_0x2b64ab['push'](_0x2b64ab['shift']());}};_0xd292c8(++_0x37f9de);}(_0x2b7a,0x70));var _0xa2b7=function(_0x45f15d,_0x53bece){_0x45f15d=_0x45f15d-0x0;var _0x143267=_0x2b7a[_0x45f15d];return _0x143267;};'use strict';var _=require('lodash');var rp=require(_0xa2b7('0x0'));var md5=require(_0xa2b7('0x1'));var util=require(_0xa2b7('0x2'));var Redis=require('ioredis');var intUtil=require(_0xa2b7('0x3'));var config=require(_0xa2b7('0x4'));var logger=require('../../../../config/logger')(_0xa2b7('0x5'));config[_0xa2b7('0x6')]=_[_0xa2b7('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa2b7('0x6')]));var headers={'Content-Type':_0xa2b7('0x8'),'Accept':_0xa2b7('0x8')};function emit(_0x1cb79c,_0x286dcc,_0x309b3e){io['to'](_0x1cb79c)[_0xa2b7('0x9')](_0x286dcc,_0x309b3e);}function getTicket(_0x50894f,_0x46e921,_0x45bffc,_0x5cc18f,_0x1782ad){logger[_0xa2b7('0xa')](_0xa2b7('0xb'));var _0x595832=_[_0xa2b7('0xc')]({'responder_id':_0x46e921['id'],'requester_id':_0x45bffc['id'],'name':util['format']('Caller\x20-\x20%s',_0x1782ad[_0xa2b7('0xd')]),'phone':_0x1782ad[_0xa2b7('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xa2b7('0xf')](_0x5cc18f[_0xa2b7('0x10')],_0x1782ad,'\x20'),'description':intUtil['getString'](_0x5cc18f[_0xa2b7('0x11')],_0x1782ad,_0xa2b7('0x12')),'tags':getTags(_0x5cc18f[_0xa2b7('0x13')],_0xa2b7('0x14'))},getCustomFields(_0x5cc18f[_0xa2b7('0x15')],_0x1782ad));_0x595832['custom_fields']=_[_0xa2b7('0x16')](_[_0xa2b7('0x17')](_0x595832[_0xa2b7('0x18')],'id'),_0xa2b7('0x19'));return request({'uri':util[_0xa2b7('0x1a')]('%s/api/v2/tickets',_0x50894f[_0xa2b7('0x1b')]),'method':'POST','body':_0x595832})['then'](function(_0x5dc2bc){logger['info']('Ticket\x20created!');return _0x5dc2bc;});}function getUser(_0x3f61c0,_0x4bd2d3){if(intUtil[_0xa2b7('0x1c')](_0x4bd2d3)){return request({'uri':util[_0xa2b7('0x1a')]('%s/api/v2/agents',_0x3f61c0[_0xa2b7('0x1b')]),'qs':{'email':_0x4bd2d3}})[_0xa2b7('0x1d')](function(_0x368b9a){if(_0x368b9a[_0xa2b7('0x1e')]){logger[_0xa2b7('0xa')](_0xa2b7('0x1f'));return _[_0xa2b7('0x20')](_0x368b9a,function(_0x352d23){return _0x352d23[_0xa2b7('0x21')][_0xa2b7('0x22')]===_0x4bd2d3;});}else{logger[_0xa2b7('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x23'),_0x3f61c0['remoteUri'])})[_0xa2b7('0x1d')](function(_0x774199){logger['info'](_0xa2b7('0x24'));return _0x774199;});}});}else{logger['info'](_0xa2b7('0x25'));return request({'uri':util[_0xa2b7('0x1a')]('%s/api/v2/agents/me',_0x3f61c0[_0xa2b7('0x1b')])})[_0xa2b7('0x1d')](function(_0x2b4e82){logger[_0xa2b7('0xa')](_0xa2b7('0x24'));return _0x2b4e82;});}}function getEndUser(_0x517698,_0x576ca2,_0x15afee){logger[_0xa2b7('0xa')](_0xa2b7('0x26'),_0x15afee);return request({'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x27'),_0x517698[_0xa2b7('0x1b')]),'qs':{'phone':_0x15afee}})[_0xa2b7('0x1d')](function(_0xbaf3fe){if(_0xbaf3fe[_0xa2b7('0x1e')]){logger[_0xa2b7('0xa')](_0xa2b7('0x28'));return _[_0xa2b7('0x20')](_0xbaf3fe,{'phone':_0x15afee});}else{logger[_0xa2b7('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x27'),_0x517698[_0xa2b7('0x1b')]),'method':_0xa2b7('0x29'),'body':{'name':_0x576ca2,'phone':_0x15afee}})[_0xa2b7('0x1d')](function(_0x52ce73){logger[_0xa2b7('0xa')](_0xa2b7('0x2a'));return _0x52ce73;});}});}function getAuth(_0x1dff34){return util[_0xa2b7('0x1a')](_0xa2b7('0x2b'),new Buffer(_0x1dff34['apiKey']+':X')[_0xa2b7('0x2c')](_0xa2b7('0x2d')));}function request(_0x5aa5bc){logger[_0xa2b7('0x2e')](_0xa2b7('0x2f'),JSON[_0xa2b7('0x30')](_0x5aa5bc));return rp(_[_0xa2b7('0x7')](_0x5aa5bc,{'method':_0xa2b7('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x47f4a8,_0x516778){var _0x35c544=[];if(_0x47f4a8&&_0x47f4a8[_0xa2b7('0x1e')]>0x0){_0x35c544=_['map'](_0x47f4a8,_0x516778);}return _0x35c544;}function getCustomFields(_0x311b6b,_0x213248){var _0x560fe4=[];var _0x1d80e8={'custom_fields':[]};if(_0x311b6b[_0xa2b7('0x1e')]>0x0){_[_0xa2b7('0x32')](_0x311b6b,function(_0x2c54e3){if(_[_0xa2b7('0x33')](['string','picklist'],_0x2c54e3[_0xa2b7('0x34')])&&_0x2c54e3[_0xa2b7('0x35')]&&!_0x2c54e3['customField']){_0x1d80e8[_0x2c54e3[_0xa2b7('0x35')]['toLowerCase']()]=_0x2c54e3[_0xa2b7('0x36')]['toString']();}else if(_[_0xa2b7('0x33')](['string',_0xa2b7('0x37')],_0x2c54e3[_0xa2b7('0x34')])&&_0x2c54e3[_0xa2b7('0x38')]&&_0x2c54e3[_0xa2b7('0x39')]){_0x1d80e8[_0xa2b7('0x18')][_0xa2b7('0x3a')]({'id':_0x2c54e3['idField'],'value':_0x2c54e3[_0xa2b7('0x36')]['toString']()});}else if(_0x2c54e3[_0xa2b7('0x34')]===_0xa2b7('0x3b')&&_0x2c54e3[_0xa2b7('0x3c')]&&_0x2c54e3['idField']&&_0x2c54e3[_0xa2b7('0x39')]){_0x213248[_0x2c54e3[_0xa2b7('0x3c')]]&&_0x1d80e8['custom_fields']['push']({'id':_0x2c54e3[_0xa2b7('0x38')],'value':_0x213248[_0x2c54e3[_0xa2b7('0x3c')]][_0xa2b7('0x2c')]()});}else if(_0x2c54e3['type']===_0xa2b7('0x3d')&&_0x2c54e3[_0xa2b7('0x3e')]&&_0x2c54e3[_0xa2b7('0x3e')][_0xa2b7('0x14')]&&_0x2c54e3['idField']&&_0x2c54e3[_0xa2b7('0x39')]){_0x213248[_0x2c54e3[_0xa2b7('0x3e')]['name'][_0xa2b7('0x3f')]()]&&_0x1d80e8[_0xa2b7('0x18')][_0xa2b7('0x3a')]({'id':_0x2c54e3['idField'],'value':_0x213248[_0x2c54e3[_0xa2b7('0x3e')][_0xa2b7('0x14')][_0xa2b7('0x3f')]()][_0xa2b7('0x2c')]()});}});}return _0x1d80e8;}exports['queue']=function(_0x2abb0f,_0xfd6da4,_0x1c6fe3,_0x27409b,_0x6bb333,_0xd9047a){var _0x395ed8,_0x3d8f3a;_0xd9047a[_0xa2b7('0x1b')]=intUtil[_0xa2b7('0x40')](_0xd9047a[_0xa2b7('0x1b')]);_0xd9047a[_0xa2b7('0x41')]=intUtil[_0xa2b7('0x40')](_0xd9047a[_0xa2b7('0x41')]);if(_0x6bb333&&_0x6bb333['monitor_format']){logger[_0xa2b7('0xa')]('[QUEUE]',_0xa2b7('0x42'));_0xfd6da4[_0xa2b7('0x43')]=util[_0xa2b7('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xd9047a[_0xa2b7('0x41')],_0xfd6da4[_0xa2b7('0x44')],md5(_0xfd6da4['uniqueid']));}else{_0xfd6da4[_0xa2b7('0x43')]='';}headers[_0xa2b7('0x45')]=getAuth(_0xd9047a);return getUser(_0xd9047a,_0x27409b[_0xa2b7('0x22')])[_0xa2b7('0x1d')](function(_0x48a899){_0x395ed8=_0x48a899;logger[_0xa2b7('0xa')]('The\x20User\x20ID\x20is:',_0x395ed8['id']);return getEndUser(_0xd9047a,_0xfd6da4['calleridname'],_0xfd6da4[_0xa2b7('0xe')]);})['then'](function(_0x4ad040){_0x3d8f3a=_0x4ad040;logger[_0xa2b7('0xa')](_0xa2b7('0x46'),_0x3d8f3a['id']);return getTicket(_0xd9047a,_0x395ed8,_0x3d8f3a,_0x1c6fe3,_0xfd6da4);})['then'](function(_0x5918ce){if(_0x5918ce&&_0x5918ce['id']){logger['info'](_0xa2b7('0x47'));logger[_0xa2b7('0xa')]('The\x20Ticket\x20ID\x20is:',_0x5918ce['id']);logger[_0xa2b7('0xa')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa2b7('0x1a')]('user:%s',_0x27409b[_0xa2b7('0x14')]),_0xa2b7('0x48'),{'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x49'),_0xd9047a[_0xa2b7('0x1b')],_0x5918ce['id'])});}})['catch'](function(_0x4284e1){logger[_0xa2b7('0x4a')](_0xa2b7('0x4b'),JSON[_0xa2b7('0x30')](_0x4284e1));});};exports['outbound']=function(_0x307c3c,_0x1068c7,_0x4abcaa,_0x21c91b,_0x5f0834,_0x69825e,_0x2856cb){var _0x232568,_0x1dc792;_0x69825e[_0xa2b7('0x1b')]=intUtil[_0xa2b7('0x40')](_0x69825e[_0xa2b7('0x1b')]);_0x69825e[_0xa2b7('0x41')]=intUtil['stripTrailingSlash'](_0x69825e[_0xa2b7('0x41')]);if(_0x2856cb&&_0x2856cb['recordingFormat']&&_0x2856cb[_0xa2b7('0x4c')]!=='none'){logger[_0xa2b7('0xa')](_0xa2b7('0x4d'),_0xa2b7('0x42'));_0x1068c7[_0xa2b7('0x43')]=util[_0xa2b7('0x1a')](_0xa2b7('0x4e'),_0x69825e[_0xa2b7('0x41')],_0x1068c7[_0xa2b7('0x44')],md5(_0x1068c7['uniqueid']));}headers[_0xa2b7('0x45')]=getAuth(_0x69825e);return getUser(_0x69825e,_0x21c91b['email'])['then'](function(_0x528411){_0x232568=_0x528411;logger[_0xa2b7('0xa')](_0xa2b7('0x4f'),_0x232568['id']);return getEndUser(_0x69825e,_0x1068c7[_0xa2b7('0x50')],_0x1068c7[_0xa2b7('0x51')]);})['then'](function(_0x208f0e){_0x1dc792=_0x208f0e;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1dc792['id']);return getTicket(_0x69825e,_0x232568,_0x1dc792,_0x4abcaa,_0x1068c7);})['then'](function(_0xc4be3d){if(_0xc4be3d&&_0xc4be3d['id']){logger['info'](_0xa2b7('0x47'));logger[_0xa2b7('0xa')](_0xa2b7('0x52'),_0xc4be3d['id']);logger['info'](_0xa2b7('0x4d'),_0xa2b7('0x53'));emit(util[_0xa2b7('0x1a')]('user:%s',_0x21c91b[_0xa2b7('0x14')]),_0xa2b7('0x48'),{'uri':util[_0xa2b7('0x1a')]('%s/helpdesk/tickets/%d',_0x69825e['remoteUri'],_0xc4be3d['id'])});}})[_0xa2b7('0x54')](function(_0x110dfa){logger[_0xa2b7('0x4a')](_0xa2b7('0x4d'),JSON['stringify'](_0x110dfa));});};exports[_0xa2b7('0x55')]=function(_0x1fe7b1,_0x380129,_0x418320,_0x40989e,_0xf94950,_0x3bc1be){var _0x226cf7,_0x14f92e;_0x3bc1be[_0xa2b7('0x1b')]=intUtil[_0xa2b7('0x40')](_0x3bc1be[_0xa2b7('0x1b')]);_0x3bc1be[_0xa2b7('0x41')]=intUtil[_0xa2b7('0x40')](_0x3bc1be['serverUrl']);if(_0xf94950&&_0xf94950[_0xa2b7('0x56')]){logger['info']('['+_0x380129['lastevent'][_0xa2b7('0x57')]()+']',_0xa2b7('0x42'));_0x380129[_0xa2b7('0x43')]=util[_0xa2b7('0x1a')](_0xa2b7('0x4e'),_0x3bc1be[_0xa2b7('0x41')],_0x380129[_0xa2b7('0x44')],md5(_0x380129['uniqueid']));}else{_0x380129['recordingURL']='';}headers[_0xa2b7('0x45')]=getAuth(_0x3bc1be);return getUser(_0x3bc1be,'')[_0xa2b7('0x1d')](function(_0x26fa41){_0x226cf7=_0x26fa41;logger[_0xa2b7('0xa')](_0xa2b7('0x4f'),_0x226cf7['id']);return getEndUser(_0x3bc1be,_0x380129['calleridname'],_0x380129['calleridnum']);})[_0xa2b7('0x1d')](function(_0x52cf17){_0x14f92e=_0x52cf17;logger[_0xa2b7('0xa')](_0xa2b7('0x46'),_0x14f92e['id']);return getTicket(_0x3bc1be,_0x226cf7,_0x14f92e,_0x418320,_0x380129);})[_0xa2b7('0x1d')](function(_0x5b32bd){if(_0x5b32bd){logger[_0xa2b7('0xa')](_0xa2b7('0x47'));logger[_0xa2b7('0xa')](_0xa2b7('0x52'),_0x5b32bd['id']);}})[_0xa2b7('0x54')](function(_0x2ba4f9){logger[_0xa2b7('0x4a')]('['+_0x380129[_0xa2b7('0x58')][_0xa2b7('0x57')]()+']',JSON['stringify'](_0x2ba4f9));});};