Built motion from commit (unavailable).|2.4.17
[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 _0x72cf=['Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','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','outbound','recordingFormat','none','destcalleridname','destcalleridnum','catch','abandoned','[ABANDONED]','lodash','request-promise','md5','util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','remoteUri','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','length','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','GET','map','forEach','type','string','customField','nameField','content','idField','push','variableName','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x72cf,0x1d2));var _0xf72c=function(_0x394fbc,_0xa36212){_0x394fbc=_0x394fbc-0x0;var _0x4ee2d1=_0x72cf[_0x394fbc];return _0x4ee2d1;};'use strict';var _=require(_0xf72c('0x0'));var rp=require(_0xf72c('0x1'));var md5=require(_0xf72c('0x2'));var util=require(_0xf72c('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xf72c('0x4'));var logger=require(_0xf72c('0x5'))(_0xf72c('0x6'));config[_0xf72c('0x7')]=_[_0xf72c('0x8')](config[_0xf72c('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xf72c('0x9'))(new Redis(config[_0xf72c('0x7')]));var headers={'Content-Type':_0xf72c('0xa'),'Accept':_0xf72c('0xa')};function emit(_0x2a2d7f,_0xb38bcb,_0x57b7f1){io['to'](_0x2a2d7f)[_0xf72c('0xb')](_0xb38bcb,_0x57b7f1);}function getTicket(_0x6b36e8,_0x2b9d20,_0x182d72,_0x89af3d,_0x1c8cd6){logger[_0xf72c('0xc')](_0xf72c('0xd'));var _0xd3732b=_['merge']({'responder_id':_0x2b9d20['id'],'requester_id':_0x182d72['id'],'name':util[_0xf72c('0xe')]('Caller\x20-\x20%s',_0x1c8cd6[_0xf72c('0xf')]),'phone':_0x1c8cd6[_0xf72c('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xf72c('0x11')](_0x89af3d[_0xf72c('0x12')],_0x1c8cd6,'\x20'),'description':intUtil[_0xf72c('0x11')](_0x89af3d[_0xf72c('0x13')],_0x1c8cd6,_0xf72c('0x14')),'tags':getTags(_0x89af3d[_0xf72c('0x15')],_0xf72c('0x16'))},getCustomFields(_0x89af3d[_0xf72c('0x17')],_0x1c8cd6));_0xd3732b[_0xf72c('0x18')]=_[_0xf72c('0x19')](_[_0xf72c('0x1a')](_0xd3732b[_0xf72c('0x18')],'id'),_0xf72c('0x1b'));return request({'uri':util[_0xf72c('0xe')]('%s/api/v2/tickets',_0x6b36e8[_0xf72c('0x1c')]),'method':'POST','body':_0xd3732b})['then'](function(_0x5b65f2){logger['info'](_0xf72c('0x1d'));return _0x5b65f2;});}function getUser(_0x297371,_0x53344f){if(intUtil[_0xf72c('0x1e')](_0x53344f)){return request({'uri':util['format'](_0xf72c('0x1f'),_0x297371['remoteUri']),'qs':{'email':_0x53344f}})[_0xf72c('0x20')](function(_0x4f41cb){if(_0x4f41cb[_0xf72c('0x21')]){logger[_0xf72c('0xc')]('Agent\x20found!');return _[_0xf72c('0x22')](_0x4f41cb,function(_0x47481e){return _0x47481e['contact'][_0xf72c('0x23')]===_0x53344f;});}else{logger['info'](_0xf72c('0x24'));return request({'uri':util[_0xf72c('0xe')]('%s/api/v2/agents/me',_0x297371[_0xf72c('0x1c')])})[_0xf72c('0x20')](function(_0x391784){logger[_0xf72c('0xc')]('Admin\x20account\x20selected.');return _0x391784;});}});}else{logger[_0xf72c('0xc')](_0xf72c('0x25'));return request({'uri':util[_0xf72c('0xe')]('%s/api/v2/agents/me',_0x297371[_0xf72c('0x1c')])})[_0xf72c('0x20')](function(_0x174644){logger[_0xf72c('0xc')](_0xf72c('0x26'));return _0x174644;});}}function getEndUser(_0x57756c,_0xa24a73,_0x500fb3){logger['info'](_0xf72c('0x27'),_0x500fb3);return request({'uri':util[_0xf72c('0xe')](_0xf72c('0x28'),_0x57756c['remoteUri']),'qs':{'phone':_0x500fb3}})[_0xf72c('0x20')](function(_0x40345e){if(_0x40345e['length']){logger[_0xf72c('0xc')](_0xf72c('0x29'));return _[_0xf72c('0x22')](_0x40345e,{'phone':_0x500fb3});}else{logger[_0xf72c('0xc')](_0xf72c('0x2a'));return request({'uri':util[_0xf72c('0xe')](_0xf72c('0x28'),_0x57756c['remoteUri']),'method':'POST','body':{'name':_0xa24a73,'phone':_0x500fb3}})[_0xf72c('0x20')](function(_0x56c9fe){logger[_0xf72c('0xc')](_0xf72c('0x2b'));return _0x56c9fe;});}});}function getAuth(_0xc81c53){return util[_0xf72c('0xe')](_0xf72c('0x2c'),new Buffer(_0xc81c53[_0xf72c('0x2d')]+':X')[_0xf72c('0x2e')]('base64'));}function request(_0x17691e){logger[_0xf72c('0x2f')](_0xf72c('0x30'),JSON[_0xf72c('0x31')](_0x17691e));return rp(_['defaults'](_0x17691e,{'method':_0xf72c('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x421f89,_0x425227){var _0x591152=[];if(_0x421f89&&_0x421f89[_0xf72c('0x21')]>0x0){_0x591152=_[_0xf72c('0x33')](_0x421f89,_0x425227);}return _0x591152;}function getCustomFields(_0x9ef7d1,_0x555707){var _0x20f649=[];var _0x3dd98f={'custom_fields':[]};if(_0x9ef7d1[_0xf72c('0x21')]>0x0){_[_0xf72c('0x34')](_0x9ef7d1,function(_0x465297){if(_0x465297[_0xf72c('0x35')]===_0xf72c('0x36')&&_0x465297['nameField']&&!_0x465297[_0xf72c('0x37')]){_0x3dd98f[_0x465297[_0xf72c('0x38')]['toLowerCase']()]=_0x465297[_0xf72c('0x39')]['toString']();}else if(_0x465297[_0xf72c('0x35')]==='string'&&_0x465297[_0xf72c('0x3a')]&&_0x465297[_0xf72c('0x37')]){_0x3dd98f['custom_fields'][_0xf72c('0x3b')]({'id':_0x465297['idField'],'value':_0x465297[_0xf72c('0x39')][_0xf72c('0x2e')]()});}else if(_0x465297[_0xf72c('0x35')]==='variable'&&_0x465297[_0xf72c('0x3c')]&&_0x465297['idField']&&_0x465297[_0xf72c('0x37')]){_0x555707[_0x465297[_0xf72c('0x3c')]]&&_0x3dd98f[_0xf72c('0x18')][_0xf72c('0x3b')]({'id':_0x465297[_0xf72c('0x3a')],'value':_0x555707[_0x465297[_0xf72c('0x3c')]]['toString']()});}else if(_0x465297[_0xf72c('0x35')]==='customVariable'&&_0x465297[_0xf72c('0x3d')]&&_0x465297[_0xf72c('0x3d')][_0xf72c('0x16')]&&_0x465297['idField']&&_0x465297[_0xf72c('0x37')]){_0x555707[_0x465297[_0xf72c('0x3d')][_0xf72c('0x16')]['toLowerCase']()]&&_0x3dd98f[_0xf72c('0x18')][_0xf72c('0x3b')]({'id':_0x465297[_0xf72c('0x3a')],'value':_0x555707[_0x465297[_0xf72c('0x3d')][_0xf72c('0x16')][_0xf72c('0x3e')]()][_0xf72c('0x2e')]()});}});}return _0x3dd98f;}exports[_0xf72c('0x3f')]=function(_0x2343a5,_0x30a418,_0x46ce0a,_0x1bbc94,_0x4efb1c,_0x26c174){var _0xd5281c,_0x1947be;_0x26c174[_0xf72c('0x1c')]=intUtil[_0xf72c('0x40')](_0x26c174[_0xf72c('0x1c')]);_0x26c174[_0xf72c('0x41')]=intUtil[_0xf72c('0x40')](_0x26c174['serverUrl']);if(_0x4efb1c&&_0x4efb1c[_0xf72c('0x42')]){logger[_0xf72c('0xc')](_0xf72c('0x43'),_0xf72c('0x44'));_0x30a418[_0xf72c('0x45')]=util[_0xf72c('0xe')](_0xf72c('0x46'),_0x26c174[_0xf72c('0x41')],_0x30a418[_0xf72c('0x47')],md5(_0x30a418[_0xf72c('0x47')]));}else{_0x30a418['recordingURL']='';}headers[_0xf72c('0x48')]=getAuth(_0x26c174);return getUser(_0x26c174,_0x1bbc94['email'])[_0xf72c('0x20')](function(_0x198228){_0xd5281c=_0x198228;logger[_0xf72c('0xc')](_0xf72c('0x49'),_0xd5281c['id']);return getEndUser(_0x26c174,_0x30a418[_0xf72c('0xf')],_0x30a418[_0xf72c('0x10')]);})[_0xf72c('0x20')](function(_0x1e76ba){_0x1947be=_0x1e76ba;logger[_0xf72c('0xc')](_0xf72c('0x4a'),_0x1947be['id']);return getTicket(_0x26c174,_0xd5281c,_0x1947be,_0x46ce0a,_0x30a418);})['then'](function(_0x986ace){if(_0x986ace&&_0x986ace['id']){logger[_0xf72c('0xc')]('Ticket\x20created!');logger[_0xf72c('0xc')](_0xf72c('0x4b'),_0x986ace['id']);logger[_0xf72c('0xc')]('[QUEUE]',_0xf72c('0x4c'));emit(util[_0xf72c('0xe')](_0xf72c('0x4d'),_0x1bbc94[_0xf72c('0x16')]),_0xf72c('0x4e'),{'uri':util[_0xf72c('0xe')](_0xf72c('0x4f'),_0x26c174[_0xf72c('0x1c')],_0x986ace['id'])});}})['catch'](function(_0x5821a2){logger[_0xf72c('0x50')](_0xf72c('0x43'),JSON['stringify'](_0x5821a2));});};exports[_0xf72c('0x51')]=function(_0x2c1566,_0x40d0c0,_0x419f46,_0x558e55,_0x175587,_0x21be5a,_0x2a16b3){var _0x3ae001,_0x247226;_0x21be5a[_0xf72c('0x1c')]=intUtil[_0xf72c('0x40')](_0x21be5a[_0xf72c('0x1c')]);_0x21be5a['serverUrl']=intUtil[_0xf72c('0x40')](_0x21be5a[_0xf72c('0x41')]);if(_0x2a16b3&&_0x2a16b3[_0xf72c('0x52')]&&_0x2a16b3[_0xf72c('0x52')]!==_0xf72c('0x53')){logger[_0xf72c('0xc')]('[OUTBOUND]',_0xf72c('0x44'));_0x40d0c0['recordingURL']=util[_0xf72c('0xe')](_0xf72c('0x46'),_0x21be5a[_0xf72c('0x41')],_0x40d0c0[_0xf72c('0x47')],md5(_0x40d0c0[_0xf72c('0x47')]));}headers['Authorization']=getAuth(_0x21be5a);return getUser(_0x21be5a,_0x558e55['email'])[_0xf72c('0x20')](function(_0x52d271){_0x3ae001=_0x52d271;logger[_0xf72c('0xc')](_0xf72c('0x49'),_0x3ae001['id']);return getEndUser(_0x21be5a,_0x40d0c0[_0xf72c('0x54')],_0x40d0c0[_0xf72c('0x55')]);})['then'](function(_0x151652){_0x247226=_0x151652;logger[_0xf72c('0xc')](_0xf72c('0x4a'),_0x247226['id']);return getTicket(_0x21be5a,_0x3ae001,_0x247226,_0x419f46,_0x40d0c0);})[_0xf72c('0x20')](function(_0x525366){if(_0x525366&&_0x525366['id']){logger[_0xf72c('0xc')](_0xf72c('0x1d'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x525366['id']);logger['info']('[OUTBOUND]',_0xf72c('0x4c'));emit(util[_0xf72c('0xe')](_0xf72c('0x4d'),_0x558e55[_0xf72c('0x16')]),_0xf72c('0x4e'),{'uri':util['format'](_0xf72c('0x4f'),_0x21be5a['remoteUri'],_0x525366['id'])});}})[_0xf72c('0x56')](function(_0x2f55ee){logger[_0xf72c('0x50')]('[OUTBOUND]',JSON['stringify'](_0x2f55ee));});};exports[_0xf72c('0x57')]=function(_0x4a4e90,_0x44d98f,_0x28bbf2,_0x48d3f2,_0x325866,_0x57a956){var _0x4dd134,_0x21cf8a;_0x57a956['remoteUri']=intUtil[_0xf72c('0x40')](_0x57a956[_0xf72c('0x1c')]);_0x57a956[_0xf72c('0x41')]=intUtil[_0xf72c('0x40')](_0x57a956[_0xf72c('0x41')]);if(_0x325866&&_0x325866[_0xf72c('0x42')]){logger[_0xf72c('0xc')](_0xf72c('0x58'),_0xf72c('0x44'));_0x44d98f['recordingURL']=util[_0xf72c('0xe')](_0xf72c('0x46'),_0x57a956[_0xf72c('0x41')],_0x44d98f[_0xf72c('0x47')],md5(_0x44d98f[_0xf72c('0x47')]));}else{_0x44d98f[_0xf72c('0x45')]='';}headers[_0xf72c('0x48')]=getAuth(_0x57a956);return getUser(_0x57a956,'')['then'](function(_0x22b19b){_0x4dd134=_0x22b19b;logger[_0xf72c('0xc')](_0xf72c('0x49'),_0x4dd134['id']);return getEndUser(_0x57a956,_0x44d98f[_0xf72c('0xf')],_0x44d98f[_0xf72c('0x10')]);})['then'](function(_0x388223){_0x21cf8a=_0x388223;logger[_0xf72c('0xc')](_0xf72c('0x4a'),_0x21cf8a['id']);return getTicket(_0x57a956,_0x4dd134,_0x21cf8a,_0x28bbf2,_0x44d98f);})[_0xf72c('0x20')](function(_0x3bc746){if(_0x3bc746){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x3bc746['id']);}})[_0xf72c('0x56')](function(_0x2c867e){logger[_0xf72c('0x50')]('[ABANDONED]',JSON[_0xf72c('0x31')](_0x2c867e));});};