Built motion from commit (unavailable).|2.5.6
[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 _0xae1d=['customField','push','variableName','customVariable','Variable','toLowerCase','queue','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Ticket\x20ID\x20is:','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','format','%s/api/v2/agents','length','Agent\x20found!','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','defaults','GET','map','forEach','string','nameField','content','type','idField'];(function(_0x10c899,_0x2f3145){var _0x333b79=function(_0x8fc7ec){while(--_0x8fc7ec){_0x10c899['push'](_0x10c899['shift']());}};_0x333b79(++_0x2f3145);}(_0xae1d,0x13f));var _0xdae1=function(_0x1753e0,_0x32ccd4){_0x1753e0=_0x1753e0-0x0;var _0xc9f908=_0xae1d[_0x1753e0];return _0xc9f908;};'use strict';var _=require(_0xdae1('0x0'));var rp=require(_0xdae1('0x1'));var md5=require(_0xdae1('0x2'));var util=require('util');var Redis=require(_0xdae1('0x3'));var intUtil=require(_0xdae1('0x4'));var config=require(_0xdae1('0x5'));var logger=require('../../../../config/logger')('freshdesk');config[_0xdae1('0x6')]=_['defaults'](config[_0xdae1('0x6')],{'host':_0xdae1('0x7'),'port':0x18eb});var io=require(_0xdae1('0x8'))(new Redis(config[_0xdae1('0x6')]));var headers={'Content-Type':_0xdae1('0x9'),'Accept':_0xdae1('0x9')};function emit(_0x2892cc,_0x56691b,_0xcc4e5e){io['to'](_0x2892cc)[_0xdae1('0xa')](_0x56691b,_0xcc4e5e);}function getTicket(_0xa9ba84,_0xf78276,_0x553069,_0x2fe275,_0x4d3e27){logger[_0xdae1('0xb')](_0xdae1('0xc'));var _0x54b67c=_['merge']({'responder_id':_0xf78276['id'],'requester_id':_0x553069['id'],'name':util['format'](_0xdae1('0xd'),_0x4d3e27[_0xdae1('0xe')]),'phone':_0x4d3e27[_0xdae1('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xdae1('0x10')](_0x2fe275[_0xdae1('0x11')],_0x4d3e27,'\x20'),'description':intUtil[_0xdae1('0x10')](_0x2fe275[_0xdae1('0x12')],_0x4d3e27,_0xdae1('0x13')),'tags':getTags(_0x2fe275[_0xdae1('0x14')],_0xdae1('0x15'))},getCustomFields(_0x2fe275[_0xdae1('0x16')],_0x4d3e27));_0x54b67c['custom_fields']=_[_0xdae1('0x17')](_[_0xdae1('0x18')](_0x54b67c[_0xdae1('0x19')],'id'),_0xdae1('0x1a'));return request({'uri':util['format'](_0xdae1('0x1b'),_0xa9ba84[_0xdae1('0x1c')]),'method':_0xdae1('0x1d'),'body':_0x54b67c})[_0xdae1('0x1e')](function(_0x198569){logger['info'](_0xdae1('0x1f'));return _0x198569;});}function getUser(_0x10953e,_0x57d644){if(intUtil['validateEmail'](_0x57d644)){return request({'uri':util[_0xdae1('0x20')](_0xdae1('0x21'),_0x10953e[_0xdae1('0x1c')]),'qs':{'email':_0x57d644}})['then'](function(_0x12809c){if(_0x12809c[_0xdae1('0x22')]){logger['info'](_0xdae1('0x23'));return _[_0xdae1('0x24')](_0x12809c,function(_0x57848a){return _0x57848a['contact']['email']===_0x57d644;});}else{logger[_0xdae1('0xb')](_0xdae1('0x25'));return request({'uri':util[_0xdae1('0x20')](_0xdae1('0x26'),_0x10953e[_0xdae1('0x1c')])})[_0xdae1('0x1e')](function(_0x1acd6a){logger[_0xdae1('0xb')](_0xdae1('0x27'));return _0x1acd6a;});}});}else{logger[_0xdae1('0xb')](_0xdae1('0x28'));return request({'uri':util[_0xdae1('0x20')](_0xdae1('0x26'),_0x10953e[_0xdae1('0x1c')])})[_0xdae1('0x1e')](function(_0x13e93f){logger[_0xdae1('0xb')](_0xdae1('0x27'));return _0x13e93f;});}}function getEndUser(_0x50f02f,_0x187f37,_0x53fa40){logger[_0xdae1('0xb')]('Searching\x20enduser\x20with\x20phone',_0x53fa40);return request({'uri':util[_0xdae1('0x20')](_0xdae1('0x29'),_0x50f02f[_0xdae1('0x1c')]),'qs':{'phone':_0x53fa40}})[_0xdae1('0x1e')](function(_0x297784){if(_0x297784[_0xdae1('0x22')]){logger[_0xdae1('0xb')](_0xdae1('0x2a'));return _[_0xdae1('0x24')](_0x297784,{'phone':_0x53fa40});}else{logger[_0xdae1('0xb')](_0xdae1('0x2b'));return request({'uri':util[_0xdae1('0x20')](_0xdae1('0x29'),_0x50f02f[_0xdae1('0x1c')]),'method':_0xdae1('0x1d'),'body':{'name':_0x187f37,'phone':_0x53fa40}})[_0xdae1('0x1e')](function(_0x4b0cb2){logger[_0xdae1('0xb')](_0xdae1('0x2c'));return _0x4b0cb2;});}});}function getAuth(_0x5347f2){return util['format'](_0xdae1('0x2d'),new Buffer(_0x5347f2[_0xdae1('0x2e')]+':X')[_0xdae1('0x2f')](_0xdae1('0x30')));}function request(_0x319020){logger[_0xdae1('0x31')](_0xdae1('0x32'),JSON[_0xdae1('0x33')](_0x319020));return rp(_[_0xdae1('0x34')](_0x319020,{'method':_0xdae1('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x440141,_0x5d64b2){var _0x35cc2f=[];if(_0x440141&&_0x440141[_0xdae1('0x22')]>0x0){_0x35cc2f=_[_0xdae1('0x36')](_0x440141,_0x5d64b2);}return _0x35cc2f;}function getCustomFields(_0x6e0232,_0x4d05d9){var _0x8ddbcf=[];var _0x45fdbf={'custom_fields':[]};if(_0x6e0232[_0xdae1('0x22')]>0x0){_[_0xdae1('0x37')](_0x6e0232,function(_0x1d276e){if(_0x1d276e['type']===_0xdae1('0x38')&&_0x1d276e['nameField']&&!_0x1d276e['customField']){_0x45fdbf[_0x1d276e[_0xdae1('0x39')]['toLowerCase']()]=_0x1d276e[_0xdae1('0x3a')]['toString']();}else if(_0x1d276e[_0xdae1('0x3b')]===_0xdae1('0x38')&&_0x1d276e[_0xdae1('0x3c')]&&_0x1d276e[_0xdae1('0x3d')]){_0x45fdbf[_0xdae1('0x19')][_0xdae1('0x3e')]({'id':_0x1d276e[_0xdae1('0x3c')],'value':_0x1d276e[_0xdae1('0x3a')][_0xdae1('0x2f')]()});}else if(_0x1d276e[_0xdae1('0x3b')]==='variable'&&_0x1d276e[_0xdae1('0x3f')]&&_0x1d276e['idField']&&_0x1d276e[_0xdae1('0x3d')]){_0x4d05d9[_0x1d276e[_0xdae1('0x3f')]]&&_0x45fdbf[_0xdae1('0x19')]['push']({'id':_0x1d276e[_0xdae1('0x3c')],'value':_0x4d05d9[_0x1d276e[_0xdae1('0x3f')]][_0xdae1('0x2f')]()});}else if(_0x1d276e[_0xdae1('0x3b')]===_0xdae1('0x40')&&_0x1d276e['Variable']&&_0x1d276e[_0xdae1('0x41')][_0xdae1('0x15')]&&_0x1d276e[_0xdae1('0x3c')]&&_0x1d276e[_0xdae1('0x3d')]){_0x4d05d9[_0x1d276e[_0xdae1('0x41')][_0xdae1('0x15')]['toLowerCase']()]&&_0x45fdbf['custom_fields'][_0xdae1('0x3e')]({'id':_0x1d276e['idField'],'value':_0x4d05d9[_0x1d276e[_0xdae1('0x41')]['name'][_0xdae1('0x42')]()][_0xdae1('0x2f')]()});}});}return _0x45fdbf;}exports[_0xdae1('0x43')]=function(_0x2cef1c,_0x46c332,_0x9795bf,_0x20a5a8,_0x455f97,_0x2e3f5a){var _0x45de30,_0x3faa5a;_0x2e3f5a[_0xdae1('0x1c')]=intUtil['stripTrailingSlash'](_0x2e3f5a[_0xdae1('0x1c')]);_0x2e3f5a['serverUrl']=intUtil['stripTrailingSlash'](_0x2e3f5a[_0xdae1('0x44')]);if(_0x455f97&&_0x455f97[_0xdae1('0x45')]){logger['info'](_0xdae1('0x46'),_0xdae1('0x47'));_0x46c332[_0xdae1('0x48')]=util['format'](_0xdae1('0x49'),_0x2e3f5a['serverUrl'],_0x46c332['uniqueid'],md5(_0x46c332[_0xdae1('0x4a')]));}else{_0x46c332[_0xdae1('0x48')]='';}headers[_0xdae1('0x4b')]=getAuth(_0x2e3f5a);return getUser(_0x2e3f5a,_0x20a5a8[_0xdae1('0x4c')])[_0xdae1('0x1e')](function(_0x39dc81){_0x45de30=_0x39dc81;logger[_0xdae1('0xb')](_0xdae1('0x4d'),_0x45de30['id']);return getEndUser(_0x2e3f5a,_0x46c332[_0xdae1('0xe')],_0x46c332[_0xdae1('0xf')]);})['then'](function(_0x59576c){_0x3faa5a=_0x59576c;logger[_0xdae1('0xb')](_0xdae1('0x4e'),_0x3faa5a['id']);return getTicket(_0x2e3f5a,_0x45de30,_0x3faa5a,_0x9795bf,_0x46c332);})[_0xdae1('0x1e')](function(_0x13f5d9){if(_0x13f5d9&&_0x13f5d9['id']){logger[_0xdae1('0xb')](_0xdae1('0x1f'));logger[_0xdae1('0xb')]('The\x20Ticket\x20ID\x20is:',_0x13f5d9['id']);logger[_0xdae1('0xb')]('[QUEUE]',_0xdae1('0x4f'));emit(util[_0xdae1('0x20')](_0xdae1('0x50'),_0x20a5a8[_0xdae1('0x15')]),'trigger:browser:url',{'uri':util[_0xdae1('0x20')](_0xdae1('0x51'),_0x2e3f5a[_0xdae1('0x1c')],_0x13f5d9['id'])});}})[_0xdae1('0x52')](function(_0x332c7d){logger[_0xdae1('0x53')](_0xdae1('0x46'),JSON[_0xdae1('0x33')](_0x332c7d));});};exports[_0xdae1('0x54')]=function(_0xbb0ee1,_0x55468b,_0x3a53b0,_0x45519d,_0x10c75e,_0x52225f,_0x24da41){var _0x370f81,_0x2a4a6e;_0x52225f[_0xdae1('0x1c')]=intUtil[_0xdae1('0x55')](_0x52225f[_0xdae1('0x1c')]);_0x52225f[_0xdae1('0x44')]=intUtil[_0xdae1('0x55')](_0x52225f[_0xdae1('0x44')]);if(_0x24da41&&_0x24da41[_0xdae1('0x56')]&&_0x24da41['recordingFormat']!==_0xdae1('0x57')){logger[_0xdae1('0xb')](_0xdae1('0x58'),_0xdae1('0x47'));_0x55468b[_0xdae1('0x48')]=util[_0xdae1('0x20')](_0xdae1('0x49'),_0x52225f['serverUrl'],_0x55468b['uniqueid'],md5(_0x55468b[_0xdae1('0x4a')]));}headers[_0xdae1('0x4b')]=getAuth(_0x52225f);return getUser(_0x52225f,_0x45519d[_0xdae1('0x4c')])['then'](function(_0x1ff22e){_0x370f81=_0x1ff22e;logger[_0xdae1('0xb')](_0xdae1('0x4d'),_0x370f81['id']);return getEndUser(_0x52225f,_0x55468b[_0xdae1('0x59')],_0x55468b['destcalleridnum']);})['then'](function(_0xae0cf9){_0x2a4a6e=_0xae0cf9;logger[_0xdae1('0xb')]('The\x20Enduser\x20ID\x20is:',_0x2a4a6e['id']);return getTicket(_0x52225f,_0x370f81,_0x2a4a6e,_0x3a53b0,_0x55468b);})[_0xdae1('0x1e')](function(_0x4afb6a){if(_0x4afb6a&&_0x4afb6a['id']){logger[_0xdae1('0xb')]('Ticket\x20created!');logger[_0xdae1('0xb')](_0xdae1('0x5a'),_0x4afb6a['id']);logger['info'](_0xdae1('0x58'),_0xdae1('0x4f'));emit(util[_0xdae1('0x20')](_0xdae1('0x50'),_0x45519d['name']),_0xdae1('0x5b'),{'uri':util[_0xdae1('0x20')]('%s/helpdesk/tickets/%d',_0x52225f['remoteUri'],_0x4afb6a['id'])});}})['catch'](function(_0x3b21ad){logger[_0xdae1('0x53')](_0xdae1('0x58'),JSON[_0xdae1('0x33')](_0x3b21ad));});};exports[_0xdae1('0x5c')]=function(_0x588296,_0x30ae8b,_0x5eaf43,_0x209c5a,_0x2aab54,_0x244bfe){var _0x487b53,_0x15a62c;_0x244bfe[_0xdae1('0x1c')]=intUtil[_0xdae1('0x55')](_0x244bfe[_0xdae1('0x1c')]);_0x244bfe[_0xdae1('0x44')]=intUtil['stripTrailingSlash'](_0x244bfe['serverUrl']);if(_0x2aab54&&_0x2aab54[_0xdae1('0x45')]){logger[_0xdae1('0xb')]('['+_0x30ae8b[_0xdae1('0x5d')][_0xdae1('0x5e')]()+']','Recording\x20is\x20enabled!');_0x30ae8b[_0xdae1('0x48')]=util[_0xdae1('0x20')](_0xdae1('0x49'),_0x244bfe[_0xdae1('0x44')],_0x30ae8b[_0xdae1('0x4a')],md5(_0x30ae8b[_0xdae1('0x4a')]));}else{_0x30ae8b[_0xdae1('0x48')]='';}headers[_0xdae1('0x4b')]=getAuth(_0x244bfe);return getUser(_0x244bfe,'')[_0xdae1('0x1e')](function(_0x3b32a7){_0x487b53=_0x3b32a7;logger[_0xdae1('0xb')]('The\x20User\x20ID\x20is:',_0x487b53['id']);return getEndUser(_0x244bfe,_0x30ae8b[_0xdae1('0xe')],_0x30ae8b[_0xdae1('0xf')]);})[_0xdae1('0x1e')](function(_0x594b8b){_0x15a62c=_0x594b8b;logger[_0xdae1('0xb')](_0xdae1('0x4e'),_0x15a62c['id']);return getTicket(_0x244bfe,_0x487b53,_0x15a62c,_0x5eaf43,_0x30ae8b);})[_0xdae1('0x1e')](function(_0xbbb229){if(_0xbbb229){logger[_0xdae1('0xb')](_0xdae1('0x1f'));logger['info'](_0xdae1('0x5a'),_0xbbb229['id']);}})['catch'](function(_0x38798f){logger[_0xdae1('0x53')]('['+_0x30ae8b['lastevent'][_0xdae1('0x5e')]()+']',JSON['stringify'](_0x38798f));});};