Built motion from commit (unavailable).|2.5.31
[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 _0x5665=['Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','catch','stringify','outbound','recordingFormat','destcalleridnum','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','error','unmanaged','lastevent','toUpperCase','lodash','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','defaults','localhost','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','value','%s/api/v2/tickets','remoteUri','POST','validateEmail','%s/api/v2/agents','then','find','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','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','map','includes','string','type','nameField','customField','content','picklist','idField','push','variable','variableName','Variable','toLowerCase','queue','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL'];(function(_0x440917,_0x20ea7b){var _0x5e906b=function(_0x27cba5){while(--_0x27cba5){_0x440917['push'](_0x440917['shift']());}};_0x5e906b(++_0x20ea7b);}(_0x5665,0x183));var _0x5566=function(_0x3f2170,_0x44a0cf){_0x3f2170=_0x3f2170-0x0;var _0x394dfc=_0x5665[_0x3f2170];return _0x394dfc;};'use strict';var _=require(_0x5566('0x0'));var rp=require('request-promise');var md5=require(_0x5566('0x1'));var util=require('util');var Redis=require(_0x5566('0x2'));var intUtil=require(_0x5566('0x3'));var config=require(_0x5566('0x4'));var logger=require(_0x5566('0x5'))(_0x5566('0x6'));config['redis']=_[_0x5566('0x7')](config['redis'],{'host':_0x5566('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5566('0x9')]));var headers={'Content-Type':'application/json','Accept':_0x5566('0xa')};function emit(_0x220770,_0x283bdd,_0x3d55db){io['to'](_0x220770)[_0x5566('0xb')](_0x283bdd,_0x3d55db);}function getTicket(_0x10bac0,_0x551197,_0x3511c6,_0x89f216,_0x39133d){logger[_0x5566('0xc')](_0x5566('0xd'));var _0x816a3a=_[_0x5566('0xe')]({'responder_id':_0x551197['id'],'requester_id':_0x3511c6['id'],'name':util[_0x5566('0xf')](_0x5566('0x10'),_0x39133d[_0x5566('0x11')]),'phone':_0x39133d['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x5566('0x12')](_0x89f216['Subjects'],_0x39133d,'\x20'),'description':intUtil[_0x5566('0x12')](_0x89f216[_0x5566('0x13')],_0x39133d,_0x5566('0x14')),'tags':getTags(_0x89f216[_0x5566('0x15')],_0x5566('0x16'))},getCustomFields(_0x89f216[_0x5566('0x17')],_0x39133d));_0x816a3a[_0x5566('0x18')]=_[_0x5566('0x19')](_['keyBy'](_0x816a3a[_0x5566('0x18')],'id'),_0x5566('0x1a'));return request({'uri':util[_0x5566('0xf')](_0x5566('0x1b'),_0x10bac0[_0x5566('0x1c')]),'method':_0x5566('0x1d'),'body':_0x816a3a})['then'](function(_0x2181af){logger['info']('Ticket\x20created!');return _0x2181af;});}function getUser(_0x486e85,_0x2b45b3){if(intUtil[_0x5566('0x1e')](_0x2b45b3)){return request({'uri':util['format'](_0x5566('0x1f'),_0x486e85[_0x5566('0x1c')]),'qs':{'email':_0x2b45b3}})[_0x5566('0x20')](function(_0x2466f7){if(_0x2466f7['length']){logger[_0x5566('0xc')]('Agent\x20found!');return _[_0x5566('0x21')](_0x2466f7,function(_0x196825){return _0x196825['contact'][_0x5566('0x22')]===_0x2b45b3;});}else{logger[_0x5566('0xc')](_0x5566('0x23'));return request({'uri':util[_0x5566('0xf')](_0x5566('0x24'),_0x486e85[_0x5566('0x1c')])})[_0x5566('0x20')](function(_0x30825d){logger[_0x5566('0xc')](_0x5566('0x25'));return _0x30825d;});}});}else{logger['info'](_0x5566('0x26'));return request({'uri':util[_0x5566('0xf')](_0x5566('0x24'),_0x486e85[_0x5566('0x1c')])})['then'](function(_0x38144e){logger[_0x5566('0xc')]('Admin\x20account\x20selected.');return _0x38144e;});}}function getEndUser(_0x5b1e26,_0x54854b,_0x357839){logger['info'](_0x5566('0x27'),_0x357839);return request({'uri':util[_0x5566('0xf')](_0x5566('0x28'),_0x5b1e26[_0x5566('0x1c')]),'qs':{'phone':_0x357839}})[_0x5566('0x20')](function(_0x403840){if(_0x403840[_0x5566('0x29')]){logger[_0x5566('0xc')](_0x5566('0x2a'));return _[_0x5566('0x21')](_0x403840,{'phone':_0x357839});}else{logger[_0x5566('0xc')](_0x5566('0x2b'));return request({'uri':util[_0x5566('0xf')](_0x5566('0x28'),_0x5b1e26[_0x5566('0x1c')]),'method':_0x5566('0x1d'),'body':{'name':_0x54854b,'phone':_0x357839}})[_0x5566('0x20')](function(_0x5ec43a){logger['info'](_0x5566('0x2c'));return _0x5ec43a;});}});}function getAuth(_0x5b1929){return util[_0x5566('0xf')](_0x5566('0x2d'),new Buffer(_0x5b1929[_0x5566('0x2e')]+':X')[_0x5566('0x2f')](_0x5566('0x30')));}function request(_0x52c294){logger[_0x5566('0x31')](_0x5566('0x32'),JSON['stringify'](_0x52c294));return rp(_[_0x5566('0x7')](_0x52c294,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x88d87e,_0x100b78){var _0x277d8b=[];if(_0x88d87e&&_0x88d87e[_0x5566('0x29')]>0x0){_0x277d8b=_[_0x5566('0x33')](_0x88d87e,_0x100b78);}return _0x277d8b;}function getCustomFields(_0x168183,_0x4381bb){var _0xaf0087=[];var _0x5993ea={'custom_fields':[]};if(_0x168183['length']>0x0){_['forEach'](_0x168183,function(_0x46aaec){if(_[_0x5566('0x34')]([_0x5566('0x35'),'picklist'],_0x46aaec[_0x5566('0x36')])&&_0x46aaec[_0x5566('0x37')]&&!_0x46aaec[_0x5566('0x38')]){_0x5993ea[_0x46aaec[_0x5566('0x37')]['toLowerCase']()]=_0x46aaec[_0x5566('0x39')]['toString']();}else if(_['includes']([_0x5566('0x35'),_0x5566('0x3a')],_0x46aaec[_0x5566('0x36')])&&_0x46aaec[_0x5566('0x3b')]&&_0x46aaec[_0x5566('0x38')]){_0x5993ea['custom_fields'][_0x5566('0x3c')]({'id':_0x46aaec[_0x5566('0x3b')],'value':_0x46aaec['content']['toString']()});}else if(_0x46aaec[_0x5566('0x36')]===_0x5566('0x3d')&&_0x46aaec[_0x5566('0x3e')]&&_0x46aaec[_0x5566('0x3b')]&&_0x46aaec[_0x5566('0x38')]){_0x4381bb[_0x46aaec[_0x5566('0x3e')]]&&_0x5993ea[_0x5566('0x18')]['push']({'id':_0x46aaec[_0x5566('0x3b')],'value':_0x4381bb[_0x46aaec[_0x5566('0x3e')]]['toString']()});}else if(_0x46aaec['type']==='customVariable'&&_0x46aaec[_0x5566('0x3f')]&&_0x46aaec['Variable']['name']&&_0x46aaec['idField']&&_0x46aaec['customField']){_0x4381bb[_0x46aaec['Variable']['name'][_0x5566('0x40')]()]&&_0x5993ea[_0x5566('0x18')][_0x5566('0x3c')]({'id':_0x46aaec[_0x5566('0x3b')],'value':_0x4381bb[_0x46aaec['Variable'][_0x5566('0x16')]['toLowerCase']()][_0x5566('0x2f')]()});}});}return _0x5993ea;}exports[_0x5566('0x41')]=function(_0x15187f,_0x2477e1,_0x5c1906,_0x26ae65,_0x31f25a,_0x40b560){var _0x41314d,_0xbceb87;_0x40b560['remoteUri']=intUtil['stripTrailingSlash'](_0x40b560[_0x5566('0x1c')]);_0x40b560[_0x5566('0x42')]=intUtil[_0x5566('0x43')](_0x40b560[_0x5566('0x42')]);if(_0x31f25a&&_0x31f25a['monitor_format']){logger[_0x5566('0xc')](_0x5566('0x44'),_0x5566('0x45'));_0x2477e1['recordingURL']=util[_0x5566('0xf')](_0x5566('0x46'),_0x40b560[_0x5566('0x42')],_0x2477e1[_0x5566('0x47')],md5(_0x2477e1[_0x5566('0x47')]));}else{_0x2477e1[_0x5566('0x48')]='';}headers[_0x5566('0x49')]=getAuth(_0x40b560);return getUser(_0x40b560,_0x26ae65[_0x5566('0x22')])[_0x5566('0x20')](function(_0x225784){_0x41314d=_0x225784;logger['info'](_0x5566('0x4a'),_0x41314d['id']);return getEndUser(_0x40b560,_0x2477e1[_0x5566('0x11')],_0x2477e1['calleridnum']);})[_0x5566('0x20')](function(_0x16eea1){_0xbceb87=_0x16eea1;logger[_0x5566('0xc')](_0x5566('0x4b'),_0xbceb87['id']);return getTicket(_0x40b560,_0x41314d,_0xbceb87,_0x5c1906,_0x2477e1);})['then'](function(_0x1a372b){if(_0x1a372b&&_0x1a372b['id']){logger[_0x5566('0xc')](_0x5566('0x4c'));logger[_0x5566('0xc')](_0x5566('0x4d'),_0x1a372b['id']);logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x5566('0xf')](_0x5566('0x4e'),_0x26ae65[_0x5566('0x16')]),_0x5566('0x4f'),{'uri':util[_0x5566('0xf')]('%s/helpdesk/tickets/%d',_0x40b560[_0x5566('0x1c')],_0x1a372b['id'])});}})[_0x5566('0x50')](function(_0x4a8826){logger['error'](_0x5566('0x44'),JSON[_0x5566('0x51')](_0x4a8826));});};exports[_0x5566('0x52')]=function(_0x4b0d81,_0xd753de,_0x4bab3f,_0x465feb,_0x9fc47d,_0x10a1ba,_0x4a7008){var _0xeb989c,_0x2c141f;_0x10a1ba[_0x5566('0x1c')]=intUtil[_0x5566('0x43')](_0x10a1ba[_0x5566('0x1c')]);_0x10a1ba['serverUrl']=intUtil[_0x5566('0x43')](_0x10a1ba['serverUrl']);if(_0x4a7008&&_0x4a7008[_0x5566('0x53')]&&_0x4a7008[_0x5566('0x53')]!=='none'){logger[_0x5566('0xc')]('[OUTBOUND]',_0x5566('0x45'));_0xd753de['recordingURL']=util[_0x5566('0xf')](_0x5566('0x46'),_0x10a1ba[_0x5566('0x42')],_0xd753de['uniqueid'],md5(_0xd753de[_0x5566('0x47')]));}headers[_0x5566('0x49')]=getAuth(_0x10a1ba);return getUser(_0x10a1ba,_0x465feb[_0x5566('0x22')])[_0x5566('0x20')](function(_0x2371c7){_0xeb989c=_0x2371c7;logger[_0x5566('0xc')](_0x5566('0x4a'),_0xeb989c['id']);return getEndUser(_0x10a1ba,_0xd753de['destcalleridname'],_0xd753de[_0x5566('0x54')]);})[_0x5566('0x20')](function(_0x1c6fc2){_0x2c141f=_0x1c6fc2;logger[_0x5566('0xc')](_0x5566('0x4b'),_0x2c141f['id']);return getTicket(_0x10a1ba,_0xeb989c,_0x2c141f,_0x4bab3f,_0xd753de);})['then'](function(_0x3cc454){if(_0x3cc454&&_0x3cc454['id']){logger[_0x5566('0xc')](_0x5566('0x4c'));logger[_0x5566('0xc')]('The\x20Ticket\x20ID\x20is:',_0x3cc454['id']);logger[_0x5566('0xc')](_0x5566('0x55'),_0x5566('0x56'));emit(util[_0x5566('0xf')]('user:%s',_0x465feb[_0x5566('0x16')]),'trigger:browser:url',{'uri':util[_0x5566('0xf')](_0x5566('0x57'),_0x10a1ba[_0x5566('0x1c')],_0x3cc454['id'])});}})['catch'](function(_0x3ec2b6){logger[_0x5566('0x58')]('[OUTBOUND]',JSON[_0x5566('0x51')](_0x3ec2b6));});};exports[_0x5566('0x59')]=function(_0x5ccb67,_0x1f85c1,_0x241a97,_0x4083eb,_0x126724,_0xa6a1b9){var _0x2f4686,_0x347148;_0xa6a1b9[_0x5566('0x1c')]=intUtil[_0x5566('0x43')](_0xa6a1b9[_0x5566('0x1c')]);_0xa6a1b9[_0x5566('0x42')]=intUtil[_0x5566('0x43')](_0xa6a1b9[_0x5566('0x42')]);if(_0x126724&&_0x126724['monitor_format']){logger['info']('['+_0x1f85c1['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1f85c1[_0x5566('0x48')]=util[_0x5566('0xf')](_0x5566('0x46'),_0xa6a1b9[_0x5566('0x42')],_0x1f85c1[_0x5566('0x47')],md5(_0x1f85c1[_0x5566('0x47')]));}else{_0x1f85c1['recordingURL']='';}headers[_0x5566('0x49')]=getAuth(_0xa6a1b9);return getUser(_0xa6a1b9,'')[_0x5566('0x20')](function(_0x38ae9a){_0x2f4686=_0x38ae9a;logger[_0x5566('0xc')](_0x5566('0x4a'),_0x2f4686['id']);return getEndUser(_0xa6a1b9,_0x1f85c1[_0x5566('0x11')],_0x1f85c1['calleridnum']);})[_0x5566('0x20')](function(_0x27ccbf){_0x347148=_0x27ccbf;logger[_0x5566('0xc')](_0x5566('0x4b'),_0x347148['id']);return getTicket(_0xa6a1b9,_0x2f4686,_0x347148,_0x241a97,_0x1f85c1);})[_0x5566('0x20')](function(_0x2a708e){if(_0x2a708e){logger[_0x5566('0xc')](_0x5566('0x4c'));logger[_0x5566('0xc')](_0x5566('0x4d'),_0x2a708e['id']);}})['catch'](function(_0x2d07f3){logger[_0x5566('0x58')]('['+_0x1f85c1[_0x5566('0x5a')][_0x5566('0x5b')]()+']',JSON['stringify'](_0x2d07f3));});};