Built motion from commit (unavailable).|2.5.20
[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 _0x7ec2=['body','status','json','userId','callNumber','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','bluebird','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','name','send','NotFound','request','then','message','result','catch','User','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:'];(function(_0x1b4c04,_0x8d961d){var _0x374f5d=function(_0x11dc31){while(--_0x11dc31){_0x1b4c04['push'](_0x1b4c04['shift']());}};_0x374f5d(++_0x8d961d);}(_0x7ec2,0x15c));var _0x27ec=function(_0xca4f9a,_0xa98838){_0xca4f9a=_0xca4f9a-0x0;var _0x462ec7=_0x7ec2[_0xca4f9a];return _0x462ec7;};'use strict';var path=require(_0x27ec('0x0'));var fs=require('fs');var _=require(_0x27ec('0x1'));var db=require(_0x27ec('0x2'))['db'];var config=require('../../config/environment');var util=require(_0x27ec('0x3'));var BPromise=require(_0x27ec('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0x27ec('0x5')][_0x27ec('0x6')]({'port':0x232a});var logger=require(_0x27ec('0x7'))(_0x27ec('0x8'));var Redis=require(_0x27ec('0x9'));config[_0x27ec('0xa')]=_[_0x27ec('0xb')](config[_0x27ec('0xa')],{'host':_0x27ec('0xc'),'port':0x18eb});var io=require(_0x27ec('0xd'))(new Redis(config[_0x27ec('0xa')]));var Schema=require(_0x27ec('0xe'));var originateValidation=new Schema({'userId':{'type':_0x27ec('0xf'),'required':[!![],_0x27ec('0x10')]},'callNumber':{'type':_0x27ec('0x11'),'required':[!![],_0x27ec('0x12')]},'callerId':{'type':_0x27ec('0x11')},'callbackUrl':{'type':_0x27ec('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x27ec('0xf'),'required':[!![],_0x27ec('0x10')]},'sessionId':{'type':_0x27ec('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x27ec('0x10')]},'sessionId':{'type':_0x27ec('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x27ec('0xf'),'required':[!![],_0x27ec('0x10')]},'sessionId':{'type':'string','required':[!![],_0x27ec('0x13')]},'transferNumber':{'type':'string','required':[!![],_0x27ec('0x14')]}});var holdValidation=new Schema({'userId':{'type':_0x27ec('0xf'),'required':[!![],_0x27ec('0x10')]},'sessionId':{'type':_0x27ec('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x27ec('0xf'),'required':[!![],_0x27ec('0x10')]},'sessionId':{'type':_0x27ec('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x27ec('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x27ec('0xf'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x56bf7d,_0x26f35a,_0x4f8035){logger[_0x27ec('0x15')](_0x56bf7d,_0x26f35a,JSON[_0x27ec('0x16')](_0x4f8035));io['to'](_0x56bf7d)[_0x27ec('0x17')](_0x26f35a,_0x4f8035);}function handleError(_0x2dec35){return function(_0x54b2c9){console[_0x27ec('0x18')](_0x27ec('0x19'),_0x54b2c9,_0x54b2c9 instanceof RangeError);logger[_0x27ec('0x1a')](_0x54b2c9['stack']);if(_0x54b2c9 instanceof RangeError){if(_0x54b2c9[_0x27ec('0x1b')]){delete _0x54b2c9[_0x27ec('0x1b')];}_0x2dec35['status'](0x194)[_0x27ec('0x1c')](_0x54b2c9);}else{if(_0x54b2c9[_0x27ec('0x1b')]){delete _0x54b2c9['name'];}_0x2dec35['status'](0x1f4)[_0x27ec('0x1c')](_0x54b2c9);}};}function checkError(){return function(_0x1ee6cb){if(!_0x1ee6cb){throw new RangeError(_0x27ec('0x1d'));}return _0x1ee6cb;};}function respondWithRpcPromise(_0x80891d,_0x3e94f1){return new BPromise(function(_0x4b7f24,_0x19fe3f){var _0x1ba9c8=amiClient;return _0x1ba9c8[_0x27ec('0x1e')](_0x80891d,_0x3e94f1)[_0x27ec('0x1f')](function(_0x4e4532){if(_0x4e4532['error']){if(_0x4e4532[_0x27ec('0x1a')]['code']===0x1f4){return _0x19fe3f(_0x4e4532[_0x27ec('0x1a')][_0x27ec('0x20')]);}return _0x4b7f24(_0x4e4532['error'][_0x27ec('0x20')]);}else{_0x4b7f24(_0x4e4532[_0x27ec('0x21')]);}})[_0x27ec('0x22')](function(_0x5b8262){_0x19fe3f(_0x5b8262);});});}function getAgent(_0x47db40){return db[_0x27ec('0x23')]['findOne']({'where':{'id':_0x47db40,'role':'agent'}})['then'](checkError());}function getAgentCheckSession(_0x4911f6,_0x44a2e4){return new BPromise(function(_0xf1ee48,_0x151df3){var _0x299ecf=respondWithRpcPromise(_0x27ec('0x24'));var _0x23cfe3=getAgent(_0x4911f6);Promise[_0x27ec('0x25')]([_0x299ecf,_0x23cfe3])[_0x27ec('0x1f')](function(_0x52d906){var _0x3c8fd2=_0x52d906[0x0];var _0x2fd45d=_0x52d906[0x1];var _0x5c8947=_[_0x27ec('0x26')](_0x3c8fd2[_0x27ec('0x27')],function(_0x45d2df){return _0x45d2df[_0x27ec('0x28')]==_0x2fd45d['id']&&_0x45d2df[_0x27ec('0x29')]==_0x44a2e4;});if(_0x5c8947[_0x27ec('0x2a')]==0x1){_0xf1ee48(_0x2fd45d);}else{_0x151df3(new RangeError(_0x27ec('0x2b')+_0x44a2e4+_0x27ec('0x2c')));}});});}exports[_0x27ec('0x2d')]=function(_0x23cbf2,_0x1e5494){logger['info'](_0x27ec('0x2e'),_0x23cbf2['body']);var _0x5d6235=originateValidation[_0x27ec('0xe')](_0x23cbf2[_0x27ec('0x2f')]);if(_0x5d6235['length']>0x0){return _0x1e5494[_0x27ec('0x30')](0x190)[_0x27ec('0x31')](_0x5d6235);}var _0x495df3=_0x23cbf2['body'][_0x27ec('0x32')];var _0xd28859=_0x23cbf2['body'][_0x27ec('0x33')];var _0x4ba2f3=_0x23cbf2[_0x27ec('0x2f')]['callerId'];var _0x165c14=_0x23cbf2[_0x27ec('0x2f')]['callbackUrl'];return getAgent(_0x495df3)[_0x27ec('0x1f')](function(_0x4c2e71){logger[_0x27ec('0x15')](_0x27ec('0x34'),_0x4c2e71[_0x27ec('0x1b')]);emit(util[_0x27ec('0x35')](_0x27ec('0x36'),_0x4c2e71[_0x27ec('0x1b')]),_0x27ec('0x37'),{'callNumber':_0xd28859,'callerId':_0x4ba2f3,'callbackUrl':_0x165c14});return _0x1e5494['status'](0xc8)[_0x27ec('0x31')]({'error':![],'message':_0x27ec('0x38')});})[_0x27ec('0x22')](handleError(_0x1e5494));};exports[_0x27ec('0x39')]=function(_0x1c6188,_0x2993b1){logger[_0x27ec('0x15')](_0x27ec('0x3a'),_0x1c6188[_0x27ec('0x2f')]);var _0x445bf0=hangupValidation[_0x27ec('0xe')](_0x1c6188[_0x27ec('0x2f')]);if(_0x445bf0[_0x27ec('0x2a')]>0x0){return _0x2993b1[_0x27ec('0x30')](0x190)[_0x27ec('0x31')](_0x445bf0);}var _0x316e1f=_0x1c6188['body'][_0x27ec('0x32')];var _0x4cdcd3=_0x1c6188[_0x27ec('0x2f')][_0x27ec('0x29')];return getAgent(_0x316e1f)['then'](function(_0x5794dc){logger[_0x27ec('0x15')](_0x27ec('0x34'),_0x5794dc['name']);emit(util[_0x27ec('0x35')](_0x27ec('0x36'),_0x5794dc[_0x27ec('0x1b')]),_0x27ec('0x3b'),{'sessionId':_0x4cdcd3});return _0x2993b1[_0x27ec('0x30')](0xc8)[_0x27ec('0x31')]({'error':![],'message':_0x27ec('0x3c')});})[_0x27ec('0x22')](handleError(_0x2993b1));};exports[_0x27ec('0x3d')]=function(_0x2eb273,_0x352d58){logger[_0x27ec('0x15')](_0x27ec('0x3e'),_0x2eb273[_0x27ec('0x2f')]);var _0x4bd067=answerValidation['validate'](_0x2eb273[_0x27ec('0x2f')]);if(_0x4bd067['length']>0x0){return _0x352d58[_0x27ec('0x30')](0x190)[_0x27ec('0x31')](_0x4bd067);}var _0x16e9a1=_0x2eb273[_0x27ec('0x2f')][_0x27ec('0x32')];var _0x1b2869=_0x2eb273[_0x27ec('0x2f')][_0x27ec('0x29')];return getAgent(_0x16e9a1)['then'](function(_0x19a7df){logger[_0x27ec('0x15')](_0x27ec('0x34'),_0x19a7df[_0x27ec('0x1b')]);emit(util[_0x27ec('0x35')](_0x27ec('0x36'),_0x19a7df['name']),_0x27ec('0x3f'),{'sessionId':_0x1b2869});return _0x352d58[_0x27ec('0x30')](0xc8)[_0x27ec('0x31')]({'error':![],'message':'answer\x20executed!'});})[_0x27ec('0x22')](handleError(_0x352d58));};exports[_0x27ec('0x40')]=function(_0x84a930,_0x173927){logger['info'](_0x27ec('0x41'),_0x84a930[_0x27ec('0x2f')]);var _0x5f349f=holdValidation[_0x27ec('0xe')](_0x84a930[_0x27ec('0x2f')]);if(_0x5f349f['length']>0x0){return _0x173927[_0x27ec('0x30')](0x190)[_0x27ec('0x31')](_0x5f349f);}var _0x2d6f7c=_0x84a930[_0x27ec('0x2f')][_0x27ec('0x32')];var _0x2ec281=_0x84a930[_0x27ec('0x2f')][_0x27ec('0x29')];return getAgent(_0x2d6f7c)[_0x27ec('0x1f')](function(_0x3d7ab0){logger['info'](_0x27ec('0x34'),_0x3d7ab0[_0x27ec('0x1b')]);emit(util[_0x27ec('0x35')](_0x27ec('0x36'),_0x3d7ab0[_0x27ec('0x1b')]),_0x27ec('0x42'),{'sessionId':_0x2ec281});return _0x173927[_0x27ec('0x30')](0xc8)[_0x27ec('0x31')]({'error':![],'message':_0x27ec('0x43')});})[_0x27ec('0x22')](handleError(_0x173927));};exports[_0x27ec('0x44')]=function(_0x2aa0d8,_0x474252){logger['info'](_0x27ec('0x45'),_0x2aa0d8[_0x27ec('0x2f')]);var _0x2aadf5=unholdValidation[_0x27ec('0xe')](_0x2aa0d8[_0x27ec('0x2f')]);if(_0x2aadf5[_0x27ec('0x2a')]>0x0){return _0x474252[_0x27ec('0x30')](0x190)[_0x27ec('0x31')](_0x2aadf5);}var _0x4ec2c9=_0x2aa0d8['body']['userId'];var _0x5aa872=_0x2aa0d8[_0x27ec('0x2f')]['sessionId'];return getAgent(_0x4ec2c9)[_0x27ec('0x1f')](function(_0x3f5c6e){logger[_0x27ec('0x15')](_0x27ec('0x34'),_0x3f5c6e[_0x27ec('0x1b')]);emit(util[_0x27ec('0x35')](_0x27ec('0x36'),_0x3f5c6e[_0x27ec('0x1b')]),_0x27ec('0x46'),{'sessionId':_0x5aa872});return _0x474252[_0x27ec('0x30')](0xc8)[_0x27ec('0x31')]({'error':![],'message':'unhold\x20executed!'});})[_0x27ec('0x22')](handleError(_0x474252));};exports[_0x27ec('0x47')]=function(_0x38c99c,_0xd3067a){logger['info'](_0x27ec('0x48'),_0xd3067a[_0x27ec('0x2f')]);var _0x4ff093=callsValidation[_0x27ec('0xe')](_0x38c99c[_0x27ec('0x2f')]);if(_0x4ff093['length']>0x0){return _0xd3067a[_0x27ec('0x30')](0x190)[_0x27ec('0x31')](_0x4ff093);}var _0x1d00d6=_0x38c99c[_0x27ec('0x2f')][_0x27ec('0x32')];var _0x4d307a=respondWithRpcPromise(_0x27ec('0x24'));var _0x22324e=getAgent(_0x1d00d6);return Promise[_0x27ec('0x25')]([_0x4d307a,_0x22324e])[_0x27ec('0x1f')](function(_0x59391b){var _0x1b0c5e=_0x59391b[0x0];var _0x1cb1bd=_0x59391b[0x1];var _0xfaa2e9=_[_0x27ec('0x26')](_0x1b0c5e['rows'],function(_0x1436fa){return _0x1436fa[_0x27ec('0x28')]==_0x1cb1bd['id'];});return _0xd3067a[_0x27ec('0x30')](0xc8)[_0x27ec('0x31')]({'count':_0xfaa2e9[_0x27ec('0x2a')],'rows':_0xfaa2e9});})['catch'](handleError(_0xd3067a));};exports[_0x27ec('0x49')]=function(_0x59c325,_0x378f86){logger[_0x27ec('0x15')](_0x27ec('0x4a'),_0x59c325[_0x27ec('0x2f')]);var _0x3fbbe1=conferenceValidation[_0x27ec('0xe')](_0x59c325[_0x27ec('0x2f')]);if(_0x3fbbe1[_0x27ec('0x2a')]>0x0){return _0x378f86[_0x27ec('0x30')](0x190)[_0x27ec('0x31')](_0x3fbbe1);}var _0x1291f4=_0x59c325[_0x27ec('0x2f')][_0x27ec('0x32')];return getAgent(_0x1291f4)[_0x27ec('0x1f')](function(_0x43a443){logger[_0x27ec('0x15')]('entityFound:',_0x43a443[_0x27ec('0x1b')]);emit(util[_0x27ec('0x35')](_0x27ec('0x36'),_0x43a443[_0x27ec('0x1b')]),'webbar:conference');return _0x378f86[_0x27ec('0x30')](0xc8)[_0x27ec('0x31')]({'error':![],'message':_0x27ec('0x4b')});})['catch'](handleError(_0x378f86));};exports['transfer']=function(_0x3c7ab7,_0x1ee50a){logger['info'](_0x27ec('0x4c'),_0x3c7ab7[_0x27ec('0x2f')]);var _0x345f1e=transferValidation['validate'](_0x3c7ab7[_0x27ec('0x2f')]);if(_0x345f1e[_0x27ec('0x2a')]>0x0){return _0x1ee50a['status'](0x190)[_0x27ec('0x31')](_0x345f1e);}var _0x4102e5=_0x3c7ab7['body'][_0x27ec('0x32')];var _0x1f2c36=_0x3c7ab7[_0x27ec('0x2f')][_0x27ec('0x29')];var _0x1a5dcc=_0x3c7ab7['body']['transferNumber'];return getAgent(_0x4102e5)[_0x27ec('0x1f')](function(_0x1a29d5){logger[_0x27ec('0x15')]('entityFound:',_0x1a29d5['name']);emit(util[_0x27ec('0x35')](_0x27ec('0x36'),_0x1a29d5[_0x27ec('0x1b')]),_0x27ec('0x4d'),{'sessionId':_0x1f2c36,'transferNumber':_0x1a5dcc});return _0x1ee50a[_0x27ec('0x30')](0xc8)[_0x27ec('0x31')]({'error':![],'message':_0x27ec('0x4e')});})[_0x27ec('0x22')](handleError(_0x1ee50a));};