Built motion from commit (unavailable).|2.5.16
[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 _0x52a0=['The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','destcalleridnum','[OUTBOUND]','error','unmanaged','lastevent','toUpperCase','catch','lodash','request-promise','md5','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','defaults','redis','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','keyBy','value','remoteUri','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','Agent\x20found!','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','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.','apiKey','base64','debug','[HTTP]','stringify','GET','string','nameField','customField','toLowerCase','toString','type','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:'];(function(_0x3bed62,_0x323924){var _0x4c9e4a=function(_0x5c74e1){while(--_0x5c74e1){_0x3bed62['push'](_0x3bed62['shift']());}};_0x4c9e4a(++_0x323924);}(_0x52a0,0xbd));var _0x052a=function(_0xea81a1,_0xb28e9e){_0xea81a1=_0xea81a1-0x0;var _0x2cd030=_0x52a0[_0xea81a1];return _0x2cd030;};'use strict';var _=require(_0x052a('0x0'));var rp=require(_0x052a('0x1'));var md5=require(_0x052a('0x2'));var util=require('util');var Redis=require(_0x052a('0x3'));var intUtil=require('./util');var config=require(_0x052a('0x4'));var logger=require(_0x052a('0x5'))(_0x052a('0x6'));config['redis']=_[_0x052a('0x7')](config[_0x052a('0x8')],{'host':_0x052a('0x9'),'port':0x18eb});var io=require(_0x052a('0xa'))(new Redis(config[_0x052a('0x8')]));var headers={'Content-Type':_0x052a('0xb'),'Accept':_0x052a('0xb')};function emit(_0x45ff94,_0xc5f1e3,_0xa8ed3d){io['to'](_0x45ff94)['emit'](_0xc5f1e3,_0xa8ed3d);}function getTicket(_0x25916a,_0x43b540,_0xbd1f24,_0x379daa,_0x581562){logger[_0x052a('0xc')](_0x052a('0xd'));var _0x4fccdf=_[_0x052a('0xe')]({'responder_id':_0x43b540['id'],'requester_id':_0xbd1f24['id'],'name':util[_0x052a('0xf')](_0x052a('0x10'),_0x581562['calleridname']),'phone':_0x581562[_0x052a('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x379daa['Subjects'],_0x581562,'\x20'),'description':intUtil[_0x052a('0x12')](_0x379daa[_0x052a('0x13')],_0x581562,_0x052a('0x14')),'tags':getTags(_0x379daa[_0x052a('0x15')],_0x052a('0x16'))},getCustomFields(_0x379daa[_0x052a('0x17')],_0x581562));_0x4fccdf[_0x052a('0x18')]=_['mapValues'](_[_0x052a('0x19')](_0x4fccdf[_0x052a('0x18')],'id'),_0x052a('0x1a'));return request({'uri':util[_0x052a('0xf')]('%s/api/v2/tickets',_0x25916a[_0x052a('0x1b')]),'method':'POST','body':_0x4fccdf})[_0x052a('0x1c')](function(_0x2008a3){logger[_0x052a('0xc')](_0x052a('0x1d'));return _0x2008a3;});}function getUser(_0xe54bfe,_0x288def){if(intUtil[_0x052a('0x1e')](_0x288def)){return request({'uri':util['format'](_0x052a('0x1f'),_0xe54bfe[_0x052a('0x1b')]),'qs':{'email':_0x288def}})[_0x052a('0x1c')](function(_0x26f133){if(_0x26f133['length']){logger[_0x052a('0xc')](_0x052a('0x20'));return _[_0x052a('0x21')](_0x26f133,function(_0x155871){return _0x155871['contact'][_0x052a('0x22')]===_0x288def;});}else{logger[_0x052a('0xc')](_0x052a('0x23'));return request({'uri':util[_0x052a('0xf')]('%s/api/v2/agents/me',_0xe54bfe[_0x052a('0x1b')])})[_0x052a('0x1c')](function(_0x474e8f){logger['info'](_0x052a('0x24'));return _0x474e8f;});}});}else{logger['info'](_0x052a('0x25'));return request({'uri':util[_0x052a('0xf')]('%s/api/v2/agents/me',_0xe54bfe['remoteUri'])})['then'](function(_0x16bb60){logger[_0x052a('0xc')](_0x052a('0x24'));return _0x16bb60;});}}function getEndUser(_0x35f854,_0x564088,_0x13a364){logger[_0x052a('0xc')](_0x052a('0x26'),_0x13a364);return request({'uri':util[_0x052a('0xf')](_0x052a('0x27'),_0x35f854[_0x052a('0x1b')]),'qs':{'phone':_0x13a364}})['then'](function(_0x549786){if(_0x549786[_0x052a('0x28')]){logger[_0x052a('0xc')](_0x052a('0x29'));return _[_0x052a('0x21')](_0x549786,{'phone':_0x13a364});}else{logger[_0x052a('0xc')](_0x052a('0x2a'));return request({'uri':util['format']('%s/api/v2/contacts',_0x35f854['remoteUri']),'method':'POST','body':{'name':_0x564088,'phone':_0x13a364}})['then'](function(_0x50ad5b){logger[_0x052a('0xc')](_0x052a('0x2b'));return _0x50ad5b;});}});}function getAuth(_0x8f5e28){return util['format']('Basic\x20%s',new Buffer(_0x8f5e28[_0x052a('0x2c')]+':X')['toString'](_0x052a('0x2d')));}function request(_0x32f792){logger[_0x052a('0x2e')](_0x052a('0x2f'),JSON[_0x052a('0x30')](_0x32f792));return rp(_['defaults'](_0x32f792,{'method':_0x052a('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x4f23f6,_0x1a3593){var _0x55d722=[];if(_0x4f23f6&&_0x4f23f6[_0x052a('0x28')]>0x0){_0x55d722=_['map'](_0x4f23f6,_0x1a3593);}return _0x55d722;}function getCustomFields(_0x3755f9,_0x26499c){var _0x4cde2=[];var _0x27e0b5={'custom_fields':[]};if(_0x3755f9[_0x052a('0x28')]>0x0){_['forEach'](_0x3755f9,function(_0x5313a2){if(_0x5313a2['type']===_0x052a('0x32')&&_0x5313a2[_0x052a('0x33')]&&!_0x5313a2[_0x052a('0x34')]){_0x27e0b5[_0x5313a2[_0x052a('0x33')][_0x052a('0x35')]()]=_0x5313a2['content'][_0x052a('0x36')]();}else if(_0x5313a2[_0x052a('0x37')]===_0x052a('0x32')&&_0x5313a2[_0x052a('0x38')]&&_0x5313a2['customField']){_0x27e0b5[_0x052a('0x18')][_0x052a('0x39')]({'id':_0x5313a2['idField'],'value':_0x5313a2['content'][_0x052a('0x36')]()});}else if(_0x5313a2[_0x052a('0x37')]===_0x052a('0x3a')&&_0x5313a2['variableName']&&_0x5313a2[_0x052a('0x38')]&&_0x5313a2['customField']){_0x26499c[_0x5313a2[_0x052a('0x3b')]]&&_0x27e0b5[_0x052a('0x18')][_0x052a('0x39')]({'id':_0x5313a2[_0x052a('0x38')],'value':_0x26499c[_0x5313a2[_0x052a('0x3b')]][_0x052a('0x36')]()});}else if(_0x5313a2[_0x052a('0x37')]===_0x052a('0x3c')&&_0x5313a2['Variable']&&_0x5313a2[_0x052a('0x3d')][_0x052a('0x16')]&&_0x5313a2[_0x052a('0x38')]&&_0x5313a2[_0x052a('0x34')]){_0x26499c[_0x5313a2[_0x052a('0x3d')][_0x052a('0x16')]['toLowerCase']()]&&_0x27e0b5[_0x052a('0x18')][_0x052a('0x39')]({'id':_0x5313a2[_0x052a('0x38')],'value':_0x26499c[_0x5313a2[_0x052a('0x3d')][_0x052a('0x16')]['toLowerCase']()]['toString']()});}});}return _0x27e0b5;}exports[_0x052a('0x3e')]=function(_0x4b852c,_0x1d6a3d,_0x569971,_0x25a9db,_0x6dda1d,_0x494647){var _0x134f08,_0x3a7989;_0x494647[_0x052a('0x1b')]=intUtil[_0x052a('0x3f')](_0x494647[_0x052a('0x1b')]);_0x494647[_0x052a('0x40')]=intUtil[_0x052a('0x3f')](_0x494647[_0x052a('0x40')]);if(_0x6dda1d&&_0x6dda1d[_0x052a('0x41')]){logger[_0x052a('0xc')](_0x052a('0x42'),_0x052a('0x43'));_0x1d6a3d[_0x052a('0x44')]=util[_0x052a('0xf')](_0x052a('0x45'),_0x494647['serverUrl'],_0x1d6a3d[_0x052a('0x46')],md5(_0x1d6a3d[_0x052a('0x46')]));}else{_0x1d6a3d[_0x052a('0x44')]='';}headers[_0x052a('0x47')]=getAuth(_0x494647);return getUser(_0x494647,_0x25a9db[_0x052a('0x22')])[_0x052a('0x1c')](function(_0x3b096a){_0x134f08=_0x3b096a;logger[_0x052a('0xc')](_0x052a('0x48'),_0x134f08['id']);return getEndUser(_0x494647,_0x1d6a3d[_0x052a('0x49')],_0x1d6a3d[_0x052a('0x11')]);})[_0x052a('0x1c')](function(_0x6409ed){_0x3a7989=_0x6409ed;logger[_0x052a('0xc')](_0x052a('0x4a'),_0x3a7989['id']);return getTicket(_0x494647,_0x134f08,_0x3a7989,_0x569971,_0x1d6a3d);})[_0x052a('0x1c')](function(_0x2b2bce){if(_0x2b2bce&&_0x2b2bce['id']){logger['info'](_0x052a('0x1d'));logger['info'](_0x052a('0x4b'),_0x2b2bce['id']);logger['info']('[QUEUE]',_0x052a('0x4c'));emit(util[_0x052a('0xf')]('user:%s',_0x25a9db['name']),_0x052a('0x4d'),{'uri':util[_0x052a('0xf')]('%s/helpdesk/tickets/%d',_0x494647[_0x052a('0x1b')],_0x2b2bce['id'])});}})['catch'](function(_0xab2d28){logger['error']('[QUEUE]',JSON[_0x052a('0x30')](_0xab2d28));});};exports[_0x052a('0x4e')]=function(_0x322604,_0x19379b,_0x19beb8,_0x563bbf,_0x57ed06,_0x4c8e7a,_0x2fb536){var _0x3e5a82,_0x4c6dff;_0x4c8e7a[_0x052a('0x1b')]=intUtil[_0x052a('0x3f')](_0x4c8e7a[_0x052a('0x1b')]);_0x4c8e7a['serverUrl']=intUtil['stripTrailingSlash'](_0x4c8e7a[_0x052a('0x40')]);if(_0x2fb536&&_0x2fb536[_0x052a('0x4f')]&&_0x2fb536[_0x052a('0x4f')]!==_0x052a('0x50')){logger[_0x052a('0xc')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x19379b[_0x052a('0x44')]=util[_0x052a('0xf')](_0x052a('0x45'),_0x4c8e7a['serverUrl'],_0x19379b['uniqueid'],md5(_0x19379b[_0x052a('0x46')]));}headers[_0x052a('0x47')]=getAuth(_0x4c8e7a);return getUser(_0x4c8e7a,_0x563bbf[_0x052a('0x22')])[_0x052a('0x1c')](function(_0x5ae9ff){_0x3e5a82=_0x5ae9ff;logger[_0x052a('0xc')]('The\x20User\x20ID\x20is:',_0x3e5a82['id']);return getEndUser(_0x4c8e7a,_0x19379b['destcalleridname'],_0x19379b[_0x052a('0x51')]);})[_0x052a('0x1c')](function(_0xbfa476){_0x4c6dff=_0xbfa476;logger[_0x052a('0xc')](_0x052a('0x4a'),_0x4c6dff['id']);return getTicket(_0x4c8e7a,_0x3e5a82,_0x4c6dff,_0x19beb8,_0x19379b);})['then'](function(_0x3e6907){if(_0x3e6907&&_0x3e6907['id']){logger[_0x052a('0xc')](_0x052a('0x1d'));logger[_0x052a('0xc')](_0x052a('0x4b'),_0x3e6907['id']);logger[_0x052a('0xc')](_0x052a('0x52'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x052a('0xf')]('user:%s',_0x563bbf[_0x052a('0x16')]),_0x052a('0x4d'),{'uri':util[_0x052a('0xf')]('%s/helpdesk/tickets/%d',_0x4c8e7a['remoteUri'],_0x3e6907['id'])});}})['catch'](function(_0x2eb546){logger[_0x052a('0x53')]('[OUTBOUND]',JSON[_0x052a('0x30')](_0x2eb546));});};exports[_0x052a('0x54')]=function(_0x238198,_0x16f48c,_0x25e472,_0x4b5385,_0x2a186d,_0xb82551){var _0x2f2eef,_0x592826;_0xb82551[_0x052a('0x1b')]=intUtil['stripTrailingSlash'](_0xb82551[_0x052a('0x1b')]);_0xb82551['serverUrl']=intUtil[_0x052a('0x3f')](_0xb82551[_0x052a('0x40')]);if(_0x2a186d&&_0x2a186d['monitor_format']){logger[_0x052a('0xc')]('['+_0x16f48c[_0x052a('0x55')][_0x052a('0x56')]()+']',_0x052a('0x43'));_0x16f48c[_0x052a('0x44')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xb82551[_0x052a('0x40')],_0x16f48c[_0x052a('0x46')],md5(_0x16f48c[_0x052a('0x46')]));}else{_0x16f48c[_0x052a('0x44')]='';}headers['Authorization']=getAuth(_0xb82551);return getUser(_0xb82551,'')['then'](function(_0x69eeda){_0x2f2eef=_0x69eeda;logger[_0x052a('0xc')]('The\x20User\x20ID\x20is:',_0x2f2eef['id']);return getEndUser(_0xb82551,_0x16f48c['calleridname'],_0x16f48c[_0x052a('0x11')]);})[_0x052a('0x1c')](function(_0x5981be){_0x592826=_0x5981be;logger[_0x052a('0xc')](_0x052a('0x4a'),_0x592826['id']);return getTicket(_0xb82551,_0x2f2eef,_0x592826,_0x25e472,_0x16f48c);})[_0x052a('0x1c')](function(_0x1c5053){if(_0x1c5053){logger[_0x052a('0xc')](_0x052a('0x1d'));logger[_0x052a('0xc')](_0x052a('0x4b'),_0x1c5053['id']);}})[_0x052a('0x57')](function(_0x56d57b){logger[_0x052a('0x53')]('['+_0x16f48c[_0x052a('0x55')][_0x052a('0x56')]()+']',JSON['stringify'](_0x56d57b));});};