de010e5377e3723128b1fee102564a0bc4e37ecf
[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 _0x637f=['socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','<br>','Tags','name','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','then','info','Ticket\x20created!','%s/api/v2/agents','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!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','toString','base64','debug','stringify','GET','length','map','includes','string','picklist','type','nameField','toLowerCase','content','idField','customField','custom_fields','push','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','catch','unmanaged','toUpperCase','lastevent','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost'];(function(_0x21896d,_0x4e3aff){var _0x3e195c=function(_0xa6621f){while(--_0xa6621f){_0x21896d['push'](_0x21896d['shift']());}};_0x3e195c(++_0x4e3aff);}(_0x637f,0xa9));var _0xf637=function(_0x111692,_0x19f8a9){_0x111692=_0x111692-0x0;var _0x11836f=_0x637f[_0x111692];return _0x11836f;};'use strict';var _=require(_0xf637('0x0'));var rp=require(_0xf637('0x1'));var md5=require(_0xf637('0x2'));var util=require(_0xf637('0x3'));var Redis=require(_0xf637('0x4'));var intUtil=require(_0xf637('0x5'));var config=require(_0xf637('0x6'));var logger=require(_0xf637('0x7'))(_0xf637('0x8'));config['redis']=_['defaults'](config[_0xf637('0x9')],{'host':_0xf637('0xa'),'port':0x18eb});var io=require(_0xf637('0xb'))(new Redis(config[_0xf637('0x9')]));var headers={'Content-Type':'application/json','Accept':_0xf637('0xc')};function emit(_0x171fd9,_0x12fb77,_0x44afe1){io['to'](_0x171fd9)[_0xf637('0xd')](_0x12fb77,_0x44afe1);}function getTicket(_0x2d408e,_0x5b43c0,_0x49426c,_0x2d30dd,_0x5df8ce){logger['info'](_0xf637('0xe'));var _0x153a47=_[_0xf637('0xf')]({'responder_id':_0x5b43c0['id'],'requester_id':_0x49426c['id'],'name':util[_0xf637('0x10')]('Caller\x20-\x20%s',_0x5df8ce[_0xf637('0x11')]),'phone':_0x5df8ce[_0xf637('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xf637('0x13')](_0x2d30dd['Subjects'],_0x5df8ce,'\x20'),'description':intUtil[_0xf637('0x13')](_0x2d30dd['Descriptions'],_0x5df8ce,_0xf637('0x14')),'tags':getTags(_0x2d30dd[_0xf637('0x15')],_0xf637('0x16'))},getCustomFields(_0x2d30dd['Fields'],_0x5df8ce));_0x153a47['custom_fields']=_[_0xf637('0x17')](_[_0xf637('0x18')](_0x153a47['custom_fields'],'id'),_0xf637('0x19'));return request({'uri':util[_0xf637('0x10')](_0xf637('0x1a'),_0x2d408e[_0xf637('0x1b')]),'method':'POST','body':_0x153a47})[_0xf637('0x1c')](function(_0x365389){logger[_0xf637('0x1d')](_0xf637('0x1e'));return _0x365389;});}function getUser(_0x36d2cb,_0x11c7d0){if(intUtil['validateEmail'](_0x11c7d0)){return request({'uri':util[_0xf637('0x10')](_0xf637('0x1f'),_0x36d2cb[_0xf637('0x1b')]),'qs':{'email':_0x11c7d0}})[_0xf637('0x1c')](function(_0x41d47c){if(_0x41d47c['length']){logger[_0xf637('0x1d')]('Agent\x20found!');return _[_0xf637('0x20')](_0x41d47c,function(_0x539094){return _0x539094[_0xf637('0x21')][_0xf637('0x22')]===_0x11c7d0;});}else{logger[_0xf637('0x1d')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf637('0x10')](_0xf637('0x23'),_0x36d2cb[_0xf637('0x1b')])})[_0xf637('0x1c')](function(_0x1c0765){logger['info'](_0xf637('0x24'));return _0x1c0765;});}});}else{logger['info'](_0xf637('0x25'));return request({'uri':util[_0xf637('0x10')](_0xf637('0x23'),_0x36d2cb[_0xf637('0x1b')])})['then'](function(_0x124b39){logger[_0xf637('0x1d')]('Admin\x20account\x20selected.');return _0x124b39;});}}function getEndUser(_0x9c48ef,_0x3426c7,_0x446836){logger[_0xf637('0x1d')](_0xf637('0x26'),_0x446836);return request({'uri':util[_0xf637('0x10')](_0xf637('0x27'),_0x9c48ef[_0xf637('0x1b')]),'qs':{'phone':_0x446836}})[_0xf637('0x1c')](function(_0xd6236c){if(_0xd6236c['length']){logger[_0xf637('0x1d')](_0xf637('0x28'));return _['find'](_0xd6236c,{'phone':_0x446836});}else{logger[_0xf637('0x1d')](_0xf637('0x29'));return request({'uri':util[_0xf637('0x10')]('%s/api/v2/contacts',_0x9c48ef[_0xf637('0x1b')]),'method':'POST','body':{'name':_0x3426c7,'phone':_0x446836}})[_0xf637('0x1c')](function(_0x34ecbc){logger[_0xf637('0x1d')](_0xf637('0x2a'));return _0x34ecbc;});}});}function getAuth(_0x293045){return util['format']('Basic\x20%s',new Buffer(_0x293045['apiKey']+':X')[_0xf637('0x2b')](_0xf637('0x2c')));}function request(_0x496795){logger[_0xf637('0x2d')]('[HTTP]',JSON[_0xf637('0x2e')](_0x496795));return rp(_['defaults'](_0x496795,{'method':_0xf637('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x1f4c62,_0x1f3e86){var _0x2592c7=[];if(_0x1f4c62&&_0x1f4c62[_0xf637('0x30')]>0x0){_0x2592c7=_[_0xf637('0x31')](_0x1f4c62,_0x1f3e86);}return _0x2592c7;}function getCustomFields(_0x6488fe,_0x58639e){var _0x4dfc09=[];var _0xc6cf82={'custom_fields':[]};if(_0x6488fe[_0xf637('0x30')]>0x0){_['forEach'](_0x6488fe,function(_0x566ccb){if(_[_0xf637('0x32')]([_0xf637('0x33'),_0xf637('0x34')],_0x566ccb[_0xf637('0x35')])&&_0x566ccb[_0xf637('0x36')]&&!_0x566ccb['customField']){_0xc6cf82[_0x566ccb['nameField'][_0xf637('0x37')]()]=_0x566ccb[_0xf637('0x38')][_0xf637('0x2b')]();}else if(_[_0xf637('0x32')]([_0xf637('0x33'),'picklist'],_0x566ccb[_0xf637('0x35')])&&_0x566ccb[_0xf637('0x39')]&&_0x566ccb[_0xf637('0x3a')]){_0xc6cf82[_0xf637('0x3b')][_0xf637('0x3c')]({'id':_0x566ccb[_0xf637('0x39')],'value':_0x566ccb['content'][_0xf637('0x2b')]()});}else if(_0x566ccb['type']===_0xf637('0x3d')&&_0x566ccb[_0xf637('0x3e')]&&_0x566ccb['idField']&&_0x566ccb[_0xf637('0x3a')]){_0x58639e[_0x566ccb[_0xf637('0x3e')]]&&_0xc6cf82[_0xf637('0x3b')][_0xf637('0x3c')]({'id':_0x566ccb[_0xf637('0x39')],'value':_0x58639e[_0x566ccb['variableName']][_0xf637('0x2b')]()});}else if(_0x566ccb[_0xf637('0x35')]===_0xf637('0x3f')&&_0x566ccb[_0xf637('0x40')]&&_0x566ccb[_0xf637('0x40')][_0xf637('0x16')]&&_0x566ccb['idField']&&_0x566ccb[_0xf637('0x3a')]){_0x58639e[_0x566ccb[_0xf637('0x40')][_0xf637('0x16')][_0xf637('0x37')]()]&&_0xc6cf82[_0xf637('0x3b')]['push']({'id':_0x566ccb['idField'],'value':_0x58639e[_0x566ccb['Variable']['name'][_0xf637('0x37')]()]['toString']()});}});}return _0xc6cf82;}exports['queue']=function(_0x32beb8,_0x544981,_0x17b725,_0x1e1dcc,_0x4ed948,_0x131ad4){var _0x539722,_0x4b96df;_0x131ad4['remoteUri']=intUtil[_0xf637('0x41')](_0x131ad4['remoteUri']);_0x131ad4['serverUrl']=intUtil[_0xf637('0x41')](_0x131ad4[_0xf637('0x42')]);if(_0x4ed948&&_0x4ed948[_0xf637('0x43')]){logger[_0xf637('0x1d')](_0xf637('0x44'),_0xf637('0x45'));_0x544981[_0xf637('0x46')]=util[_0xf637('0x10')](_0xf637('0x47'),_0x131ad4['serverUrl'],_0x544981[_0xf637('0x48')],md5(_0x544981[_0xf637('0x48')]));}else{_0x544981[_0xf637('0x46')]='';}headers['Authorization']=getAuth(_0x131ad4);return getUser(_0x131ad4,_0x1e1dcc[_0xf637('0x22')])[_0xf637('0x1c')](function(_0x17d247){_0x539722=_0x17d247;logger[_0xf637('0x1d')](_0xf637('0x49'),_0x539722['id']);return getEndUser(_0x131ad4,_0x544981[_0xf637('0x11')],_0x544981[_0xf637('0x12')]);})[_0xf637('0x1c')](function(_0x3ad81b){_0x4b96df=_0x3ad81b;logger[_0xf637('0x1d')](_0xf637('0x4a'),_0x4b96df['id']);return getTicket(_0x131ad4,_0x539722,_0x4b96df,_0x17b725,_0x544981);})['then'](function(_0x502a14){if(_0x502a14&&_0x502a14['id']){logger[_0xf637('0x1d')](_0xf637('0x1e'));logger[_0xf637('0x1d')](_0xf637('0x4b'),_0x502a14['id']);logger[_0xf637('0x1d')](_0xf637('0x44'),_0xf637('0x4c'));emit(util[_0xf637('0x10')](_0xf637('0x4d'),_0x1e1dcc['name']),_0xf637('0x4e'),{'uri':util[_0xf637('0x10')](_0xf637('0x4f'),_0x131ad4['remoteUri'],_0x502a14['id'])});}})['catch'](function(_0xa3618d){logger[_0xf637('0x50')](_0xf637('0x44'),JSON[_0xf637('0x2e')](_0xa3618d));});};exports['outbound']=function(_0x1707f3,_0x25bcd7,_0x1a1e99,_0x237c38,_0x40ef37,_0x4ce530,_0x5b5c28){var _0x1420fb,_0x294444;_0x4ce530[_0xf637('0x1b')]=intUtil[_0xf637('0x41')](_0x4ce530[_0xf637('0x1b')]);_0x4ce530[_0xf637('0x42')]=intUtil['stripTrailingSlash'](_0x4ce530[_0xf637('0x42')]);if(_0x5b5c28&&_0x5b5c28[_0xf637('0x51')]&&_0x5b5c28[_0xf637('0x51')]!==_0xf637('0x52')){logger[_0xf637('0x1d')](_0xf637('0x53'),_0xf637('0x45'));_0x25bcd7[_0xf637('0x46')]=util[_0xf637('0x10')](_0xf637('0x47'),_0x4ce530[_0xf637('0x42')],_0x25bcd7['uniqueid'],md5(_0x25bcd7[_0xf637('0x48')]));}headers[_0xf637('0x54')]=getAuth(_0x4ce530);return getUser(_0x4ce530,_0x237c38[_0xf637('0x22')])[_0xf637('0x1c')](function(_0x22c0f0){_0x1420fb=_0x22c0f0;logger[_0xf637('0x1d')]('The\x20User\x20ID\x20is:',_0x1420fb['id']);return getEndUser(_0x4ce530,_0x25bcd7[_0xf637('0x55')],_0x25bcd7['destcalleridnum']);})[_0xf637('0x1c')](function(_0x1c152){_0x294444=_0x1c152;logger[_0xf637('0x1d')](_0xf637('0x4a'),_0x294444['id']);return getTicket(_0x4ce530,_0x1420fb,_0x294444,_0x1a1e99,_0x25bcd7);})['then'](function(_0x61e21d){if(_0x61e21d&&_0x61e21d['id']){logger[_0xf637('0x1d')](_0xf637('0x1e'));logger[_0xf637('0x1d')](_0xf637('0x4b'),_0x61e21d['id']);logger['info']('[OUTBOUND]',_0xf637('0x4c'));emit(util['format'](_0xf637('0x4d'),_0x237c38['name']),_0xf637('0x4e'),{'uri':util[_0xf637('0x10')](_0xf637('0x4f'),_0x4ce530[_0xf637('0x1b')],_0x61e21d['id'])});}})[_0xf637('0x56')](function(_0x5169fb){logger[_0xf637('0x50')](_0xf637('0x53'),JSON[_0xf637('0x2e')](_0x5169fb));});};exports[_0xf637('0x57')]=function(_0x57cde3,_0x178b58,_0x52022b,_0x46a57d,_0x134ff1,_0x59b2b8){var _0x15c263,_0x700079;_0x59b2b8[_0xf637('0x1b')]=intUtil[_0xf637('0x41')](_0x59b2b8['remoteUri']);_0x59b2b8[_0xf637('0x42')]=intUtil[_0xf637('0x41')](_0x59b2b8[_0xf637('0x42')]);if(_0x134ff1&&_0x134ff1[_0xf637('0x43')]){logger[_0xf637('0x1d')]('['+_0x178b58['lastevent'][_0xf637('0x58')]()+']',_0xf637('0x45'));_0x178b58[_0xf637('0x46')]=util[_0xf637('0x10')](_0xf637('0x47'),_0x59b2b8[_0xf637('0x42')],_0x178b58[_0xf637('0x48')],md5(_0x178b58['uniqueid']));}else{_0x178b58[_0xf637('0x46')]='';}headers[_0xf637('0x54')]=getAuth(_0x59b2b8);return getUser(_0x59b2b8,'')[_0xf637('0x1c')](function(_0x530091){_0x15c263=_0x530091;logger[_0xf637('0x1d')](_0xf637('0x49'),_0x15c263['id']);return getEndUser(_0x59b2b8,_0x178b58[_0xf637('0x11')],_0x178b58[_0xf637('0x12')]);})['then'](function(_0x16b98a){_0x700079=_0x16b98a;logger[_0xf637('0x1d')](_0xf637('0x4a'),_0x700079['id']);return getTicket(_0x59b2b8,_0x15c263,_0x700079,_0x52022b,_0x178b58);})[_0xf637('0x1c')](function(_0x2dbb70){if(_0x2dbb70){logger[_0xf637('0x1d')](_0xf637('0x1e'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2dbb70['id']);}})[_0xf637('0x56')](function(_0x1ffb2d){logger[_0xf637('0x50')]('['+_0x178b58[_0xf637('0x59')]['toUpperCase']()+']',JSON[_0xf637('0x2e')](_0x1ffb2d));});};