Built motion from commit e0fa946e.|2.6.5
[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 _0x5d0d=['mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','%s/api/v2/agents','find','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','GET','map','string','type','nameField','customField','toLowerCase','content','picklist','idField','variableName','push','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','stringify','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','unmanaged','lastevent','toUpperCase','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','defaults','localhost','socket.io-emitter','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','<br>','name','Fields','custom_fields'];(function(_0x307e50,_0x35f0c2){var _0x352074=function(_0x36db65){while(--_0x36db65){_0x307e50['push'](_0x307e50['shift']());}};_0x352074(++_0x35f0c2);}(_0x5d0d,0x1b7));var _0xd5d0=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0x5d0d[_0x1b4b23];return _0x2a325b;};'use strict';var _=require(_0xd5d0('0x0'));var rp=require('request-promise');var md5=require(_0xd5d0('0x1'));var util=require(_0xd5d0('0x2'));var Redis=require(_0xd5d0('0x3'));var intUtil=require(_0xd5d0('0x4'));var config=require(_0xd5d0('0x5'));var logger=require(_0xd5d0('0x6'))(_0xd5d0('0x7'));config['redis']=_[_0xd5d0('0x8')](config['redis'],{'host':_0xd5d0('0x9'),'port':0x18eb});var io=require(_0xd5d0('0xa'))(new Redis(config[_0xd5d0('0xb')]));var headers={'Content-Type':_0xd5d0('0xc'),'Accept':'application/json'};function emit(_0x5223e2,_0x23e1d8,_0x24dcf1){io['to'](_0x5223e2)[_0xd5d0('0xd')](_0x23e1d8,_0x24dcf1);}function getTicket(_0x29ebc4,_0x2295f3,_0x3fffe9,_0x2dcfad,_0x3e2cd6){logger[_0xd5d0('0xe')](_0xd5d0('0xf'));var _0x13e580=_[_0xd5d0('0x10')]({'responder_id':_0x2295f3['id'],'requester_id':_0x3fffe9['id'],'name':util[_0xd5d0('0x11')](_0xd5d0('0x12'),_0x3e2cd6[_0xd5d0('0x13')]),'phone':_0x3e2cd6['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd5d0('0x14')](_0x2dcfad[_0xd5d0('0x15')],_0x3e2cd6,'\x20'),'description':intUtil[_0xd5d0('0x14')](_0x2dcfad['Descriptions'],_0x3e2cd6,_0xd5d0('0x16')),'tags':getTags(_0x2dcfad['Tags'],_0xd5d0('0x17'))},getCustomFields(_0x2dcfad[_0xd5d0('0x18')],_0x3e2cd6));_0x13e580[_0xd5d0('0x19')]=_[_0xd5d0('0x1a')](_[_0xd5d0('0x1b')](_0x13e580[_0xd5d0('0x19')],'id'),'value');return request({'uri':util[_0xd5d0('0x11')](_0xd5d0('0x1c'),_0x29ebc4[_0xd5d0('0x1d')]),'method':_0xd5d0('0x1e'),'body':_0x13e580})[_0xd5d0('0x1f')](function(_0x4d0cff){logger['info']('Ticket\x20created!');return _0x4d0cff;});}function getUser(_0x22e014,_0x329b39){if(intUtil['validateEmail'](_0x329b39)){return request({'uri':util[_0xd5d0('0x11')](_0xd5d0('0x20'),_0x22e014[_0xd5d0('0x1d')]),'qs':{'email':_0x329b39}})[_0xd5d0('0x1f')](function(_0x3b4e6e){if(_0x3b4e6e['length']){logger[_0xd5d0('0xe')]('Agent\x20found!');return _[_0xd5d0('0x21')](_0x3b4e6e,function(_0x5695d8){return _0x5695d8[_0xd5d0('0x22')][_0xd5d0('0x23')]===_0x329b39;});}else{logger[_0xd5d0('0xe')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xd5d0('0x11')](_0xd5d0('0x24'),_0x22e014[_0xd5d0('0x1d')])})[_0xd5d0('0x1f')](function(_0x2e6003){logger[_0xd5d0('0xe')](_0xd5d0('0x25'));return _0x2e6003;});}});}else{logger[_0xd5d0('0xe')](_0xd5d0('0x26'));return request({'uri':util[_0xd5d0('0x11')](_0xd5d0('0x24'),_0x22e014[_0xd5d0('0x1d')])})[_0xd5d0('0x1f')](function(_0x10e716){logger[_0xd5d0('0xe')](_0xd5d0('0x25'));return _0x10e716;});}}function getEndUser(_0x372abe,_0x5b0c4e,_0x51b52a){logger[_0xd5d0('0xe')]('Searching\x20enduser\x20with\x20phone',_0x51b52a);return request({'uri':util['format'](_0xd5d0('0x27'),_0x372abe[_0xd5d0('0x1d')]),'qs':{'phone':_0x51b52a}})['then'](function(_0xfbf71c){if(_0xfbf71c[_0xd5d0('0x28')]){logger[_0xd5d0('0xe')](_0xd5d0('0x29'));return _[_0xd5d0('0x21')](_0xfbf71c,{'phone':_0x51b52a});}else{logger[_0xd5d0('0xe')](_0xd5d0('0x2a'));return request({'uri':util[_0xd5d0('0x11')](_0xd5d0('0x27'),_0x372abe[_0xd5d0('0x1d')]),'method':_0xd5d0('0x1e'),'body':{'name':_0x5b0c4e,'phone':_0x51b52a}})[_0xd5d0('0x1f')](function(_0x328b4e){logger[_0xd5d0('0xe')](_0xd5d0('0x2b'));return _0x328b4e;});}});}function getAuth(_0x461f0a){return util[_0xd5d0('0x11')](_0xd5d0('0x2c'),new Buffer(_0x461f0a[_0xd5d0('0x2d')]+':X')[_0xd5d0('0x2e')](_0xd5d0('0x2f')));}function request(_0x71dca7){logger[_0xd5d0('0x30')]('[HTTP]',JSON['stringify'](_0x71dca7));return rp(_[_0xd5d0('0x8')](_0x71dca7,{'method':_0xd5d0('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x2b11de,_0x5cc533){var _0x1baa56=[];if(_0x2b11de&&_0x2b11de['length']>0x0){_0x1baa56=_[_0xd5d0('0x32')](_0x2b11de,_0x5cc533);}return _0x1baa56;}function getCustomFields(_0x268d91,_0xb2eefd){var _0x461e0a=[];var _0x131b7a={'custom_fields':[]};if(_0x268d91['length']>0x0){_['forEach'](_0x268d91,function(_0x178886){if(_['includes']([_0xd5d0('0x33'),'picklist'],_0x178886[_0xd5d0('0x34')])&&_0x178886[_0xd5d0('0x35')]&&!_0x178886[_0xd5d0('0x36')]){_0x131b7a[_0x178886[_0xd5d0('0x35')][_0xd5d0('0x37')]()]=_0x178886[_0xd5d0('0x38')][_0xd5d0('0x2e')]();}else if(_['includes']([_0xd5d0('0x33'),_0xd5d0('0x39')],_0x178886[_0xd5d0('0x34')])&&_0x178886[_0xd5d0('0x3a')]&&_0x178886[_0xd5d0('0x36')]){_0x131b7a['custom_fields']['push']({'id':_0x178886[_0xd5d0('0x3a')],'value':_0x178886[_0xd5d0('0x38')]['toString']()});}else if(_0x178886['type']==='variable'&&_0x178886[_0xd5d0('0x3b')]&&_0x178886[_0xd5d0('0x3a')]&&_0x178886[_0xd5d0('0x36')]){_0xb2eefd[_0x178886[_0xd5d0('0x3b')]]&&_0x131b7a[_0xd5d0('0x19')][_0xd5d0('0x3c')]({'id':_0x178886[_0xd5d0('0x3a')],'value':_0xb2eefd[_0x178886[_0xd5d0('0x3b')]]['toString']()});}else if(_0x178886[_0xd5d0('0x34')]==='customVariable'&&_0x178886[_0xd5d0('0x3d')]&&_0x178886[_0xd5d0('0x3d')][_0xd5d0('0x17')]&&_0x178886[_0xd5d0('0x3a')]&&_0x178886[_0xd5d0('0x36')]){_0xb2eefd[_0x178886[_0xd5d0('0x3d')][_0xd5d0('0x17')]['toLowerCase']()]&&_0x131b7a[_0xd5d0('0x19')][_0xd5d0('0x3c')]({'id':_0x178886['idField'],'value':_0xb2eefd[_0x178886[_0xd5d0('0x3d')]['name'][_0xd5d0('0x37')]()][_0xd5d0('0x2e')]()});}});}return _0x131b7a;}exports[_0xd5d0('0x3e')]=function(_0x111380,_0x23d78c,_0x2b2708,_0x4e795c,_0x5554f0,_0x3fc7d3){var _0x18c20e,_0x479e45;_0x3fc7d3['remoteUri']=intUtil[_0xd5d0('0x3f')](_0x3fc7d3['remoteUri']);_0x3fc7d3[_0xd5d0('0x40')]=intUtil[_0xd5d0('0x3f')](_0x3fc7d3['serverUrl']);if(_0x5554f0&&_0x5554f0[_0xd5d0('0x41')]){logger[_0xd5d0('0xe')](_0xd5d0('0x42'),'Recording\x20is\x20enabled!');_0x23d78c[_0xd5d0('0x43')]=util[_0xd5d0('0x11')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3fc7d3['serverUrl'],_0x23d78c[_0xd5d0('0x44')],md5(_0x23d78c[_0xd5d0('0x44')]));}else{_0x23d78c[_0xd5d0('0x43')]='';}headers[_0xd5d0('0x45')]=getAuth(_0x3fc7d3);return getUser(_0x3fc7d3,_0x4e795c[_0xd5d0('0x23')])[_0xd5d0('0x1f')](function(_0x1682c4){_0x18c20e=_0x1682c4;logger[_0xd5d0('0xe')](_0xd5d0('0x46'),_0x18c20e['id']);return getEndUser(_0x3fc7d3,_0x23d78c[_0xd5d0('0x13')],_0x23d78c[_0xd5d0('0x47')]);})[_0xd5d0('0x1f')](function(_0x1eb7e9){_0x479e45=_0x1eb7e9;logger[_0xd5d0('0xe')](_0xd5d0('0x48'),_0x479e45['id']);return getTicket(_0x3fc7d3,_0x18c20e,_0x479e45,_0x2b2708,_0x23d78c);})['then'](function(_0x5d2166){if(_0x5d2166&&_0x5d2166['id']){logger[_0xd5d0('0xe')](_0xd5d0('0x49'));logger[_0xd5d0('0xe')](_0xd5d0('0x4a'),_0x5d2166['id']);logger['info'](_0xd5d0('0x42'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd5d0('0x11')](_0xd5d0('0x4b'),_0x4e795c[_0xd5d0('0x17')]),_0xd5d0('0x4c'),{'uri':util[_0xd5d0('0x11')](_0xd5d0('0x4d'),_0x3fc7d3['remoteUri'],_0x5d2166['id'])});}})['catch'](function(_0x2fbf6f){logger[_0xd5d0('0x4e')]('[QUEUE]',JSON[_0xd5d0('0x4f')](_0x2fbf6f));});};exports[_0xd5d0('0x50')]=function(_0x3234a7,_0x2a6082,_0x123ffb,_0x182a64,_0xabcdc3,_0x1263be,_0x400080){var _0x5f3ec8,_0x3af14c;_0x1263be[_0xd5d0('0x1d')]=intUtil[_0xd5d0('0x3f')](_0x1263be[_0xd5d0('0x1d')]);_0x1263be['serverUrl']=intUtil[_0xd5d0('0x3f')](_0x1263be[_0xd5d0('0x40')]);if(_0x400080&&_0x400080[_0xd5d0('0x51')]&&_0x400080['recordingFormat']!==_0xd5d0('0x52')){logger[_0xd5d0('0xe')](_0xd5d0('0x53'),_0xd5d0('0x54'));_0x2a6082[_0xd5d0('0x43')]=util[_0xd5d0('0x11')](_0xd5d0('0x55'),_0x1263be[_0xd5d0('0x40')],_0x2a6082[_0xd5d0('0x44')],md5(_0x2a6082[_0xd5d0('0x44')]));}headers[_0xd5d0('0x45')]=getAuth(_0x1263be);return getUser(_0x1263be,_0x182a64[_0xd5d0('0x23')])['then'](function(_0x5d8926){_0x5f3ec8=_0x5d8926;logger[_0xd5d0('0xe')](_0xd5d0('0x46'),_0x5f3ec8['id']);return getEndUser(_0x1263be,_0x2a6082[_0xd5d0('0x56')],_0x2a6082[_0xd5d0('0x57')]);})[_0xd5d0('0x1f')](function(_0x50921e){_0x3af14c=_0x50921e;logger['info'](_0xd5d0('0x48'),_0x3af14c['id']);return getTicket(_0x1263be,_0x5f3ec8,_0x3af14c,_0x123ffb,_0x2a6082);})[_0xd5d0('0x1f')](function(_0x18b15d){if(_0x18b15d&&_0x18b15d['id']){logger[_0xd5d0('0xe')]('Ticket\x20created!');logger['info'](_0xd5d0('0x4a'),_0x18b15d['id']);logger[_0xd5d0('0xe')]('[OUTBOUND]',_0xd5d0('0x58'));emit(util[_0xd5d0('0x11')]('user:%s',_0x182a64['name']),_0xd5d0('0x4c'),{'uri':util[_0xd5d0('0x11')](_0xd5d0('0x4d'),_0x1263be[_0xd5d0('0x1d')],_0x18b15d['id'])});}})[_0xd5d0('0x59')](function(_0x3e4563){logger[_0xd5d0('0x4e')](_0xd5d0('0x53'),JSON[_0xd5d0('0x4f')](_0x3e4563));});};exports[_0xd5d0('0x5a')]=function(_0x34ae94,_0x26d644,_0xb3cb82,_0x59df7f,_0x1e91a6,_0x524e28){var _0x10e5b1,_0x162e75;_0x524e28['remoteUri']=intUtil[_0xd5d0('0x3f')](_0x524e28[_0xd5d0('0x1d')]);_0x524e28[_0xd5d0('0x40')]=intUtil[_0xd5d0('0x3f')](_0x524e28[_0xd5d0('0x40')]);if(_0x1e91a6&&_0x1e91a6[_0xd5d0('0x41')]){logger[_0xd5d0('0xe')]('['+_0x26d644[_0xd5d0('0x5b')][_0xd5d0('0x5c')]()+']',_0xd5d0('0x54'));_0x26d644['recordingURL']=util[_0xd5d0('0x11')](_0xd5d0('0x55'),_0x524e28[_0xd5d0('0x40')],_0x26d644[_0xd5d0('0x44')],md5(_0x26d644['uniqueid']));}else{_0x26d644[_0xd5d0('0x43')]='';}headers[_0xd5d0('0x45')]=getAuth(_0x524e28);return getUser(_0x524e28,'')[_0xd5d0('0x1f')](function(_0x2eec77){_0x10e5b1=_0x2eec77;logger[_0xd5d0('0xe')]('The\x20User\x20ID\x20is:',_0x10e5b1['id']);return getEndUser(_0x524e28,_0x26d644[_0xd5d0('0x13')],_0x26d644['calleridnum']);})['then'](function(_0x1481a1){_0x162e75=_0x1481a1;logger[_0xd5d0('0xe')](_0xd5d0('0x48'),_0x162e75['id']);return getTicket(_0x524e28,_0x10e5b1,_0x162e75,_0xb3cb82,_0x26d644);})[_0xd5d0('0x1f')](function(_0x239aca){if(_0x239aca){logger[_0xd5d0('0xe')](_0xd5d0('0x49'));logger['info'](_0xd5d0('0x4a'),_0x239aca['id']);}})[_0xd5d0('0x59')](function(_0x11654c){logger[_0xd5d0('0x4e')]('['+_0x26d644[_0xd5d0('0x5b')][_0xd5d0('0x5c')]()+']',JSON['stringify'](_0x11654c));});};