Built motion from commit 85328c08.|2.5.50
[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 _0xedd9=['originate\x20executed!','hangup','hangup\x20fired:','status','webbar:hangup','answer\x20fired:','entityFound:','webbar:answer','answer\x20executed!','hold\x20fired:','hold\x20executed!','unhold','webbar:unhold','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','webbarapi','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','handleError:','stack','name','send','NotFound','then','error','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','format','user:%s','webbar:originate'];(function(_0x596b66,_0x45e85e){var _0x1a06ec=function(_0x337e3f){while(--_0x337e3f){_0x596b66['push'](_0x596b66['shift']());}};_0x1a06ec(++_0x45e85e);}(_0xedd9,0xfc));var _0x9edd=function(_0x395bbf,_0x13359b){_0x395bbf=_0x395bbf-0x0;var _0x150db2=_0xedd9[_0x395bbf];return _0x150db2;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x9edd('0x0'));var db=require(_0x9edd('0x1'))['db'];var config=require(_0x9edd('0x2'));var util=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var jayson=require(_0x9edd('0x5'));var amiClient=jayson[_0x9edd('0x6')][_0x9edd('0x7')]({'port':0x232a});var logger=require('../../config/logger')(_0x9edd('0x8'));var Redis=require(_0x9edd('0x9'));config[_0x9edd('0xa')]=_[_0x9edd('0xb')](config['redis'],{'host':_0x9edd('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9edd('0xa')]));var Schema=require(_0x9edd('0xd'));var originateValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],_0x9edd('0xf')]},'callNumber':{'type':'string','required':[!![],_0x9edd('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x9edd('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x9edd('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x9edd('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],_0x9edd('0xf')]},'sessionId':{'type':_0x9edd('0x11'),'required':[!![],_0x9edd('0x12')]},'transferNumber':{'type':_0x9edd('0x11'),'required':[!![],_0x9edd('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x9edd('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],_0x9edd('0xf')]},'sessionId':{'type':_0x9edd('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],_0x9edd('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':_0x9edd('0xe'),'required':[!![],_0x9edd('0xf')]}});function emit(_0x4ea60f,_0x5f5bf4,_0x448996){logger[_0x9edd('0x14')](_0x4ea60f,_0x5f5bf4,JSON['stringify'](_0x448996));io['to'](_0x4ea60f)[_0x9edd('0x15')](_0x5f5bf4,_0x448996);}function handleError(_0x35f454){return function(_0x40ba32){console['log'](_0x9edd('0x16'),_0x40ba32,_0x40ba32 instanceof RangeError);logger['error'](_0x40ba32[_0x9edd('0x17')]);if(_0x40ba32 instanceof RangeError){if(_0x40ba32[_0x9edd('0x18')]){delete _0x40ba32['name'];}_0x35f454['status'](0x194)[_0x9edd('0x19')](_0x40ba32);}else{if(_0x40ba32['name']){delete _0x40ba32[_0x9edd('0x18')];}_0x35f454['status'](0x1f4)['send'](_0x40ba32);}};}function checkError(){return function(_0x356751){if(!_0x356751){throw new RangeError(_0x9edd('0x1a'));}return _0x356751;};}function respondWithRpcPromise(_0x4fb7bf,_0x5823bc){return new BPromise(function(_0x341d67,_0x186186){var _0x477878=amiClient;return _0x477878['request'](_0x4fb7bf,_0x5823bc)[_0x9edd('0x1b')](function(_0x1dca43){if(_0x1dca43[_0x9edd('0x1c')]){if(_0x1dca43[_0x9edd('0x1c')][_0x9edd('0x1d')]===0x1f4){return _0x186186(_0x1dca43['error'][_0x9edd('0x1e')]);}return _0x341d67(_0x1dca43[_0x9edd('0x1c')][_0x9edd('0x1e')]);}else{_0x341d67(_0x1dca43[_0x9edd('0x1f')]);}})[_0x9edd('0x20')](function(_0x4d507f){_0x186186(_0x4d507f);});});}function getAgent(_0x4b3d1b){return db[_0x9edd('0x21')][_0x9edd('0x22')]({'where':{'id':_0x4b3d1b,'role':_0x9edd('0x23')}})[_0x9edd('0x1b')](checkError());}function getAgentCheckSession(_0x3c2227,_0x4fe471){return new BPromise(function(_0x57a2cc,_0x214d0a){var _0x257a26=respondWithRpcPromise(_0x9edd('0x24'));var _0x52746a=getAgent(_0x3c2227);Promise[_0x9edd('0x25')]([_0x257a26,_0x52746a])[_0x9edd('0x1b')](function(_0x2ae8dd){var _0x41af53=_0x2ae8dd[0x0];var _0x5eccfb=_0x2ae8dd[0x1];var _0x2155a1=_[_0x9edd('0x26')](_0x41af53[_0x9edd('0x27')],function(_0x12c1bc){return _0x12c1bc[_0x9edd('0x28')]==_0x5eccfb['id']&&_0x12c1bc[_0x9edd('0x29')]==_0x4fe471;});if(_0x2155a1[_0x9edd('0x2a')]==0x1){_0x57a2cc(_0x5eccfb);}else{_0x214d0a(new RangeError(_0x9edd('0x2b')+_0x4fe471+_0x9edd('0x2c')));}});});}exports[_0x9edd('0x2d')]=function(_0x4fd03f,_0x138002){logger[_0x9edd('0x14')](_0x9edd('0x2e'),_0x4fd03f[_0x9edd('0x2f')]);var _0x5af178=originateValidation[_0x9edd('0xd')](_0x4fd03f[_0x9edd('0x2f')]);if(_0x5af178[_0x9edd('0x2a')]>0x0){return _0x138002['status'](0x190)[_0x9edd('0x30')](_0x5af178);}var _0x3990fb=_0x4fd03f[_0x9edd('0x2f')][_0x9edd('0x31')];var _0x21bc30=_0x4fd03f[_0x9edd('0x2f')][_0x9edd('0x32')];var _0x438a5d=_0x4fd03f[_0x9edd('0x2f')][_0x9edd('0x33')];var _0x29e789=_0x4fd03f[_0x9edd('0x2f')][_0x9edd('0x34')];return getAgent(_0x3990fb)[_0x9edd('0x1b')](function(_0x5757fc){logger[_0x9edd('0x14')]('entityFound:',_0x5757fc[_0x9edd('0x18')]);emit(util[_0x9edd('0x35')](_0x9edd('0x36'),_0x5757fc[_0x9edd('0x18')]),_0x9edd('0x37'),{'callNumber':_0x21bc30,'callerId':_0x438a5d,'callbackUrl':_0x29e789});return _0x138002['status'](0xc8)[_0x9edd('0x30')]({'error':![],'message':_0x9edd('0x38')});})[_0x9edd('0x20')](handleError(_0x138002));};exports[_0x9edd('0x39')]=function(_0x1be77f,_0x337e6c){logger[_0x9edd('0x14')](_0x9edd('0x3a'),_0x1be77f[_0x9edd('0x2f')]);var _0x35c16f=hangupValidation['validate'](_0x1be77f[_0x9edd('0x2f')]);if(_0x35c16f['length']>0x0){return _0x337e6c[_0x9edd('0x3b')](0x190)['json'](_0x35c16f);}var _0x30883e=_0x1be77f[_0x9edd('0x2f')][_0x9edd('0x31')];var _0x479661=_0x1be77f[_0x9edd('0x2f')][_0x9edd('0x29')];return getAgent(_0x30883e)[_0x9edd('0x1b')](function(_0x48958a){logger[_0x9edd('0x14')]('entityFound:',_0x48958a[_0x9edd('0x18')]);emit(util[_0x9edd('0x35')]('user:%s',_0x48958a[_0x9edd('0x18')]),_0x9edd('0x3c'),{'sessionId':_0x479661});return _0x337e6c[_0x9edd('0x3b')](0xc8)[_0x9edd('0x30')]({'error':![],'message':'hangup\x20executed!'});})[_0x9edd('0x20')](handleError(_0x337e6c));};exports['answer']=function(_0x2bdb3f,_0xc1e657){logger['info'](_0x9edd('0x3d'),_0x2bdb3f['body']);var _0x548299=answerValidation[_0x9edd('0xd')](_0x2bdb3f[_0x9edd('0x2f')]);if(_0x548299[_0x9edd('0x2a')]>0x0){return _0xc1e657[_0x9edd('0x3b')](0x190)[_0x9edd('0x30')](_0x548299);}var _0x4737ae=_0x2bdb3f[_0x9edd('0x2f')][_0x9edd('0x31')];var _0x18c149=_0x2bdb3f[_0x9edd('0x2f')][_0x9edd('0x29')];return getAgent(_0x4737ae)[_0x9edd('0x1b')](function(_0x3d5eba){logger[_0x9edd('0x14')](_0x9edd('0x3e'),_0x3d5eba['name']);emit(util[_0x9edd('0x35')](_0x9edd('0x36'),_0x3d5eba[_0x9edd('0x18')]),_0x9edd('0x3f'),{'sessionId':_0x18c149});return _0xc1e657[_0x9edd('0x3b')](0xc8)[_0x9edd('0x30')]({'error':![],'message':_0x9edd('0x40')});})['catch'](handleError(_0xc1e657));};exports['hold']=function(_0x4bc7a1,_0x4a7dc9){logger['info'](_0x9edd('0x41'),_0x4bc7a1[_0x9edd('0x2f')]);var _0x2b06d3=holdValidation[_0x9edd('0xd')](_0x4bc7a1[_0x9edd('0x2f')]);if(_0x2b06d3['length']>0x0){return _0x4a7dc9[_0x9edd('0x3b')](0x190)[_0x9edd('0x30')](_0x2b06d3);}var _0x40e33d=_0x4bc7a1['body'][_0x9edd('0x31')];var _0xfd7bd1=_0x4bc7a1[_0x9edd('0x2f')][_0x9edd('0x29')];return getAgent(_0x40e33d)[_0x9edd('0x1b')](function(_0x35bdec){logger['info'](_0x9edd('0x3e'),_0x35bdec[_0x9edd('0x18')]);emit(util['format'](_0x9edd('0x36'),_0x35bdec[_0x9edd('0x18')]),'webbar:hold',{'sessionId':_0xfd7bd1});return _0x4a7dc9[_0x9edd('0x3b')](0xc8)[_0x9edd('0x30')]({'error':![],'message':_0x9edd('0x42')});})['catch'](handleError(_0x4a7dc9));};exports[_0x9edd('0x43')]=function(_0x151157,_0x317a60){logger[_0x9edd('0x14')]('unhold\x20fired:',_0x151157[_0x9edd('0x2f')]);var _0x527727=unholdValidation[_0x9edd('0xd')](_0x151157['body']);if(_0x527727[_0x9edd('0x2a')]>0x0){return _0x317a60[_0x9edd('0x3b')](0x190)['json'](_0x527727);}var _0x8e59bd=_0x151157['body'][_0x9edd('0x31')];var _0xe6b20c=_0x151157[_0x9edd('0x2f')][_0x9edd('0x29')];return getAgent(_0x8e59bd)[_0x9edd('0x1b')](function(_0x18548e){logger[_0x9edd('0x14')](_0x9edd('0x3e'),_0x18548e[_0x9edd('0x18')]);emit(util[_0x9edd('0x35')](_0x9edd('0x36'),_0x18548e['name']),_0x9edd('0x44'),{'sessionId':_0xe6b20c});return _0x317a60[_0x9edd('0x3b')](0xc8)[_0x9edd('0x30')]({'error':![],'message':'unhold\x20executed!'});})[_0x9edd('0x20')](handleError(_0x317a60));};exports['calls']=function(_0x54d83d,_0x54ecfa){logger[_0x9edd('0x14')](_0x9edd('0x45'),_0x54ecfa[_0x9edd('0x2f')]);var _0x35ddb3=callsValidation['validate'](_0x54d83d['body']);if(_0x35ddb3['length']>0x0){return _0x54ecfa[_0x9edd('0x3b')](0x190)[_0x9edd('0x30')](_0x35ddb3);}var _0xd5090a=_0x54d83d[_0x9edd('0x2f')][_0x9edd('0x31')];var _0x41ec97=respondWithRpcPromise(_0x9edd('0x24'));var _0x1e3087=getAgent(_0xd5090a);return Promise['all']([_0x41ec97,_0x1e3087])[_0x9edd('0x1b')](function(_0x49d0ce){var _0x421e82=_0x49d0ce[0x0];var _0x6a1cfc=_0x49d0ce[0x1];var _0x4b7e68=_[_0x9edd('0x26')](_0x421e82[_0x9edd('0x27')],function(_0x950e53){return _0x950e53['UserId']==_0x6a1cfc['id'];});return _0x54ecfa[_0x9edd('0x3b')](0xc8)[_0x9edd('0x30')]({'count':_0x4b7e68[_0x9edd('0x2a')],'rows':_0x4b7e68});})[_0x9edd('0x20')](handleError(_0x54ecfa));};exports[_0x9edd('0x46')]=function(_0x2c3173,_0x53f55b){logger['info'](_0x9edd('0x47'),_0x2c3173['body']);var _0x173ec9=conferenceValidation[_0x9edd('0xd')](_0x2c3173[_0x9edd('0x2f')]);if(_0x173ec9[_0x9edd('0x2a')]>0x0){return _0x53f55b['status'](0x190)[_0x9edd('0x30')](_0x173ec9);}var _0x507cce=_0x2c3173[_0x9edd('0x2f')][_0x9edd('0x31')];return getAgent(_0x507cce)[_0x9edd('0x1b')](function(_0x5ca123){logger[_0x9edd('0x14')]('entityFound:',_0x5ca123[_0x9edd('0x18')]);emit(util[_0x9edd('0x35')]('user:%s',_0x5ca123[_0x9edd('0x18')]),'webbar:conference');return _0x53f55b[_0x9edd('0x3b')](0xc8)[_0x9edd('0x30')]({'error':![],'message':_0x9edd('0x48')});})['catch'](handleError(_0x53f55b));};exports[_0x9edd('0x49')]=function(_0x321485,_0x45c17d){logger[_0x9edd('0x14')](_0x9edd('0x4a'),_0x321485['body']);var _0x48f017=transferValidation[_0x9edd('0xd')](_0x321485[_0x9edd('0x2f')]);if(_0x48f017['length']>0x0){return _0x45c17d['status'](0x190)['json'](_0x48f017);}var _0x1bc89b=_0x321485['body']['userId'];var _0x3ef9c9=_0x321485[_0x9edd('0x2f')]['sessionId'];var _0xb9ebeb=_0x321485[_0x9edd('0x2f')][_0x9edd('0x4b')];return getAgent(_0x1bc89b)['then'](function(_0x34b229){logger['info'](_0x9edd('0x3e'),_0x34b229[_0x9edd('0x18')]);emit(util['format'](_0x9edd('0x36'),_0x34b229[_0x9edd('0x18')]),'webbar:transfer',{'sessionId':_0x3ef9c9,'transferNumber':_0xb9ebeb});return _0x45c17d[_0x9edd('0x3b')](0xc8)[_0x9edd('0x30')]({'error':![],'message':_0x9edd('0x4c')});})[_0x9edd('0x20')](handleError(_0x45c17d));};