Built motion from commit (unavailable).|2.5.30
[motion2.git] / server / api / webbar / webbar.controller.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 _0xb734=['answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','calls','all','rows','conference','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','validate','userId\x20is\x20required','callNumber\x20is\x20required','string','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','emit','log','handleError:','error','stack','name','send','status','message','result','catch','User','findOne','agent','VoiceChannels','then','filter','UserId','sessionId','length','sessionId\x20','originate','originate\x20fired:','body','userId','callNumber','callbackUrl','info','entityFound:','format','user:%s','webbar:originate','hangup','hangup\x20fired:','json','webbar:hangup','answer','answer\x20fired:'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb734,0xe3));var _0x4b73=function(_0xb875ee,_0x583042){_0xb875ee=_0xb875ee-0x0;var _0x4c7f3a=_0xb734[_0xb875ee];return _0x4c7f3a;};'use strict';var path=require(_0x4b73('0x0'));var fs=require('fs');var _=require(_0x4b73('0x1'));var db=require(_0x4b73('0x2'))['db'];var config=require(_0x4b73('0x3'));var util=require(_0x4b73('0x4'));var BPromise=require(_0x4b73('0x5'));var jayson=require('jayson/promise');var amiClient=jayson['client']['http']({'port':0x232a});var logger=require(_0x4b73('0x6'))(_0x4b73('0x7'));var Redis=require(_0x4b73('0x8'));config[_0x4b73('0x9')]=_[_0x4b73('0xa')](config[_0x4b73('0x9')],{'host':_0x4b73('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4b73('0x9')]));var Schema=require(_0x4b73('0xc'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4b73('0xd')]},'callNumber':{'type':'string','required':[!![],_0x4b73('0xe')]},'callerId':{'type':_0x4b73('0xf')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x4b73('0x10'),'required':[!![],_0x4b73('0xd')]},'sessionId':{'type':_0x4b73('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x4b73('0x10'),'required':[!![],_0x4b73('0xd')]},'sessionId':{'type':_0x4b73('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x4b73('0x10'),'required':[!![],_0x4b73('0xd')]},'sessionId':{'type':_0x4b73('0xf'),'required':[!![],_0x4b73('0x11')]},'transferNumber':{'type':_0x4b73('0xf'),'required':[!![],_0x4b73('0x12')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4b73('0xd')]},'sessionId':{'type':_0x4b73('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4b73('0xd')]},'sessionId':{'type':_0x4b73('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4b73('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x4b73('0x10'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x5286e5,_0x44ccde,_0x210219){logger['info'](_0x5286e5,_0x44ccde,JSON['stringify'](_0x210219));io['to'](_0x5286e5)[_0x4b73('0x13')](_0x44ccde,_0x210219);}function handleError(_0x221b81){return function(_0x5e6a98){console[_0x4b73('0x14')](_0x4b73('0x15'),_0x5e6a98,_0x5e6a98 instanceof RangeError);logger[_0x4b73('0x16')](_0x5e6a98[_0x4b73('0x17')]);if(_0x5e6a98 instanceof RangeError){if(_0x5e6a98[_0x4b73('0x18')]){delete _0x5e6a98['name'];}_0x221b81['status'](0x194)[_0x4b73('0x19')](_0x5e6a98);}else{if(_0x5e6a98[_0x4b73('0x18')]){delete _0x5e6a98[_0x4b73('0x18')];}_0x221b81[_0x4b73('0x1a')](0x1f4)['send'](_0x5e6a98);}};}function checkError(){return function(_0x5749d8){if(!_0x5749d8){throw new RangeError('NotFound');}return _0x5749d8;};}function respondWithRpcPromise(_0x4b2ca3,_0x1f6b8f){return new BPromise(function(_0x597a27,_0x3d5cdf){var _0x2d24f4=amiClient;return _0x2d24f4['request'](_0x4b2ca3,_0x1f6b8f)['then'](function(_0x1ea5fd){if(_0x1ea5fd['error']){if(_0x1ea5fd['error']['code']===0x1f4){return _0x3d5cdf(_0x1ea5fd[_0x4b73('0x16')]['message']);}return _0x597a27(_0x1ea5fd[_0x4b73('0x16')][_0x4b73('0x1b')]);}else{_0x597a27(_0x1ea5fd[_0x4b73('0x1c')]);}})[_0x4b73('0x1d')](function(_0x120a0b){_0x3d5cdf(_0x120a0b);});});}function getAgent(_0x4e81d2){return db[_0x4b73('0x1e')][_0x4b73('0x1f')]({'where':{'id':_0x4e81d2,'role':_0x4b73('0x20')}})['then'](checkError());}function getAgentCheckSession(_0x424b98,_0x5bf25f){return new BPromise(function(_0x523e03,_0x367307){var _0x45ec66=respondWithRpcPromise(_0x4b73('0x21'));var _0x5bd53d=getAgent(_0x424b98);Promise['all']([_0x45ec66,_0x5bd53d])[_0x4b73('0x22')](function(_0x4d54c3){var _0x5874f7=_0x4d54c3[0x0];var _0x21337d=_0x4d54c3[0x1];var _0xa34789=_[_0x4b73('0x23')](_0x5874f7['rows'],function(_0x5748ba){return _0x5748ba[_0x4b73('0x24')]==_0x21337d['id']&&_0x5748ba[_0x4b73('0x25')]==_0x5bf25f;});if(_0xa34789[_0x4b73('0x26')]==0x1){_0x523e03(_0x21337d);}else{_0x367307(new RangeError(_0x4b73('0x27')+_0x5bf25f+'\x20not\x20found!'));}});});}exports[_0x4b73('0x28')]=function(_0x5d8b73,_0x2bdfc5){logger['info'](_0x4b73('0x29'),_0x5d8b73[_0x4b73('0x2a')]);var _0x272fe8=originateValidation['validate'](_0x5d8b73[_0x4b73('0x2a')]);if(_0x272fe8['length']>0x0){return _0x2bdfc5['status'](0x190)['json'](_0x272fe8);}var _0x462e06=_0x5d8b73[_0x4b73('0x2a')][_0x4b73('0x2b')];var _0x3bf7dd=_0x5d8b73[_0x4b73('0x2a')][_0x4b73('0x2c')];var _0x1687d1=_0x5d8b73[_0x4b73('0x2a')]['callerId'];var _0x33fada=_0x5d8b73[_0x4b73('0x2a')][_0x4b73('0x2d')];return getAgent(_0x462e06)['then'](function(_0x20ea6e){logger[_0x4b73('0x2e')](_0x4b73('0x2f'),_0x20ea6e[_0x4b73('0x18')]);emit(util[_0x4b73('0x30')](_0x4b73('0x31'),_0x20ea6e[_0x4b73('0x18')]),_0x4b73('0x32'),{'callNumber':_0x3bf7dd,'callerId':_0x1687d1,'callbackUrl':_0x33fada});return _0x2bdfc5['status'](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})['catch'](handleError(_0x2bdfc5));};exports[_0x4b73('0x33')]=function(_0x5e543f,_0x570461){logger[_0x4b73('0x2e')](_0x4b73('0x34'),_0x5e543f[_0x4b73('0x2a')]);var _0xedc83a=hangupValidation['validate'](_0x5e543f['body']);if(_0xedc83a[_0x4b73('0x26')]>0x0){return _0x570461[_0x4b73('0x1a')](0x190)[_0x4b73('0x35')](_0xedc83a);}var _0x36cf65=_0x5e543f[_0x4b73('0x2a')][_0x4b73('0x2b')];var _0x432878=_0x5e543f[_0x4b73('0x2a')][_0x4b73('0x25')];return getAgent(_0x36cf65)['then'](function(_0x4616f8){logger['info'](_0x4b73('0x2f'),_0x4616f8[_0x4b73('0x18')]);emit(util[_0x4b73('0x30')]('user:%s',_0x4616f8[_0x4b73('0x18')]),_0x4b73('0x36'),{'sessionId':_0x432878});return _0x570461[_0x4b73('0x1a')](0xc8)[_0x4b73('0x35')]({'error':![],'message':'hangup\x20executed!'});})[_0x4b73('0x1d')](handleError(_0x570461));};exports[_0x4b73('0x37')]=function(_0x20bf2e,_0x4a8096){logger[_0x4b73('0x2e')](_0x4b73('0x38'),_0x20bf2e['body']);var _0x11c320=answerValidation['validate'](_0x20bf2e[_0x4b73('0x2a')]);if(_0x11c320[_0x4b73('0x26')]>0x0){return _0x4a8096[_0x4b73('0x1a')](0x190)[_0x4b73('0x35')](_0x11c320);}var _0x58ac1a=_0x20bf2e[_0x4b73('0x2a')][_0x4b73('0x2b')];var _0x28252c=_0x20bf2e['body']['sessionId'];return getAgent(_0x58ac1a)[_0x4b73('0x22')](function(_0x463aa5){logger[_0x4b73('0x2e')](_0x4b73('0x2f'),_0x463aa5[_0x4b73('0x18')]);emit(util[_0x4b73('0x30')](_0x4b73('0x31'),_0x463aa5['name']),'webbar:answer',{'sessionId':_0x28252c});return _0x4a8096[_0x4b73('0x1a')](0xc8)[_0x4b73('0x35')]({'error':![],'message':_0x4b73('0x39')});})[_0x4b73('0x1d')](handleError(_0x4a8096));};exports['hold']=function(_0x1c6b1d,_0x492c6d){logger[_0x4b73('0x2e')](_0x4b73('0x3a'),_0x1c6b1d[_0x4b73('0x2a')]);var _0x1fcc52=holdValidation[_0x4b73('0xc')](_0x1c6b1d[_0x4b73('0x2a')]);if(_0x1fcc52[_0x4b73('0x26')]>0x0){return _0x492c6d['status'](0x190)[_0x4b73('0x35')](_0x1fcc52);}var _0x37b24c=_0x1c6b1d[_0x4b73('0x2a')][_0x4b73('0x2b')];var _0x5813b8=_0x1c6b1d[_0x4b73('0x2a')][_0x4b73('0x25')];return getAgent(_0x37b24c)[_0x4b73('0x22')](function(_0x1088f8){logger[_0x4b73('0x2e')](_0x4b73('0x2f'),_0x1088f8[_0x4b73('0x18')]);emit(util[_0x4b73('0x30')]('user:%s',_0x1088f8[_0x4b73('0x18')]),_0x4b73('0x3b'),{'sessionId':_0x5813b8});return _0x492c6d[_0x4b73('0x1a')](0xc8)['json']({'error':![],'message':_0x4b73('0x3c')});})[_0x4b73('0x1d')](handleError(_0x492c6d));};exports['unhold']=function(_0x24509d,_0x49d027){logger['info']('unhold\x20fired:',_0x24509d[_0x4b73('0x2a')]);var _0x59dbfa=unholdValidation['validate'](_0x24509d['body']);if(_0x59dbfa[_0x4b73('0x26')]>0x0){return _0x49d027[_0x4b73('0x1a')](0x190)['json'](_0x59dbfa);}var _0x5526e8=_0x24509d[_0x4b73('0x2a')][_0x4b73('0x2b')];var _0x53d5eb=_0x24509d[_0x4b73('0x2a')][_0x4b73('0x25')];return getAgent(_0x5526e8)[_0x4b73('0x22')](function(_0x4b5336){logger[_0x4b73('0x2e')](_0x4b73('0x2f'),_0x4b5336[_0x4b73('0x18')]);emit(util[_0x4b73('0x30')](_0x4b73('0x31'),_0x4b5336[_0x4b73('0x18')]),'webbar:unhold',{'sessionId':_0x53d5eb});return _0x49d027['status'](0xc8)[_0x4b73('0x35')]({'error':![],'message':'unhold\x20executed!'});})[_0x4b73('0x1d')](handleError(_0x49d027));};exports[_0x4b73('0x3d')]=function(_0xbe111d,_0x540e54){logger['info']('calls\x20fired:',_0x540e54[_0x4b73('0x2a')]);var _0x2866a7=callsValidation['validate'](_0xbe111d[_0x4b73('0x2a')]);if(_0x2866a7[_0x4b73('0x26')]>0x0){return _0x540e54[_0x4b73('0x1a')](0x190)['json'](_0x2866a7);}var _0x2e4729=_0xbe111d[_0x4b73('0x2a')][_0x4b73('0x2b')];var _0x57b47d=respondWithRpcPromise('VoiceChannels');var _0x3e7ae9=getAgent(_0x2e4729);return Promise[_0x4b73('0x3e')]([_0x57b47d,_0x3e7ae9])[_0x4b73('0x22')](function(_0x353615){var _0x1e3b02=_0x353615[0x0];var _0x181aa0=_0x353615[0x1];var _0x229b1a=_['filter'](_0x1e3b02[_0x4b73('0x3f')],function(_0x348217){return _0x348217[_0x4b73('0x24')]==_0x181aa0['id'];});return _0x540e54[_0x4b73('0x1a')](0xc8)[_0x4b73('0x35')]({'count':_0x229b1a[_0x4b73('0x26')],'rows':_0x229b1a});})[_0x4b73('0x1d')](handleError(_0x540e54));};exports[_0x4b73('0x40')]=function(_0x4e756a,_0x126f16){logger[_0x4b73('0x2e')]('conference\x20fired:',_0x4e756a[_0x4b73('0x2a')]);var _0x5803d1=conferenceValidation[_0x4b73('0xc')](_0x4e756a['body']);if(_0x5803d1['length']>0x0){return _0x126f16['status'](0x190)[_0x4b73('0x35')](_0x5803d1);}var _0x3d6dc9=_0x4e756a[_0x4b73('0x2a')][_0x4b73('0x2b')];return getAgent(_0x3d6dc9)['then'](function(_0x244cef){logger[_0x4b73('0x2e')](_0x4b73('0x2f'),_0x244cef[_0x4b73('0x18')]);emit(util[_0x4b73('0x30')](_0x4b73('0x31'),_0x244cef[_0x4b73('0x18')]),_0x4b73('0x41'));return _0x126f16[_0x4b73('0x1a')](0xc8)['json']({'error':![],'message':_0x4b73('0x42')});})[_0x4b73('0x1d')](handleError(_0x126f16));};exports[_0x4b73('0x43')]=function(_0x19d632,_0x5a3f4a){logger[_0x4b73('0x2e')](_0x4b73('0x44'),_0x19d632[_0x4b73('0x2a')]);var _0x2212df=transferValidation[_0x4b73('0xc')](_0x19d632['body']);if(_0x2212df[_0x4b73('0x26')]>0x0){return _0x5a3f4a['status'](0x190)['json'](_0x2212df);}var _0x52c641=_0x19d632[_0x4b73('0x2a')][_0x4b73('0x2b')];var _0x4cc89c=_0x19d632[_0x4b73('0x2a')][_0x4b73('0x25')];var _0x4d272c=_0x19d632['body']['transferNumber'];return getAgent(_0x52c641)[_0x4b73('0x22')](function(_0x2169bb){logger[_0x4b73('0x2e')](_0x4b73('0x2f'),_0x2169bb[_0x4b73('0x18')]);emit(util['format'](_0x4b73('0x31'),_0x2169bb['name']),_0x4b73('0x45'),{'sessionId':_0x4cc89c,'transferNumber':_0x4d272c});return _0x5a3f4a[_0x4b73('0x1a')](0xc8)[_0x4b73('0x35')]({'error':![],'message':_0x4b73('0x46')});})[_0x4b73('0x1d')](handleError(_0x5a3f4a));};