Built motion from commit 14588770.|2.5.38
[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 _0x765e=['NotFound','request','then','code','message','result','User','findOne','agent','VoiceChannels','all','filter','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callbackUrl','format','user:%s','originate\x20executed!','catch','hangup','hangup\x20fired:','sessionId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','entityFound:','hold','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','rows','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','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','status','send'];(function(_0x392ab0,_0x5a7f70){var _0x495873=function(_0x4c5c34){while(--_0x4c5c34){_0x392ab0['push'](_0x392ab0['shift']());}};_0x495873(++_0x5a7f70);}(_0x765e,0x131));var _0xe765=function(_0x16a638,_0x4dc11c){_0x16a638=_0x16a638-0x0;var _0x38b590=_0x765e[_0x16a638];return _0x38b590;};'use strict';var path=require(_0xe765('0x0'));var fs=require('fs');var _=require(_0xe765('0x1'));var db=require(_0xe765('0x2'))['db'];var config=require(_0xe765('0x3'));var util=require(_0xe765('0x4'));var BPromise=require(_0xe765('0x5'));var jayson=require(_0xe765('0x6'));var amiClient=jayson[_0xe765('0x7')][_0xe765('0x8')]({'port':0x232a});var logger=require(_0xe765('0x9'))(_0xe765('0xa'));var Redis=require(_0xe765('0xb'));config[_0xe765('0xc')]=_[_0xe765('0xd')](config[_0xe765('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0xe765('0xe'))(new Redis(config[_0xe765('0xc')]));var Schema=require(_0xe765('0xf'));var originateValidation=new Schema({'userId':{'type':_0xe765('0x10'),'required':[!![],_0xe765('0x11')]},'callNumber':{'type':_0xe765('0x12'),'required':[!![],_0xe765('0x13')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xe765('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0xe765('0x10'),'required':[!![],_0xe765('0x11')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xe765('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe765('0x11')]},'sessionId':{'type':_0xe765('0x12'),'required':[!![],_0xe765('0x14')]},'transferNumber':{'type':_0xe765('0x12'),'required':[!![],_0xe765('0x15')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe765('0x11')]},'sessionId':{'type':_0xe765('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe765('0x10'),'required':[!![],_0xe765('0x11')]},'sessionId':{'type':_0xe765('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0xe765('0x10'),'required':[!![],_0xe765('0x11')]}});function emit(_0x3c887b,_0x4856fe,_0xb240d6){logger[_0xe765('0x16')](_0x3c887b,_0x4856fe,JSON[_0xe765('0x17')](_0xb240d6));io['to'](_0x3c887b)[_0xe765('0x18')](_0x4856fe,_0xb240d6);}function handleError(_0x2fcb46){return function(_0xf93371){console[_0xe765('0x19')](_0xe765('0x1a'),_0xf93371,_0xf93371 instanceof RangeError);logger[_0xe765('0x1b')](_0xf93371['stack']);if(_0xf93371 instanceof RangeError){if(_0xf93371[_0xe765('0x1c')]){delete _0xf93371['name'];}_0x2fcb46[_0xe765('0x1d')](0x194)[_0xe765('0x1e')](_0xf93371);}else{if(_0xf93371['name']){delete _0xf93371[_0xe765('0x1c')];}_0x2fcb46['status'](0x1f4)[_0xe765('0x1e')](_0xf93371);}};}function checkError(){return function(_0x368b7e){if(!_0x368b7e){throw new RangeError(_0xe765('0x1f'));}return _0x368b7e;};}function respondWithRpcPromise(_0x50970b,_0x51813d){return new BPromise(function(_0x4b789b,_0x1c6de4){var _0x2a4427=amiClient;return _0x2a4427[_0xe765('0x20')](_0x50970b,_0x51813d)[_0xe765('0x21')](function(_0x54b59c){if(_0x54b59c['error']){if(_0x54b59c[_0xe765('0x1b')][_0xe765('0x22')]===0x1f4){return _0x1c6de4(_0x54b59c[_0xe765('0x1b')][_0xe765('0x23')]);}return _0x4b789b(_0x54b59c[_0xe765('0x1b')]['message']);}else{_0x4b789b(_0x54b59c[_0xe765('0x24')]);}})['catch'](function(_0x2b1f66){_0x1c6de4(_0x2b1f66);});});}function getAgent(_0xff097f){return db[_0xe765('0x25')][_0xe765('0x26')]({'where':{'id':_0xff097f,'role':_0xe765('0x27')}})[_0xe765('0x21')](checkError());}function getAgentCheckSession(_0x471d57,_0x530838){return new BPromise(function(_0x55086d,_0x52476f){var _0x4bc5c1=respondWithRpcPromise(_0xe765('0x28'));var _0x3f7493=getAgent(_0x471d57);Promise[_0xe765('0x29')]([_0x4bc5c1,_0x3f7493])[_0xe765('0x21')](function(_0x1a8c01){var _0x4fce2c=_0x1a8c01[0x0];var _0x43349b=_0x1a8c01[0x1];var _0x865ae8=_[_0xe765('0x2a')](_0x4fce2c['rows'],function(_0x5947c1){return _0x5947c1[_0xe765('0x2b')]==_0x43349b['id']&&_0x5947c1['sessionId']==_0x530838;});if(_0x865ae8[_0xe765('0x2c')]==0x1){_0x55086d(_0x43349b);}else{_0x52476f(new RangeError(_0xe765('0x2d')+_0x530838+_0xe765('0x2e')));}});});}exports[_0xe765('0x2f')]=function(_0x3b659a,_0x56127d){logger['info'](_0xe765('0x30'),_0x3b659a[_0xe765('0x31')]);var _0x2eee38=originateValidation[_0xe765('0xf')](_0x3b659a[_0xe765('0x31')]);if(_0x2eee38['length']>0x0){return _0x56127d['status'](0x190)[_0xe765('0x32')](_0x2eee38);}var _0x5bdd4b=_0x3b659a[_0xe765('0x31')][_0xe765('0x33')];var _0xd7ce30=_0x3b659a[_0xe765('0x31')][_0xe765('0x34')];var _0x45fd85=_0x3b659a[_0xe765('0x31')]['callerId'];var _0x494213=_0x3b659a['body'][_0xe765('0x35')];return getAgent(_0x5bdd4b)[_0xe765('0x21')](function(_0x120ca9){logger[_0xe765('0x16')]('entityFound:',_0x120ca9[_0xe765('0x1c')]);emit(util[_0xe765('0x36')](_0xe765('0x37'),_0x120ca9[_0xe765('0x1c')]),'webbar:originate',{'callNumber':_0xd7ce30,'callerId':_0x45fd85,'callbackUrl':_0x494213});return _0x56127d[_0xe765('0x1d')](0xc8)['json']({'error':![],'message':_0xe765('0x38')});})[_0xe765('0x39')](handleError(_0x56127d));};exports[_0xe765('0x3a')]=function(_0x1f58ef,_0x1be855){logger[_0xe765('0x16')](_0xe765('0x3b'),_0x1f58ef[_0xe765('0x31')]);var _0xc6618c=hangupValidation[_0xe765('0xf')](_0x1f58ef['body']);if(_0xc6618c[_0xe765('0x2c')]>0x0){return _0x1be855[_0xe765('0x1d')](0x190)[_0xe765('0x32')](_0xc6618c);}var _0x531cce=_0x1f58ef['body']['userId'];var _0x43bea6=_0x1f58ef['body'][_0xe765('0x3c')];return getAgent(_0x531cce)[_0xe765('0x21')](function(_0x3be7d7){logger[_0xe765('0x16')]('entityFound:',_0x3be7d7[_0xe765('0x1c')]);emit(util[_0xe765('0x36')](_0xe765('0x37'),_0x3be7d7[_0xe765('0x1c')]),_0xe765('0x3d'),{'sessionId':_0x43bea6});return _0x1be855[_0xe765('0x1d')](0xc8)[_0xe765('0x32')]({'error':![],'message':_0xe765('0x3e')});})[_0xe765('0x39')](handleError(_0x1be855));};exports[_0xe765('0x3f')]=function(_0x495e4e,_0x3d3a24){logger['info'](_0xe765('0x40'),_0x495e4e[_0xe765('0x31')]);var _0x4d2814=answerValidation[_0xe765('0xf')](_0x495e4e['body']);if(_0x4d2814['length']>0x0){return _0x3d3a24['status'](0x190)[_0xe765('0x32')](_0x4d2814);}var _0xb77b5e=_0x495e4e[_0xe765('0x31')]['userId'];var _0x2de9de=_0x495e4e[_0xe765('0x31')][_0xe765('0x3c')];return getAgent(_0xb77b5e)[_0xe765('0x21')](function(_0x2f664c){logger[_0xe765('0x16')](_0xe765('0x41'),_0x2f664c[_0xe765('0x1c')]);emit(util[_0xe765('0x36')]('user:%s',_0x2f664c[_0xe765('0x1c')]),'webbar:answer',{'sessionId':_0x2de9de});return _0x3d3a24['status'](0xc8)[_0xe765('0x32')]({'error':![],'message':'answer\x20executed!'});})[_0xe765('0x39')](handleError(_0x3d3a24));};exports[_0xe765('0x42')]=function(_0x1707aa,_0x48b8a5){logger[_0xe765('0x16')]('hold\x20fired:',_0x1707aa[_0xe765('0x31')]);var _0x14421d=holdValidation[_0xe765('0xf')](_0x1707aa['body']);if(_0x14421d[_0xe765('0x2c')]>0x0){return _0x48b8a5[_0xe765('0x1d')](0x190)[_0xe765('0x32')](_0x14421d);}var _0x2d360e=_0x1707aa['body']['userId'];var _0x5391c8=_0x1707aa[_0xe765('0x31')][_0xe765('0x3c')];return getAgent(_0x2d360e)[_0xe765('0x21')](function(_0x58310d){logger[_0xe765('0x16')]('entityFound:',_0x58310d[_0xe765('0x1c')]);emit(util[_0xe765('0x36')](_0xe765('0x37'),_0x58310d[_0xe765('0x1c')]),_0xe765('0x43'),{'sessionId':_0x5391c8});return _0x48b8a5[_0xe765('0x1d')](0xc8)['json']({'error':![],'message':_0xe765('0x44')});})[_0xe765('0x39')](handleError(_0x48b8a5));};exports[_0xe765('0x45')]=function(_0x1214a8,_0x14c3b5){logger[_0xe765('0x16')]('unhold\x20fired:',_0x1214a8['body']);var _0x99f318=unholdValidation[_0xe765('0xf')](_0x1214a8[_0xe765('0x31')]);if(_0x99f318['length']>0x0){return _0x14c3b5[_0xe765('0x1d')](0x190)[_0xe765('0x32')](_0x99f318);}var _0x2be110=_0x1214a8[_0xe765('0x31')][_0xe765('0x33')];var _0x1f75a2=_0x1214a8[_0xe765('0x31')][_0xe765('0x3c')];return getAgent(_0x2be110)['then'](function(_0x4ae23b){logger[_0xe765('0x16')]('entityFound:',_0x4ae23b[_0xe765('0x1c')]);emit(util[_0xe765('0x36')](_0xe765('0x37'),_0x4ae23b['name']),_0xe765('0x46'),{'sessionId':_0x1f75a2});return _0x14c3b5[_0xe765('0x1d')](0xc8)['json']({'error':![],'message':_0xe765('0x47')});})[_0xe765('0x39')](handleError(_0x14c3b5));};exports[_0xe765('0x48')]=function(_0x457667,_0xabbaa1){logger[_0xe765('0x16')](_0xe765('0x49'),_0xabbaa1[_0xe765('0x31')]);var _0x45be53=callsValidation[_0xe765('0xf')](_0x457667[_0xe765('0x31')]);if(_0x45be53[_0xe765('0x2c')]>0x0){return _0xabbaa1[_0xe765('0x1d')](0x190)['json'](_0x45be53);}var _0x11c08a=_0x457667[_0xe765('0x31')][_0xe765('0x33')];var _0x3563a2=respondWithRpcPromise(_0xe765('0x28'));var _0x3d5553=getAgent(_0x11c08a);return Promise[_0xe765('0x29')]([_0x3563a2,_0x3d5553])[_0xe765('0x21')](function(_0x60844c){var _0x557217=_0x60844c[0x0];var _0x138118=_0x60844c[0x1];var _0x478d32=_[_0xe765('0x2a')](_0x557217[_0xe765('0x4a')],function(_0x4dd273){return _0x4dd273[_0xe765('0x2b')]==_0x138118['id'];});return _0xabbaa1[_0xe765('0x1d')](0xc8)[_0xe765('0x32')]({'count':_0x478d32[_0xe765('0x2c')],'rows':_0x478d32});})[_0xe765('0x39')](handleError(_0xabbaa1));};exports[_0xe765('0x4b')]=function(_0x414ec2,_0x4a19d8){logger[_0xe765('0x16')](_0xe765('0x4c'),_0x414ec2['body']);var _0x413849=conferenceValidation[_0xe765('0xf')](_0x414ec2[_0xe765('0x31')]);if(_0x413849['length']>0x0){return _0x4a19d8[_0xe765('0x1d')](0x190)[_0xe765('0x32')](_0x413849);}var _0x118d34=_0x414ec2['body']['userId'];return getAgent(_0x118d34)['then'](function(_0x39342b){logger[_0xe765('0x16')]('entityFound:',_0x39342b['name']);emit(util[_0xe765('0x36')]('user:%s',_0x39342b[_0xe765('0x1c')]),_0xe765('0x4d'));return _0x4a19d8[_0xe765('0x1d')](0xc8)[_0xe765('0x32')]({'error':![],'message':_0xe765('0x4e')});})[_0xe765('0x39')](handleError(_0x4a19d8));};exports[_0xe765('0x4f')]=function(_0x335aa5,_0x23ee0a){logger[_0xe765('0x16')](_0xe765('0x50'),_0x335aa5['body']);var _0x7f2a02=transferValidation[_0xe765('0xf')](_0x335aa5[_0xe765('0x31')]);if(_0x7f2a02[_0xe765('0x2c')]>0x0){return _0x23ee0a['status'](0x190)[_0xe765('0x32')](_0x7f2a02);}var _0xe1a631=_0x335aa5[_0xe765('0x31')]['userId'];var _0x20ad2a=_0x335aa5[_0xe765('0x31')][_0xe765('0x3c')];var _0x129468=_0x335aa5[_0xe765('0x31')][_0xe765('0x51')];return getAgent(_0xe1a631)[_0xe765('0x21')](function(_0x1dfa27){logger[_0xe765('0x16')](_0xe765('0x41'),_0x1dfa27[_0xe765('0x1c')]);emit(util[_0xe765('0x36')]('user:%s',_0x1dfa27[_0xe765('0x1c')]),_0xe765('0x52'),{'sessionId':_0x20ad2a,'transferNumber':_0x129468});return _0x23ee0a['status'](0xc8)[_0xe765('0x32')]({'error':![],'message':_0xe765('0x53')});})[_0xe765('0x39')](handleError(_0x23ee0a));};