Built motion from commit f7863d46.|2.5.41
[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 _0x9374=['toString','debug','[HTTP]','stringify','GET','length','map','type','nameField','customField','content','includes','string','picklist','idField','variable','variableName','push','Variable','toLowerCase','serverUrl','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','trigger:browser:url','unmanaged','monitor_format','toUpperCase','lodash','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','application/json','emit','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','mapValues','keyBy','custom_fields','value','POST','then','Ticket\x20created!','%s/api/v2/agents','remoteUri','find','contact','info','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.'];(function(_0x57a120,_0x23bac8){var _0x55182c=function(_0x26ba34){while(--_0x26ba34){_0x57a120['push'](_0x57a120['shift']());}};_0x55182c(++_0x23bac8);}(_0x9374,0x18e));var _0x4937=function(_0x3cc6f3,_0x470176){_0x3cc6f3=_0x3cc6f3-0x0;var _0x2f7115=_0x9374[_0x3cc6f3];return _0x2f7115;};'use strict';var _=require(_0x4937('0x0'));var rp=require(_0x4937('0x1'));var md5=require(_0x4937('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x4937('0x3'));var config=require(_0x4937('0x4'));var logger=require(_0x4937('0x5'))('freshdesk');config[_0x4937('0x6')]=_[_0x4937('0x7')](config[_0x4937('0x6')],{'host':_0x4937('0x8'),'port':0x18eb});var io=require(_0x4937('0x9'))(new Redis(config['redis']));var headers={'Content-Type':_0x4937('0xa'),'Accept':_0x4937('0xa')};function emit(_0x11bfad,_0x56bcbd,_0x1176b5){io['to'](_0x11bfad)[_0x4937('0xb')](_0x56bcbd,_0x1176b5);}function getTicket(_0x50e92d,_0x1c3b8e,_0x369ba8,_0x126e90,_0x81afc2){logger['info']('Creating\x20new\x20ticket...');var _0x13a869=_[_0x4937('0xc')]({'responder_id':_0x1c3b8e['id'],'requester_id':_0x369ba8['id'],'name':util[_0x4937('0xd')](_0x4937('0xe'),_0x81afc2[_0x4937('0xf')]),'phone':_0x81afc2[_0x4937('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x4937('0x11')](_0x126e90[_0x4937('0x12')],_0x81afc2,'\x20'),'description':intUtil[_0x4937('0x11')](_0x126e90[_0x4937('0x13')],_0x81afc2,_0x4937('0x14')),'tags':getTags(_0x126e90[_0x4937('0x15')],_0x4937('0x16'))},getCustomFields(_0x126e90['Fields'],_0x81afc2));_0x13a869['custom_fields']=_[_0x4937('0x17')](_[_0x4937('0x18')](_0x13a869[_0x4937('0x19')],'id'),_0x4937('0x1a'));return request({'uri':util[_0x4937('0xd')]('%s/api/v2/tickets',_0x50e92d['remoteUri']),'method':_0x4937('0x1b'),'body':_0x13a869})[_0x4937('0x1c')](function(_0x49b990){logger['info'](_0x4937('0x1d'));return _0x49b990;});}function getUser(_0x3472fa,_0x1a8579){if(intUtil['validateEmail'](_0x1a8579)){return request({'uri':util['format'](_0x4937('0x1e'),_0x3472fa[_0x4937('0x1f')]),'qs':{'email':_0x1a8579}})[_0x4937('0x1c')](function(_0x285731){if(_0x285731['length']){logger['info']('Agent\x20found!');return _[_0x4937('0x20')](_0x285731,function(_0xf2a6e2){return _0xf2a6e2[_0x4937('0x21')]['email']===_0x1a8579;});}else{logger[_0x4937('0x22')](_0x4937('0x23'));return request({'uri':util[_0x4937('0xd')]('%s/api/v2/agents/me',_0x3472fa[_0x4937('0x1f')])})[_0x4937('0x1c')](function(_0xd4e8fa){logger[_0x4937('0x22')](_0x4937('0x24'));return _0xd4e8fa;});}});}else{logger[_0x4937('0x22')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x4937('0xd')](_0x4937('0x25'),_0x3472fa[_0x4937('0x1f')])})[_0x4937('0x1c')](function(_0x2cba72){logger[_0x4937('0x22')](_0x4937('0x24'));return _0x2cba72;});}}function getEndUser(_0x3bc755,_0x10bfe0,_0x41e9e7){logger[_0x4937('0x22')](_0x4937('0x26'),_0x41e9e7);return request({'uri':util[_0x4937('0xd')]('%s/api/v2/contacts',_0x3bc755[_0x4937('0x1f')]),'qs':{'phone':_0x41e9e7}})[_0x4937('0x1c')](function(_0x524712){if(_0x524712['length']){logger[_0x4937('0x22')](_0x4937('0x27'));return _['find'](_0x524712,{'phone':_0x41e9e7});}else{logger['info'](_0x4937('0x28'));return request({'uri':util[_0x4937('0xd')]('%s/api/v2/contacts',_0x3bc755['remoteUri']),'method':'POST','body':{'name':_0x10bfe0,'phone':_0x41e9e7}})[_0x4937('0x1c')](function(_0x3afb65){logger[_0x4937('0x22')](_0x4937('0x29'));return _0x3afb65;});}});}function getAuth(_0x341e5d){return util[_0x4937('0xd')]('Basic\x20%s',new Buffer(_0x341e5d['apiKey']+':X')[_0x4937('0x2a')]('base64'));}function request(_0x6a5115){logger[_0x4937('0x2b')](_0x4937('0x2c'),JSON[_0x4937('0x2d')](_0x6a5115));return rp(_[_0x4937('0x7')](_0x6a5115,{'method':_0x4937('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x484170,_0x1e845f){var _0x2e5505=[];if(_0x484170&&_0x484170[_0x4937('0x2f')]>0x0){_0x2e5505=_[_0x4937('0x30')](_0x484170,_0x1e845f);}return _0x2e5505;}function getCustomFields(_0x17062c,_0xe70fec){var _0x393ff8=[];var _0xff3beb={'custom_fields':[]};if(_0x17062c[_0x4937('0x2f')]>0x0){_['forEach'](_0x17062c,function(_0x1a0a28){if(_['includes'](['string','picklist'],_0x1a0a28[_0x4937('0x31')])&&_0x1a0a28[_0x4937('0x32')]&&!_0x1a0a28[_0x4937('0x33')]){_0xff3beb[_0x1a0a28[_0x4937('0x32')]['toLowerCase']()]=_0x1a0a28[_0x4937('0x34')]['toString']();}else if(_[_0x4937('0x35')]([_0x4937('0x36'),_0x4937('0x37')],_0x1a0a28[_0x4937('0x31')])&&_0x1a0a28[_0x4937('0x38')]&&_0x1a0a28['customField']){_0xff3beb[_0x4937('0x19')]['push']({'id':_0x1a0a28['idField'],'value':_0x1a0a28[_0x4937('0x34')][_0x4937('0x2a')]()});}else if(_0x1a0a28[_0x4937('0x31')]===_0x4937('0x39')&&_0x1a0a28['variableName']&&_0x1a0a28[_0x4937('0x38')]&&_0x1a0a28[_0x4937('0x33')]){_0xe70fec[_0x1a0a28[_0x4937('0x3a')]]&&_0xff3beb['custom_fields'][_0x4937('0x3b')]({'id':_0x1a0a28['idField'],'value':_0xe70fec[_0x1a0a28[_0x4937('0x3a')]]['toString']()});}else if(_0x1a0a28[_0x4937('0x31')]==='customVariable'&&_0x1a0a28[_0x4937('0x3c')]&&_0x1a0a28[_0x4937('0x3c')][_0x4937('0x16')]&&_0x1a0a28[_0x4937('0x38')]&&_0x1a0a28[_0x4937('0x33')]){_0xe70fec[_0x1a0a28[_0x4937('0x3c')][_0x4937('0x16')][_0x4937('0x3d')]()]&&_0xff3beb[_0x4937('0x19')]['push']({'id':_0x1a0a28[_0x4937('0x38')],'value':_0xe70fec[_0x1a0a28[_0x4937('0x3c')][_0x4937('0x16')][_0x4937('0x3d')]()][_0x4937('0x2a')]()});}});}return _0xff3beb;}exports['queue']=function(_0x10378c,_0x3f5096,_0x225a2e,_0x18fecb,_0x46167b,_0x3deccb){var _0x47bd0f,_0x12909c;_0x3deccb[_0x4937('0x1f')]=intUtil['stripTrailingSlash'](_0x3deccb[_0x4937('0x1f')]);_0x3deccb[_0x4937('0x3e')]=intUtil[_0x4937('0x3f')](_0x3deccb[_0x4937('0x3e')]);if(_0x46167b&&_0x46167b['monitor_format']){logger[_0x4937('0x22')](_0x4937('0x40'),'Recording\x20is\x20enabled!');_0x3f5096['recordingURL']=util[_0x4937('0xd')](_0x4937('0x41'),_0x3deccb[_0x4937('0x3e')],_0x3f5096[_0x4937('0x42')],md5(_0x3f5096['uniqueid']));}else{_0x3f5096[_0x4937('0x43')]='';}headers[_0x4937('0x44')]=getAuth(_0x3deccb);return getUser(_0x3deccb,_0x18fecb[_0x4937('0x45')])['then'](function(_0x710dd6){_0x47bd0f=_0x710dd6;logger[_0x4937('0x22')](_0x4937('0x46'),_0x47bd0f['id']);return getEndUser(_0x3deccb,_0x3f5096[_0x4937('0xf')],_0x3f5096[_0x4937('0x10')]);})[_0x4937('0x1c')](function(_0x57cf45){_0x12909c=_0x57cf45;logger[_0x4937('0x22')](_0x4937('0x47'),_0x12909c['id']);return getTicket(_0x3deccb,_0x47bd0f,_0x12909c,_0x225a2e,_0x3f5096);})['then'](function(_0x33512c){if(_0x33512c&&_0x33512c['id']){logger[_0x4937('0x22')](_0x4937('0x1d'));logger[_0x4937('0x22')](_0x4937('0x48'),_0x33512c['id']);logger[_0x4937('0x22')]('[QUEUE]',_0x4937('0x49'));emit(util['format'](_0x4937('0x4a'),_0x18fecb['name']),'trigger:browser:url',{'uri':util[_0x4937('0xd')](_0x4937('0x4b'),_0x3deccb['remoteUri'],_0x33512c['id'])});}})[_0x4937('0x4c')](function(_0x54755e){logger[_0x4937('0x4d')]('[QUEUE]',JSON[_0x4937('0x2d')](_0x54755e));});};exports[_0x4937('0x4e')]=function(_0x53cb6f,_0x32147d,_0xd0d7e1,_0x2e4c1e,_0x1c7941,_0x2074b1,_0x44ee79){var _0xae0bcf,_0x39f373;_0x2074b1[_0x4937('0x1f')]=intUtil['stripTrailingSlash'](_0x2074b1['remoteUri']);_0x2074b1[_0x4937('0x3e')]=intUtil[_0x4937('0x3f')](_0x2074b1[_0x4937('0x3e')]);if(_0x44ee79&&_0x44ee79[_0x4937('0x4f')]&&_0x44ee79[_0x4937('0x4f')]!==_0x4937('0x50')){logger[_0x4937('0x22')](_0x4937('0x51'),_0x4937('0x52'));_0x32147d['recordingURL']=util[_0x4937('0xd')](_0x4937('0x41'),_0x2074b1['serverUrl'],_0x32147d[_0x4937('0x42')],md5(_0x32147d[_0x4937('0x42')]));}headers[_0x4937('0x44')]=getAuth(_0x2074b1);return getUser(_0x2074b1,_0x2e4c1e[_0x4937('0x45')])[_0x4937('0x1c')](function(_0x309286){_0xae0bcf=_0x309286;logger[_0x4937('0x22')](_0x4937('0x46'),_0xae0bcf['id']);return getEndUser(_0x2074b1,_0x32147d[_0x4937('0x53')],_0x32147d['destcalleridnum']);})['then'](function(_0x201e48){_0x39f373=_0x201e48;logger[_0x4937('0x22')](_0x4937('0x47'),_0x39f373['id']);return getTicket(_0x2074b1,_0xae0bcf,_0x39f373,_0xd0d7e1,_0x32147d);})[_0x4937('0x1c')](function(_0x30a2a6){if(_0x30a2a6&&_0x30a2a6['id']){logger[_0x4937('0x22')](_0x4937('0x1d'));logger['info'](_0x4937('0x48'),_0x30a2a6['id']);logger[_0x4937('0x22')](_0x4937('0x51'),_0x4937('0x49'));emit(util[_0x4937('0xd')](_0x4937('0x4a'),_0x2e4c1e[_0x4937('0x16')]),_0x4937('0x54'),{'uri':util[_0x4937('0xd')]('%s/helpdesk/tickets/%d',_0x2074b1[_0x4937('0x1f')],_0x30a2a6['id'])});}})[_0x4937('0x4c')](function(_0xb45606){logger[_0x4937('0x4d')](_0x4937('0x51'),JSON[_0x4937('0x2d')](_0xb45606));});};exports[_0x4937('0x55')]=function(_0x368f9e,_0x8328a2,_0x17189a,_0x197dd2,_0x357f61,_0x57a5fc){var _0x393f91,_0x2b810e;_0x57a5fc[_0x4937('0x1f')]=intUtil[_0x4937('0x3f')](_0x57a5fc[_0x4937('0x1f')]);_0x57a5fc[_0x4937('0x3e')]=intUtil[_0x4937('0x3f')](_0x57a5fc['serverUrl']);if(_0x357f61&&_0x357f61[_0x4937('0x56')]){logger[_0x4937('0x22')]('['+_0x8328a2['lastevent']['toUpperCase']()+']',_0x4937('0x52'));_0x8328a2[_0x4937('0x43')]=util[_0x4937('0xd')](_0x4937('0x41'),_0x57a5fc[_0x4937('0x3e')],_0x8328a2['uniqueid'],md5(_0x8328a2[_0x4937('0x42')]));}else{_0x8328a2[_0x4937('0x43')]='';}headers[_0x4937('0x44')]=getAuth(_0x57a5fc);return getUser(_0x57a5fc,'')['then'](function(_0x528e74){_0x393f91=_0x528e74;logger[_0x4937('0x22')](_0x4937('0x46'),_0x393f91['id']);return getEndUser(_0x57a5fc,_0x8328a2[_0x4937('0xf')],_0x8328a2['calleridnum']);})[_0x4937('0x1c')](function(_0x45d40f){_0x2b810e=_0x45d40f;logger['info'](_0x4937('0x47'),_0x2b810e['id']);return getTicket(_0x57a5fc,_0x393f91,_0x2b810e,_0x17189a,_0x8328a2);})[_0x4937('0x1c')](function(_0x43f4f3){if(_0x43f4f3){logger['info']('Ticket\x20created!');logger[_0x4937('0x22')](_0x4937('0x48'),_0x43f4f3['id']);}})[_0x4937('0x4c')](function(_0x5af62f){logger['error']('['+_0x8328a2['lastevent'][_0x4937('0x57')]()+']',JSON['stringify'](_0x5af62f));});};