Built motion from commit (unavailable).|2.5.30
[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 _0x3aa2=['stringify','GET','forEach','string','picklist','type','nameField','toLowerCase','content','includes','idField','customField','push','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridname','calleridnum','[QUEUE]','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','unmanaged','lastevent','toUpperCase','lodash','request-promise','util','../../../../config/environment','../../../../config/logger','redis','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','Subjects','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','keyBy','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','Agent\x20found!','contact','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','length','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','toString','base64','[HTTP]'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x3aa2,0x13b));var _0x23aa=function(_0x174e6d,_0x45f4d1){_0x174e6d=_0x174e6d-0x0;var _0x27a7eb=_0x3aa2[_0x174e6d];return _0x27a7eb;};'use strict';var _=require(_0x23aa('0x0'));var rp=require(_0x23aa('0x1'));var md5=require('md5');var util=require(_0x23aa('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x23aa('0x3'));var logger=require(_0x23aa('0x4'))('freshdesk');config[_0x23aa('0x5')]=_['defaults'](config[_0x23aa('0x5')],{'host':_0x23aa('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x23aa('0x5')]));var headers={'Content-Type':_0x23aa('0x7'),'Accept':_0x23aa('0x7')};function emit(_0x5f3efd,_0x41bfc5,_0x3e2a05){io['to'](_0x5f3efd)[_0x23aa('0x8')](_0x41bfc5,_0x3e2a05);}function getTicket(_0x5c2595,_0x4b8b1a,_0xb70adc,_0x5100f4,_0x3f9456){logger[_0x23aa('0x9')](_0x23aa('0xa'));var _0x1891c7=_[_0x23aa('0xb')]({'responder_id':_0x4b8b1a['id'],'requester_id':_0xb70adc['id'],'name':util[_0x23aa('0xc')](_0x23aa('0xd'),_0x3f9456['calleridname']),'phone':_0x3f9456['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x5100f4[_0x23aa('0xe')],_0x3f9456,'\x20'),'description':intUtil[_0x23aa('0xf')](_0x5100f4[_0x23aa('0x10')],_0x3f9456,_0x23aa('0x11')),'tags':getTags(_0x5100f4[_0x23aa('0x12')],_0x23aa('0x13'))},getCustomFields(_0x5100f4[_0x23aa('0x14')],_0x3f9456));_0x1891c7[_0x23aa('0x15')]=_['mapValues'](_[_0x23aa('0x16')](_0x1891c7['custom_fields'],'id'),'value');return request({'uri':util[_0x23aa('0xc')](_0x23aa('0x17'),_0x5c2595[_0x23aa('0x18')]),'method':_0x23aa('0x19'),'body':_0x1891c7})[_0x23aa('0x1a')](function(_0x34e977){logger['info'](_0x23aa('0x1b'));return _0x34e977;});}function getUser(_0x3750c0,_0x4ff449){if(intUtil['validateEmail'](_0x4ff449)){return request({'uri':util['format']('%s/api/v2/agents',_0x3750c0[_0x23aa('0x18')]),'qs':{'email':_0x4ff449}})[_0x23aa('0x1a')](function(_0x14a8a){if(_0x14a8a['length']){logger[_0x23aa('0x9')](_0x23aa('0x1c'));return _['find'](_0x14a8a,function(_0x1c38cd){return _0x1c38cd[_0x23aa('0x1d')][_0x23aa('0x1e')]===_0x4ff449;});}else{logger[_0x23aa('0x9')](_0x23aa('0x1f'));return request({'uri':util[_0x23aa('0xc')](_0x23aa('0x20'),_0x3750c0[_0x23aa('0x18')])})[_0x23aa('0x1a')](function(_0x559af5){logger[_0x23aa('0x9')](_0x23aa('0x21'));return _0x559af5;});}});}else{logger[_0x23aa('0x9')](_0x23aa('0x22'));return request({'uri':util['format'](_0x23aa('0x20'),_0x3750c0['remoteUri'])})[_0x23aa('0x1a')](function(_0x3d7cc3){logger[_0x23aa('0x9')]('Admin\x20account\x20selected.');return _0x3d7cc3;});}}function getEndUser(_0x3201f7,_0x2a2059,_0x3e3adc){logger[_0x23aa('0x9')](_0x23aa('0x23'),_0x3e3adc);return request({'uri':util['format']('%s/api/v2/contacts',_0x3201f7[_0x23aa('0x18')]),'qs':{'phone':_0x3e3adc}})[_0x23aa('0x1a')](function(_0x1fd4f1){if(_0x1fd4f1[_0x23aa('0x24')]){logger[_0x23aa('0x9')](_0x23aa('0x25'));return _[_0x23aa('0x26')](_0x1fd4f1,{'phone':_0x3e3adc});}else{logger[_0x23aa('0x9')](_0x23aa('0x27'));return request({'uri':util[_0x23aa('0xc')](_0x23aa('0x28'),_0x3201f7[_0x23aa('0x18')]),'method':_0x23aa('0x19'),'body':{'name':_0x2a2059,'phone':_0x3e3adc}})[_0x23aa('0x1a')](function(_0x5a21e1){logger['info'](_0x23aa('0x29'));return _0x5a21e1;});}});}function getAuth(_0x40712d){return util[_0x23aa('0xc')]('Basic\x20%s',new Buffer(_0x40712d['apiKey']+':X')[_0x23aa('0x2a')](_0x23aa('0x2b')));}function request(_0x46553e){logger['debug'](_0x23aa('0x2c'),JSON[_0x23aa('0x2d')](_0x46553e));return rp(_['defaults'](_0x46553e,{'method':_0x23aa('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x25f96f,_0x563e2b){var _0x2bade0=[];if(_0x25f96f&&_0x25f96f[_0x23aa('0x24')]>0x0){_0x2bade0=_['map'](_0x25f96f,_0x563e2b);}return _0x2bade0;}function getCustomFields(_0x186c90,_0x33fba3){var _0x243366=[];var _0x230a77={'custom_fields':[]};if(_0x186c90[_0x23aa('0x24')]>0x0){_[_0x23aa('0x2f')](_0x186c90,function(_0x22a54f){if(_['includes']([_0x23aa('0x30'),_0x23aa('0x31')],_0x22a54f[_0x23aa('0x32')])&&_0x22a54f['nameField']&&!_0x22a54f['customField']){_0x230a77[_0x22a54f[_0x23aa('0x33')][_0x23aa('0x34')]()]=_0x22a54f[_0x23aa('0x35')]['toString']();}else if(_[_0x23aa('0x36')]([_0x23aa('0x30'),_0x23aa('0x31')],_0x22a54f[_0x23aa('0x32')])&&_0x22a54f[_0x23aa('0x37')]&&_0x22a54f[_0x23aa('0x38')]){_0x230a77[_0x23aa('0x15')][_0x23aa('0x39')]({'id':_0x22a54f[_0x23aa('0x37')],'value':_0x22a54f[_0x23aa('0x35')][_0x23aa('0x2a')]()});}else if(_0x22a54f[_0x23aa('0x32')]==='variable'&&_0x22a54f['variableName']&&_0x22a54f[_0x23aa('0x37')]&&_0x22a54f['customField']){_0x33fba3[_0x22a54f['variableName']]&&_0x230a77[_0x23aa('0x15')]['push']({'id':_0x22a54f[_0x23aa('0x37')],'value':_0x33fba3[_0x22a54f[_0x23aa('0x3a')]][_0x23aa('0x2a')]()});}else if(_0x22a54f['type']===_0x23aa('0x3b')&&_0x22a54f[_0x23aa('0x3c')]&&_0x22a54f[_0x23aa('0x3c')][_0x23aa('0x13')]&&_0x22a54f[_0x23aa('0x37')]&&_0x22a54f[_0x23aa('0x38')]){_0x33fba3[_0x22a54f[_0x23aa('0x3c')]['name'][_0x23aa('0x34')]()]&&_0x230a77['custom_fields'][_0x23aa('0x39')]({'id':_0x22a54f['idField'],'value':_0x33fba3[_0x22a54f['Variable']['name'][_0x23aa('0x34')]()]['toString']()});}});}return _0x230a77;}exports['queue']=function(_0xf0eff7,_0x173007,_0x373353,_0x128e1a,_0x3c9462,_0x570f18){var _0x5efce0,_0x2d0548;_0x570f18[_0x23aa('0x18')]=intUtil[_0x23aa('0x3d')](_0x570f18['remoteUri']);_0x570f18[_0x23aa('0x3e')]=intUtil['stripTrailingSlash'](_0x570f18[_0x23aa('0x3e')]);if(_0x3c9462&&_0x3c9462[_0x23aa('0x3f')]){logger[_0x23aa('0x9')]('[QUEUE]',_0x23aa('0x40'));_0x173007[_0x23aa('0x41')]=util['format'](_0x23aa('0x42'),_0x570f18['serverUrl'],_0x173007[_0x23aa('0x43')],md5(_0x173007[_0x23aa('0x43')]));}else{_0x173007[_0x23aa('0x41')]='';}headers[_0x23aa('0x44')]=getAuth(_0x570f18);return getUser(_0x570f18,_0x128e1a[_0x23aa('0x1e')])['then'](function(_0x3b9212){_0x5efce0=_0x3b9212;logger[_0x23aa('0x9')]('The\x20User\x20ID\x20is:',_0x5efce0['id']);return getEndUser(_0x570f18,_0x173007[_0x23aa('0x45')],_0x173007[_0x23aa('0x46')]);})[_0x23aa('0x1a')](function(_0x47e6d0){_0x2d0548=_0x47e6d0;logger[_0x23aa('0x9')]('The\x20Enduser\x20ID\x20is:',_0x2d0548['id']);return getTicket(_0x570f18,_0x5efce0,_0x2d0548,_0x373353,_0x173007);})[_0x23aa('0x1a')](function(_0xf6c40){if(_0xf6c40&&_0xf6c40['id']){logger[_0x23aa('0x9')](_0x23aa('0x1b'));logger[_0x23aa('0x9')]('The\x20Ticket\x20ID\x20is:',_0xf6c40['id']);logger[_0x23aa('0x9')](_0x23aa('0x47'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x23aa('0xc')](_0x23aa('0x48'),_0x128e1a[_0x23aa('0x13')]),_0x23aa('0x49'),{'uri':util[_0x23aa('0xc')]('%s/helpdesk/tickets/%d',_0x570f18[_0x23aa('0x18')],_0xf6c40['id'])});}})[_0x23aa('0x4a')](function(_0x5dd120){logger[_0x23aa('0x4b')](_0x23aa('0x47'),JSON[_0x23aa('0x2d')](_0x5dd120));});};exports[_0x23aa('0x4c')]=function(_0x2f6ff3,_0x5df566,_0x3dc1b5,_0x3de4d5,_0x3d1137,_0x468059,_0x56763b){var _0x1d72bd,_0x44b05a;_0x468059[_0x23aa('0x18')]=intUtil[_0x23aa('0x3d')](_0x468059['remoteUri']);_0x468059['serverUrl']=intUtil[_0x23aa('0x3d')](_0x468059[_0x23aa('0x3e')]);if(_0x56763b&&_0x56763b[_0x23aa('0x4d')]&&_0x56763b[_0x23aa('0x4d')]!==_0x23aa('0x4e')){logger[_0x23aa('0x9')](_0x23aa('0x4f'),_0x23aa('0x40'));_0x5df566[_0x23aa('0x41')]=util[_0x23aa('0xc')](_0x23aa('0x42'),_0x468059[_0x23aa('0x3e')],_0x5df566[_0x23aa('0x43')],md5(_0x5df566[_0x23aa('0x43')]));}headers[_0x23aa('0x44')]=getAuth(_0x468059);return getUser(_0x468059,_0x3de4d5['email'])[_0x23aa('0x1a')](function(_0x72d858){_0x1d72bd=_0x72d858;logger[_0x23aa('0x9')](_0x23aa('0x50'),_0x1d72bd['id']);return getEndUser(_0x468059,_0x5df566[_0x23aa('0x51')],_0x5df566[_0x23aa('0x52')]);})[_0x23aa('0x1a')](function(_0x47924c){_0x44b05a=_0x47924c;logger[_0x23aa('0x9')](_0x23aa('0x53'),_0x44b05a['id']);return getTicket(_0x468059,_0x1d72bd,_0x44b05a,_0x3dc1b5,_0x5df566);})['then'](function(_0x1469ee){if(_0x1469ee&&_0x1469ee['id']){logger[_0x23aa('0x9')](_0x23aa('0x1b'));logger[_0x23aa('0x9')](_0x23aa('0x54'),_0x1469ee['id']);logger[_0x23aa('0x9')]('[OUTBOUND]',_0x23aa('0x55'));emit(util[_0x23aa('0xc')](_0x23aa('0x48'),_0x3de4d5[_0x23aa('0x13')]),'trigger:browser:url',{'uri':util[_0x23aa('0xc')](_0x23aa('0x56'),_0x468059[_0x23aa('0x18')],_0x1469ee['id'])});}})[_0x23aa('0x4a')](function(_0x226560){logger[_0x23aa('0x4b')](_0x23aa('0x4f'),JSON[_0x23aa('0x2d')](_0x226560));});};exports[_0x23aa('0x57')]=function(_0xbce4a2,_0x270610,_0x317433,_0x5bdd3d,_0x12a0c8,_0x26c5cb){var _0x4d5ad8,_0x840948;_0x26c5cb['remoteUri']=intUtil[_0x23aa('0x3d')](_0x26c5cb['remoteUri']);_0x26c5cb[_0x23aa('0x3e')]=intUtil[_0x23aa('0x3d')](_0x26c5cb[_0x23aa('0x3e')]);if(_0x12a0c8&&_0x12a0c8[_0x23aa('0x3f')]){logger[_0x23aa('0x9')]('['+_0x270610[_0x23aa('0x58')]['toUpperCase']()+']',_0x23aa('0x40'));_0x270610['recordingURL']=util[_0x23aa('0xc')](_0x23aa('0x42'),_0x26c5cb['serverUrl'],_0x270610[_0x23aa('0x43')],md5(_0x270610[_0x23aa('0x43')]));}else{_0x270610[_0x23aa('0x41')]='';}headers[_0x23aa('0x44')]=getAuth(_0x26c5cb);return getUser(_0x26c5cb,'')['then'](function(_0x11475d){_0x4d5ad8=_0x11475d;logger[_0x23aa('0x9')](_0x23aa('0x50'),_0x4d5ad8['id']);return getEndUser(_0x26c5cb,_0x270610[_0x23aa('0x45')],_0x270610[_0x23aa('0x46')]);})['then'](function(_0x13b25b){_0x840948=_0x13b25b;logger['info'](_0x23aa('0x53'),_0x840948['id']);return getTicket(_0x26c5cb,_0x4d5ad8,_0x840948,_0x317433,_0x270610);})[_0x23aa('0x1a')](function(_0x5bcbbf){if(_0x5bcbbf){logger[_0x23aa('0x9')](_0x23aa('0x1b'));logger[_0x23aa('0x9')](_0x23aa('0x54'),_0x5bcbbf['id']);}})[_0x23aa('0x4a')](function(_0x6977b){logger[_0x23aa('0x4b')]('['+_0x270610['lastevent'][_0x23aa('0x59')]()+']',JSON[_0x23aa('0x2d')](_0x6977b));});};