Built motion from commit (unavailable).|2.5.0
[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 _0x92b2=['trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','lastevent','calleridname','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','calleridnum','getString','Descriptions','<br>','Tags','name','mapValues','keyBy','value','format','remoteUri','POST','%s/api/v2/agents','Agent\x20found!','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','then','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','toString','base64','debug','stringify','GET','map','forEach','type','string','toLowerCase','content','idField','customField','custom_fields','push','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x92b2,0xbe));var _0x292b=function(_0x4cb231,_0x3d3c5b){_0x4cb231=_0x4cb231-0x0;var _0x4d5063=_0x92b2[_0x4cb231];return _0x4d5063;};'use strict';var _=require(_0x292b('0x0'));var rp=require(_0x292b('0x1'));var md5=require(_0x292b('0x2'));var util=require(_0x292b('0x3'));var Redis=require('ioredis');var intUtil=require(_0x292b('0x4'));var config=require('../../../../config/environment');var logger=require(_0x292b('0x5'))(_0x292b('0x6'));config[_0x292b('0x7')]=_[_0x292b('0x8')](config[_0x292b('0x7')],{'host':_0x292b('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x292b('0x7')]));var headers={'Content-Type':_0x292b('0xa'),'Accept':'application/json'};function emit(_0x5a51d9,_0x12fde6,_0x3e3a01){io['to'](_0x5a51d9)[_0x292b('0xb')](_0x12fde6,_0x3e3a01);}function getTicket(_0x4a0d68,_0x192f41,_0x5235ce,_0x4cb7f7,_0x5be0c3){logger[_0x292b('0xc')](_0x292b('0xd'));var _0x314354=_[_0x292b('0xe')]({'responder_id':_0x192f41['id'],'requester_id':_0x5235ce['id'],'name':util['format']('Caller\x20-\x20%s',_0x5be0c3['calleridname']),'phone':_0x5be0c3[_0x292b('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x4cb7f7['Subjects'],_0x5be0c3,'\x20'),'description':intUtil[_0x292b('0x10')](_0x4cb7f7[_0x292b('0x11')],_0x5be0c3,_0x292b('0x12')),'tags':getTags(_0x4cb7f7[_0x292b('0x13')],_0x292b('0x14'))},getCustomFields(_0x4cb7f7['Fields'],_0x5be0c3));_0x314354['custom_fields']=_[_0x292b('0x15')](_[_0x292b('0x16')](_0x314354['custom_fields'],'id'),_0x292b('0x17'));return request({'uri':util[_0x292b('0x18')]('%s/api/v2/tickets',_0x4a0d68[_0x292b('0x19')]),'method':_0x292b('0x1a'),'body':_0x314354})['then'](function(_0x58bf04){logger[_0x292b('0xc')]('Ticket\x20created!');return _0x58bf04;});}function getUser(_0x4adfa1,_0xb10a5d){if(intUtil['validateEmail'](_0xb10a5d)){return request({'uri':util[_0x292b('0x18')](_0x292b('0x1b'),_0x4adfa1['remoteUri']),'qs':{'email':_0xb10a5d}})['then'](function(_0x38a350){if(_0x38a350['length']){logger[_0x292b('0xc')](_0x292b('0x1c'));return _[_0x292b('0x1d')](_0x38a350,function(_0x3c8e7f){return _0x3c8e7f['contact'][_0x292b('0x1e')]===_0xb10a5d;});}else{logger[_0x292b('0xc')](_0x292b('0x1f'));return request({'uri':util[_0x292b('0x18')](_0x292b('0x20'),_0x4adfa1[_0x292b('0x19')])})[_0x292b('0x21')](function(_0x7cf40a){logger[_0x292b('0xc')](_0x292b('0x22'));return _0x7cf40a;});}});}else{logger[_0x292b('0xc')](_0x292b('0x23'));return request({'uri':util['format'](_0x292b('0x20'),_0x4adfa1[_0x292b('0x19')])})['then'](function(_0x31db76){logger['info']('Admin\x20account\x20selected.');return _0x31db76;});}}function getEndUser(_0x44764c,_0x207632,_0x11530c){logger[_0x292b('0xc')](_0x292b('0x24'),_0x11530c);return request({'uri':util[_0x292b('0x18')](_0x292b('0x25'),_0x44764c[_0x292b('0x19')]),'qs':{'phone':_0x11530c}})[_0x292b('0x21')](function(_0x3f0116){if(_0x3f0116[_0x292b('0x26')]){logger['info'](_0x292b('0x27'));return _[_0x292b('0x1d')](_0x3f0116,{'phone':_0x11530c});}else{logger[_0x292b('0xc')](_0x292b('0x28'));return request({'uri':util[_0x292b('0x18')](_0x292b('0x25'),_0x44764c[_0x292b('0x19')]),'method':_0x292b('0x1a'),'body':{'name':_0x207632,'phone':_0x11530c}})[_0x292b('0x21')](function(_0x22c15c){logger[_0x292b('0xc')](_0x292b('0x29'));return _0x22c15c;});}});}function getAuth(_0x52c895){return util[_0x292b('0x18')](_0x292b('0x2a'),new Buffer(_0x52c895['apiKey']+':X')[_0x292b('0x2b')](_0x292b('0x2c')));}function request(_0x3a1f61){logger[_0x292b('0x2d')]('[HTTP]',JSON[_0x292b('0x2e')](_0x3a1f61));return rp(_['defaults'](_0x3a1f61,{'method':_0x292b('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x54430,_0x2d6577){var _0x4b7b14=[];if(_0x54430&&_0x54430[_0x292b('0x26')]>0x0){_0x4b7b14=_[_0x292b('0x30')](_0x54430,_0x2d6577);}return _0x4b7b14;}function getCustomFields(_0xfad03,_0x16762f){var _0x438385=[];var _0x5d7b2b={'custom_fields':[]};if(_0xfad03['length']>0x0){_[_0x292b('0x31')](_0xfad03,function(_0x380d9c){if(_0x380d9c[_0x292b('0x32')]===_0x292b('0x33')&&_0x380d9c['nameField']&&!_0x380d9c['customField']){_0x5d7b2b[_0x380d9c['nameField'][_0x292b('0x34')]()]=_0x380d9c[_0x292b('0x35')][_0x292b('0x2b')]();}else if(_0x380d9c[_0x292b('0x32')]===_0x292b('0x33')&&_0x380d9c[_0x292b('0x36')]&&_0x380d9c[_0x292b('0x37')]){_0x5d7b2b[_0x292b('0x38')][_0x292b('0x39')]({'id':_0x380d9c[_0x292b('0x36')],'value':_0x380d9c['content']['toString']()});}else if(_0x380d9c[_0x292b('0x32')]==='variable'&&_0x380d9c['variableName']&&_0x380d9c[_0x292b('0x36')]&&_0x380d9c[_0x292b('0x37')]){_0x16762f[_0x380d9c[_0x292b('0x3a')]]&&_0x5d7b2b[_0x292b('0x38')][_0x292b('0x39')]({'id':_0x380d9c[_0x292b('0x36')],'value':_0x16762f[_0x380d9c[_0x292b('0x3a')]][_0x292b('0x2b')]()});}else if(_0x380d9c[_0x292b('0x32')]===_0x292b('0x3b')&&_0x380d9c[_0x292b('0x3c')]&&_0x380d9c[_0x292b('0x3c')][_0x292b('0x14')]&&_0x380d9c[_0x292b('0x36')]&&_0x380d9c[_0x292b('0x37')]){_0x16762f[_0x380d9c[_0x292b('0x3c')]['name']['toLowerCase']()]&&_0x5d7b2b['custom_fields'][_0x292b('0x39')]({'id':_0x380d9c['idField'],'value':_0x16762f[_0x380d9c[_0x292b('0x3c')][_0x292b('0x14')][_0x292b('0x34')]()][_0x292b('0x2b')]()});}});}return _0x5d7b2b;}exports[_0x292b('0x3d')]=function(_0x4acc4f,_0x31d889,_0x5ddaa9,_0x295b90,_0x4bffae,_0xb5640d){var _0x591569,_0x2dfe0b;_0xb5640d[_0x292b('0x19')]=intUtil[_0x292b('0x3e')](_0xb5640d[_0x292b('0x19')]);_0xb5640d[_0x292b('0x3f')]=intUtil[_0x292b('0x3e')](_0xb5640d[_0x292b('0x3f')]);if(_0x4bffae&&_0x4bffae[_0x292b('0x40')]){logger[_0x292b('0xc')](_0x292b('0x41'),'Recording\x20is\x20enabled!');_0x31d889[_0x292b('0x42')]=util[_0x292b('0x18')](_0x292b('0x43'),_0xb5640d['serverUrl'],_0x31d889[_0x292b('0x44')],md5(_0x31d889[_0x292b('0x44')]));}else{_0x31d889['recordingURL']='';}headers['Authorization']=getAuth(_0xb5640d);return getUser(_0xb5640d,_0x295b90[_0x292b('0x1e')])['then'](function(_0x20ebe9){_0x591569=_0x20ebe9;logger['info'](_0x292b('0x45'),_0x591569['id']);return getEndUser(_0xb5640d,_0x31d889['calleridname'],_0x31d889[_0x292b('0xf')]);})[_0x292b('0x21')](function(_0x16cf77){_0x2dfe0b=_0x16cf77;logger[_0x292b('0xc')]('The\x20Enduser\x20ID\x20is:',_0x2dfe0b['id']);return getTicket(_0xb5640d,_0x591569,_0x2dfe0b,_0x5ddaa9,_0x31d889);})[_0x292b('0x21')](function(_0x58fd81){if(_0x58fd81&&_0x58fd81['id']){logger[_0x292b('0xc')](_0x292b('0x46'));logger[_0x292b('0xc')](_0x292b('0x47'),_0x58fd81['id']);logger[_0x292b('0xc')](_0x292b('0x41'),_0x292b('0x48'));emit(util['format'](_0x292b('0x49'),_0x295b90[_0x292b('0x14')]),_0x292b('0x4a'),{'uri':util[_0x292b('0x18')](_0x292b('0x4b'),_0xb5640d[_0x292b('0x19')],_0x58fd81['id'])});}})[_0x292b('0x4c')](function(_0x3f5138){logger[_0x292b('0x4d')](_0x292b('0x41'),JSON[_0x292b('0x2e')](_0x3f5138));});};exports['outbound']=function(_0x44ce7a,_0x3f423f,_0x4ae611,_0x4afb75,_0x275ee6,_0x4fa9c6,_0x188928){var _0x4105b9,_0x406b7a;_0x4fa9c6[_0x292b('0x19')]=intUtil['stripTrailingSlash'](_0x4fa9c6[_0x292b('0x19')]);_0x4fa9c6[_0x292b('0x3f')]=intUtil[_0x292b('0x3e')](_0x4fa9c6[_0x292b('0x3f')]);if(_0x188928&&_0x188928[_0x292b('0x4e')]&&_0x188928['recordingFormat']!==_0x292b('0x4f')){logger[_0x292b('0xc')](_0x292b('0x50'),_0x292b('0x51'));_0x3f423f['recordingURL']=util[_0x292b('0x18')](_0x292b('0x43'),_0x4fa9c6[_0x292b('0x3f')],_0x3f423f[_0x292b('0x44')],md5(_0x3f423f[_0x292b('0x44')]));}headers['Authorization']=getAuth(_0x4fa9c6);return getUser(_0x4fa9c6,_0x4afb75[_0x292b('0x1e')])[_0x292b('0x21')](function(_0x192c4e){_0x4105b9=_0x192c4e;logger['info'](_0x292b('0x45'),_0x4105b9['id']);return getEndUser(_0x4fa9c6,_0x3f423f[_0x292b('0x52')],_0x3f423f[_0x292b('0x53')]);})[_0x292b('0x21')](function(_0x24b40d){_0x406b7a=_0x24b40d;logger[_0x292b('0xc')](_0x292b('0x54'),_0x406b7a['id']);return getTicket(_0x4fa9c6,_0x4105b9,_0x406b7a,_0x4ae611,_0x3f423f);})['then'](function(_0xb7d9d9){if(_0xb7d9d9&&_0xb7d9d9['id']){logger['info']('Ticket\x20created!');logger[_0x292b('0xc')]('The\x20Ticket\x20ID\x20is:',_0xb7d9d9['id']);logger[_0x292b('0xc')](_0x292b('0x50'),_0x292b('0x48'));emit(util[_0x292b('0x18')](_0x292b('0x49'),_0x4afb75[_0x292b('0x14')]),'trigger:browser:url',{'uri':util[_0x292b('0x18')](_0x292b('0x4b'),_0x4fa9c6[_0x292b('0x19')],_0xb7d9d9['id'])});}})[_0x292b('0x4c')](function(_0x56d076){logger['error'](_0x292b('0x50'),JSON['stringify'](_0x56d076));});};exports['unmanaged']=function(_0x5f03b0,_0x4a8fa2,_0x4f7163,_0x109f06,_0x24e50b,_0x333ce8){var _0x581cce,_0x4f6d5a;_0x333ce8[_0x292b('0x19')]=intUtil[_0x292b('0x3e')](_0x333ce8[_0x292b('0x19')]);_0x333ce8[_0x292b('0x3f')]=intUtil[_0x292b('0x3e')](_0x333ce8[_0x292b('0x3f')]);if(_0x24e50b&&_0x24e50b['monitor_format']){logger['info']('['+_0x4a8fa2[_0x292b('0x55')]['toUpperCase']()+']',_0x292b('0x51'));_0x4a8fa2['recordingURL']=util['format'](_0x292b('0x43'),_0x333ce8['serverUrl'],_0x4a8fa2['uniqueid'],md5(_0x4a8fa2['uniqueid']));}else{_0x4a8fa2[_0x292b('0x42')]='';}headers['Authorization']=getAuth(_0x333ce8);return getUser(_0x333ce8,'')[_0x292b('0x21')](function(_0x36c785){_0x581cce=_0x36c785;logger[_0x292b('0xc')](_0x292b('0x45'),_0x581cce['id']);return getEndUser(_0x333ce8,_0x4a8fa2[_0x292b('0x56')],_0x4a8fa2['calleridnum']);})[_0x292b('0x21')](function(_0x56c602){_0x4f6d5a=_0x56c602;logger[_0x292b('0xc')](_0x292b('0x54'),_0x4f6d5a['id']);return getTicket(_0x333ce8,_0x581cce,_0x4f6d5a,_0x4f7163,_0x4a8fa2);})[_0x292b('0x21')](function(_0x56580a){if(_0x56580a){logger[_0x292b('0xc')](_0x292b('0x46'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x56580a['id']);}})[_0x292b('0x4c')](function(_0x470d61){logger[_0x292b('0x4d')]('['+_0x4a8fa2[_0x292b('0x55')][_0x292b('0x57')]()+']',JSON[_0x292b('0x2e')](_0x470d61));});};