Built motion from commit 85328c08.|2.5.50
[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 _0x8cf6=['Tags','name','Fields','custom_fields','keyBy','value','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','info','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','%s/api/v2/contacts','apiKey','debug','[HTTP]','stringify','GET','forEach','includes','string','type','nameField','toLowerCase','content','toString','picklist','push','variable','variableName','customField','idField','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridnum','[OUTBOUND]','user:%s','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Subjects','Descriptions','<br>'];(function(_0x8f3a26,_0xf35df0){var _0x37a687=function(_0x3a04dc){while(--_0x3a04dc){_0x8f3a26['push'](_0x8f3a26['shift']());}};_0x37a687(++_0xf35df0);}(_0x8cf6,0x1c4));var _0x68cf=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x8cf6[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0x68cf('0x0'));var rp=require('request-promise');var md5=require(_0x68cf('0x1'));var util=require(_0x68cf('0x2'));var Redis=require(_0x68cf('0x3'));var intUtil=require(_0x68cf('0x4'));var config=require(_0x68cf('0x5'));var logger=require(_0x68cf('0x6'))(_0x68cf('0x7'));config[_0x68cf('0x8')]=_[_0x68cf('0x9')](config[_0x68cf('0x8')],{'host':_0x68cf('0xa'),'port':0x18eb});var io=require(_0x68cf('0xb'))(new Redis(config[_0x68cf('0x8')]));var headers={'Content-Type':_0x68cf('0xc'),'Accept':'application/json'};function emit(_0x48500d,_0x54132a,_0xf3c763){io['to'](_0x48500d)[_0x68cf('0xd')](_0x54132a,_0xf3c763);}function getTicket(_0x4c2b84,_0x545767,_0x2c7be3,_0x5655f2,_0x23514f){logger['info'](_0x68cf('0xe'));var _0x50f3e7=_[_0x68cf('0xf')]({'responder_id':_0x545767['id'],'requester_id':_0x2c7be3['id'],'name':util[_0x68cf('0x10')]('Caller\x20-\x20%s',_0x23514f[_0x68cf('0x11')]),'phone':_0x23514f[_0x68cf('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x68cf('0x13')](_0x5655f2[_0x68cf('0x14')],_0x23514f,'\x20'),'description':intUtil[_0x68cf('0x13')](_0x5655f2[_0x68cf('0x15')],_0x23514f,_0x68cf('0x16')),'tags':getTags(_0x5655f2[_0x68cf('0x17')],_0x68cf('0x18'))},getCustomFields(_0x5655f2[_0x68cf('0x19')],_0x23514f));_0x50f3e7[_0x68cf('0x1a')]=_['mapValues'](_[_0x68cf('0x1b')](_0x50f3e7[_0x68cf('0x1a')],'id'),_0x68cf('0x1c'));return request({'uri':util[_0x68cf('0x10')]('%s/api/v2/tickets',_0x4c2b84[_0x68cf('0x1d')]),'method':_0x68cf('0x1e'),'body':_0x50f3e7})[_0x68cf('0x1f')](function(_0x5958e9){logger['info'](_0x68cf('0x20'));return _0x5958e9;});}function getUser(_0x2ddb33,_0x53a54b){if(intUtil[_0x68cf('0x21')](_0x53a54b)){return request({'uri':util[_0x68cf('0x10')](_0x68cf('0x22'),_0x2ddb33['remoteUri']),'qs':{'email':_0x53a54b}})['then'](function(_0x265b85){if(_0x265b85[_0x68cf('0x23')]){logger[_0x68cf('0x24')]('Agent\x20found!');return _[_0x68cf('0x25')](_0x265b85,function(_0xf9b7ce){return _0xf9b7ce[_0x68cf('0x26')][_0x68cf('0x27')]===_0x53a54b;});}else{logger[_0x68cf('0x24')](_0x68cf('0x28'));return request({'uri':util['format'](_0x68cf('0x29'),_0x2ddb33['remoteUri'])})[_0x68cf('0x1f')](function(_0x385cd0){logger[_0x68cf('0x24')](_0x68cf('0x2a'));return _0x385cd0;});}});}else{logger[_0x68cf('0x24')](_0x68cf('0x2b'));return request({'uri':util[_0x68cf('0x10')](_0x68cf('0x29'),_0x2ddb33[_0x68cf('0x1d')])})[_0x68cf('0x1f')](function(_0x304985){logger['info']('Admin\x20account\x20selected.');return _0x304985;});}}function getEndUser(_0x2d7862,_0x24b2f5,_0x4fa6e0){logger[_0x68cf('0x24')](_0x68cf('0x2c'),_0x4fa6e0);return request({'uri':util['format']('%s/api/v2/contacts',_0x2d7862[_0x68cf('0x1d')]),'qs':{'phone':_0x4fa6e0}})['then'](function(_0x348e5d){if(_0x348e5d[_0x68cf('0x23')]){logger['info'](_0x68cf('0x2d'));return _[_0x68cf('0x25')](_0x348e5d,{'phone':_0x4fa6e0});}else{logger[_0x68cf('0x24')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x68cf('0x2e'),_0x2d7862['remoteUri']),'method':_0x68cf('0x1e'),'body':{'name':_0x24b2f5,'phone':_0x4fa6e0}})['then'](function(_0x111efa){logger[_0x68cf('0x24')]('Enduser\x20created.');return _0x111efa;});}});}function getAuth(_0x2c462d){return util[_0x68cf('0x10')]('Basic\x20%s',new Buffer(_0x2c462d[_0x68cf('0x2f')]+':X')['toString']('base64'));}function request(_0x44e25c){logger[_0x68cf('0x30')](_0x68cf('0x31'),JSON[_0x68cf('0x32')](_0x44e25c));return rp(_[_0x68cf('0x9')](_0x44e25c,{'method':_0x68cf('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x44d715,_0x1d2aaf){var _0x120285=[];if(_0x44d715&&_0x44d715['length']>0x0){_0x120285=_['map'](_0x44d715,_0x1d2aaf);}return _0x120285;}function getCustomFields(_0x1f8ce9,_0x16b4a2){var _0x368315=[];var _0x58309f={'custom_fields':[]};if(_0x1f8ce9[_0x68cf('0x23')]>0x0){_[_0x68cf('0x34')](_0x1f8ce9,function(_0x5def7f){if(_[_0x68cf('0x35')]([_0x68cf('0x36'),'picklist'],_0x5def7f[_0x68cf('0x37')])&&_0x5def7f['nameField']&&!_0x5def7f['customField']){_0x58309f[_0x5def7f[_0x68cf('0x38')][_0x68cf('0x39')]()]=_0x5def7f[_0x68cf('0x3a')][_0x68cf('0x3b')]();}else if(_[_0x68cf('0x35')]([_0x68cf('0x36'),_0x68cf('0x3c')],_0x5def7f[_0x68cf('0x37')])&&_0x5def7f['idField']&&_0x5def7f['customField']){_0x58309f[_0x68cf('0x1a')][_0x68cf('0x3d')]({'id':_0x5def7f['idField'],'value':_0x5def7f['content'][_0x68cf('0x3b')]()});}else if(_0x5def7f[_0x68cf('0x37')]===_0x68cf('0x3e')&&_0x5def7f[_0x68cf('0x3f')]&&_0x5def7f['idField']&&_0x5def7f[_0x68cf('0x40')]){_0x16b4a2[_0x5def7f[_0x68cf('0x3f')]]&&_0x58309f['custom_fields'][_0x68cf('0x3d')]({'id':_0x5def7f[_0x68cf('0x41')],'value':_0x16b4a2[_0x5def7f[_0x68cf('0x3f')]][_0x68cf('0x3b')]()});}else if(_0x5def7f[_0x68cf('0x37')]===_0x68cf('0x42')&&_0x5def7f[_0x68cf('0x43')]&&_0x5def7f[_0x68cf('0x43')][_0x68cf('0x18')]&&_0x5def7f[_0x68cf('0x41')]&&_0x5def7f['customField']){_0x16b4a2[_0x5def7f[_0x68cf('0x43')][_0x68cf('0x18')][_0x68cf('0x39')]()]&&_0x58309f[_0x68cf('0x1a')]['push']({'id':_0x5def7f[_0x68cf('0x41')],'value':_0x16b4a2[_0x5def7f[_0x68cf('0x43')][_0x68cf('0x18')]['toLowerCase']()]['toString']()});}});}return _0x58309f;}exports[_0x68cf('0x44')]=function(_0x4aaacf,_0x645df7,_0x3449c0,_0x1bf09d,_0x5aab54,_0x16f7ba){var _0x104cf2,_0x22dfd8;_0x16f7ba['remoteUri']=intUtil[_0x68cf('0x45')](_0x16f7ba[_0x68cf('0x1d')]);_0x16f7ba[_0x68cf('0x46')]=intUtil[_0x68cf('0x45')](_0x16f7ba['serverUrl']);if(_0x5aab54&&_0x5aab54[_0x68cf('0x47')]){logger[_0x68cf('0x24')](_0x68cf('0x48'),'Recording\x20is\x20enabled!');_0x645df7[_0x68cf('0x49')]=util[_0x68cf('0x10')](_0x68cf('0x4a'),_0x16f7ba[_0x68cf('0x46')],_0x645df7[_0x68cf('0x4b')],md5(_0x645df7[_0x68cf('0x4b')]));}else{_0x645df7['recordingURL']='';}headers[_0x68cf('0x4c')]=getAuth(_0x16f7ba);return getUser(_0x16f7ba,_0x1bf09d[_0x68cf('0x27')])[_0x68cf('0x1f')](function(_0x51f4a6){_0x104cf2=_0x51f4a6;logger[_0x68cf('0x24')]('The\x20User\x20ID\x20is:',_0x104cf2['id']);return getEndUser(_0x16f7ba,_0x645df7[_0x68cf('0x11')],_0x645df7[_0x68cf('0x12')]);})[_0x68cf('0x1f')](function(_0x158f4e){_0x22dfd8=_0x158f4e;logger[_0x68cf('0x24')](_0x68cf('0x4d'),_0x22dfd8['id']);return getTicket(_0x16f7ba,_0x104cf2,_0x22dfd8,_0x3449c0,_0x645df7);})[_0x68cf('0x1f')](function(_0x14fe71){if(_0x14fe71&&_0x14fe71['id']){logger[_0x68cf('0x24')](_0x68cf('0x20'));logger['info'](_0x68cf('0x4e'),_0x14fe71['id']);logger[_0x68cf('0x24')](_0x68cf('0x48'),_0x68cf('0x4f'));emit(util[_0x68cf('0x10')]('user:%s',_0x1bf09d[_0x68cf('0x18')]),'trigger:browser:url',{'uri':util[_0x68cf('0x10')](_0x68cf('0x50'),_0x16f7ba[_0x68cf('0x1d')],_0x14fe71['id'])});}})[_0x68cf('0x51')](function(_0x2b3d1d){logger[_0x68cf('0x52')](_0x68cf('0x48'),JSON[_0x68cf('0x32')](_0x2b3d1d));});};exports[_0x68cf('0x53')]=function(_0x235287,_0x17e67e,_0x15279e,_0x420958,_0xb710a9,_0x4bf3f2,_0x5ed96f){var _0x12d08e,_0x247420;_0x4bf3f2[_0x68cf('0x1d')]=intUtil['stripTrailingSlash'](_0x4bf3f2['remoteUri']);_0x4bf3f2[_0x68cf('0x46')]=intUtil[_0x68cf('0x45')](_0x4bf3f2[_0x68cf('0x46')]);if(_0x5ed96f&&_0x5ed96f[_0x68cf('0x54')]&&_0x5ed96f[_0x68cf('0x54')]!==_0x68cf('0x55')){logger[_0x68cf('0x24')]('[OUTBOUND]',_0x68cf('0x56'));_0x17e67e[_0x68cf('0x49')]=util['format'](_0x68cf('0x4a'),_0x4bf3f2['serverUrl'],_0x17e67e[_0x68cf('0x4b')],md5(_0x17e67e[_0x68cf('0x4b')]));}headers[_0x68cf('0x4c')]=getAuth(_0x4bf3f2);return getUser(_0x4bf3f2,_0x420958[_0x68cf('0x27')])[_0x68cf('0x1f')](function(_0x5367e4){_0x12d08e=_0x5367e4;logger[_0x68cf('0x24')](_0x68cf('0x57'),_0x12d08e['id']);return getEndUser(_0x4bf3f2,_0x17e67e['destcalleridname'],_0x17e67e[_0x68cf('0x58')]);})[_0x68cf('0x1f')](function(_0x297ddb){_0x247420=_0x297ddb;logger[_0x68cf('0x24')](_0x68cf('0x4d'),_0x247420['id']);return getTicket(_0x4bf3f2,_0x12d08e,_0x247420,_0x15279e,_0x17e67e);})[_0x68cf('0x1f')](function(_0x63db44){if(_0x63db44&&_0x63db44['id']){logger['info'](_0x68cf('0x20'));logger[_0x68cf('0x24')]('The\x20Ticket\x20ID\x20is:',_0x63db44['id']);logger[_0x68cf('0x24')](_0x68cf('0x59'),_0x68cf('0x4f'));emit(util['format'](_0x68cf('0x5a'),_0x420958['name']),_0x68cf('0x5b'),{'uri':util[_0x68cf('0x10')](_0x68cf('0x50'),_0x4bf3f2[_0x68cf('0x1d')],_0x63db44['id'])});}})[_0x68cf('0x51')](function(_0x20fdff){logger['error'](_0x68cf('0x59'),JSON[_0x68cf('0x32')](_0x20fdff));});};exports[_0x68cf('0x5c')]=function(_0x4c14ca,_0x25bd60,_0x502746,_0x4feea2,_0x1053f7,_0x3fda8e){var _0x4eef5b,_0x452004;_0x3fda8e[_0x68cf('0x1d')]=intUtil['stripTrailingSlash'](_0x3fda8e[_0x68cf('0x1d')]);_0x3fda8e[_0x68cf('0x46')]=intUtil[_0x68cf('0x45')](_0x3fda8e[_0x68cf('0x46')]);if(_0x1053f7&&_0x1053f7[_0x68cf('0x47')]){logger[_0x68cf('0x24')]('['+_0x25bd60[_0x68cf('0x5d')][_0x68cf('0x5e')]()+']',_0x68cf('0x56'));_0x25bd60[_0x68cf('0x49')]=util[_0x68cf('0x10')](_0x68cf('0x4a'),_0x3fda8e[_0x68cf('0x46')],_0x25bd60[_0x68cf('0x4b')],md5(_0x25bd60[_0x68cf('0x4b')]));}else{_0x25bd60[_0x68cf('0x49')]='';}headers['Authorization']=getAuth(_0x3fda8e);return getUser(_0x3fda8e,'')[_0x68cf('0x1f')](function(_0x2a4b41){_0x4eef5b=_0x2a4b41;logger[_0x68cf('0x24')]('The\x20User\x20ID\x20is:',_0x4eef5b['id']);return getEndUser(_0x3fda8e,_0x25bd60['calleridname'],_0x25bd60[_0x68cf('0x12')]);})[_0x68cf('0x1f')](function(_0x595f01){_0x452004=_0x595f01;logger[_0x68cf('0x24')](_0x68cf('0x4d'),_0x452004['id']);return getTicket(_0x3fda8e,_0x4eef5b,_0x452004,_0x502746,_0x25bd60);})[_0x68cf('0x1f')](function(_0x576477){if(_0x576477){logger[_0x68cf('0x24')](_0x68cf('0x20'));logger[_0x68cf('0x24')](_0x68cf('0x4e'),_0x576477['id']);}})['catch'](function(_0x282350){logger[_0x68cf('0x52')]('['+_0x25bd60['lastevent'][_0x68cf('0x5e')]()+']',JSON['stringify'](_0x282350));});};