Built motion from commit (unavailable).|2.5.15
[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 _0xd58c=['\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callbackUrl','entityFound:','user:%s','json','originate\x20executed!','hangup\x20fired:','format','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls','conference','conference\x20fired:','webbar:conference','transfer\x20fired:','transferNumber','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','stack','name','status','send','NotFound','request','then','error','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xd58c,0x70));var _0xcd58=function(_0x414e9e,_0x1575f6){_0x414e9e=_0x414e9e-0x0;var _0x31141f=_0xd58c[_0x414e9e];return _0x31141f;};'use strict';var path=require(_0xcd58('0x0'));var fs=require('fs');var _=require(_0xcd58('0x1'));var db=require(_0xcd58('0x2'))['db'];var config=require(_0xcd58('0x3'));var util=require(_0xcd58('0x4'));var BPromise=require(_0xcd58('0x5'));var jayson=require(_0xcd58('0x6'));var amiClient=jayson[_0xcd58('0x7')][_0xcd58('0x8')]({'port':0x232a});var logger=require(_0xcd58('0x9'))(_0xcd58('0xa'));var Redis=require(_0xcd58('0xb'));config[_0xcd58('0xc')]=_[_0xcd58('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xcd58('0xe'))(new Redis(config[_0xcd58('0xc')]));var Schema=require(_0xcd58('0xf'));var originateValidation=new Schema({'userId':{'type':_0xcd58('0x10'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0xcd58('0x11')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xcd58('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0xcd58('0x10'),'required':[!![],_0xcd58('0x13')]},'sessionId':{'type':_0xcd58('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xcd58('0x10'),'required':[!![],_0xcd58('0x13')]},'sessionId':{'type':_0xcd58('0x12'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xcd58('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':[!![],_0xcd58('0x14')]},'transferNumber':{'type':_0xcd58('0x12'),'required':[!![],_0xcd58('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0xcd58('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xcd58('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xcd58('0x10'),'required':[!![],_0xcd58('0x13')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xcd58('0x10'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xcd58('0x13')]}});function emit(_0x438e5a,_0xf6abd4,_0x131936){logger[_0xcd58('0x16')](_0x438e5a,_0xf6abd4,JSON[_0xcd58('0x17')](_0x131936));io['to'](_0x438e5a)[_0xcd58('0x18')](_0xf6abd4,_0x131936);}function handleError(_0x5010b5){return function(_0x5b0a9a){console[_0xcd58('0x19')](_0xcd58('0x1a'),_0x5b0a9a,_0x5b0a9a instanceof RangeError);logger['error'](_0x5b0a9a[_0xcd58('0x1b')]);if(_0x5b0a9a instanceof RangeError){if(_0x5b0a9a[_0xcd58('0x1c')]){delete _0x5b0a9a[_0xcd58('0x1c')];}_0x5010b5[_0xcd58('0x1d')](0x194)[_0xcd58('0x1e')](_0x5b0a9a);}else{if(_0x5b0a9a[_0xcd58('0x1c')]){delete _0x5b0a9a[_0xcd58('0x1c')];}_0x5010b5[_0xcd58('0x1d')](0x1f4)[_0xcd58('0x1e')](_0x5b0a9a);}};}function checkError(){return function(_0x266821){if(!_0x266821){throw new RangeError(_0xcd58('0x1f'));}return _0x266821;};}function respondWithRpcPromise(_0xbf893,_0x4b81c1){return new BPromise(function(_0x1b5bd8,_0xd80df7){var _0xa51a69=amiClient;return _0xa51a69[_0xcd58('0x20')](_0xbf893,_0x4b81c1)[_0xcd58('0x21')](function(_0x1755d0){if(_0x1755d0[_0xcd58('0x22')]){if(_0x1755d0[_0xcd58('0x22')][_0xcd58('0x23')]===0x1f4){return _0xd80df7(_0x1755d0[_0xcd58('0x22')]['message']);}return _0x1b5bd8(_0x1755d0[_0xcd58('0x22')][_0xcd58('0x24')]);}else{_0x1b5bd8(_0x1755d0[_0xcd58('0x25')]);}})[_0xcd58('0x26')](function(_0xa20ef9){_0xd80df7(_0xa20ef9);});});}function getAgent(_0xb15699){return db[_0xcd58('0x27')][_0xcd58('0x28')]({'where':{'id':_0xb15699,'role':_0xcd58('0x29')}})[_0xcd58('0x21')](checkError());}function getAgentCheckSession(_0x4864e0,_0x4aacd0){return new BPromise(function(_0x566486,_0x3cbd6c){var _0x417d40=respondWithRpcPromise(_0xcd58('0x2a'));var _0x8b11f8=getAgent(_0x4864e0);Promise[_0xcd58('0x2b')]([_0x417d40,_0x8b11f8])['then'](function(_0x301ee1){var _0x36a3c1=_0x301ee1[0x0];var _0x2e20db=_0x301ee1[0x1];var _0x842235=_[_0xcd58('0x2c')](_0x36a3c1[_0xcd58('0x2d')],function(_0x59e0cc){return _0x59e0cc[_0xcd58('0x2e')]==_0x2e20db['id']&&_0x59e0cc[_0xcd58('0x2f')]==_0x4aacd0;});if(_0x842235[_0xcd58('0x30')]==0x1){_0x566486(_0x2e20db);}else{_0x3cbd6c(new RangeError(_0xcd58('0x31')+_0x4aacd0+_0xcd58('0x32')));}});});}exports[_0xcd58('0x33')]=function(_0x428d86,_0x51afb4){logger[_0xcd58('0x16')](_0xcd58('0x34'),_0x428d86[_0xcd58('0x35')]);var _0x5d381b=originateValidation[_0xcd58('0xf')](_0x428d86[_0xcd58('0x35')]);if(_0x5d381b[_0xcd58('0x30')]>0x0){return _0x51afb4[_0xcd58('0x1d')](0x190)['json'](_0x5d381b);}var _0x5f3b60=_0x428d86[_0xcd58('0x35')][_0xcd58('0x36')];var _0x318b1f=_0x428d86[_0xcd58('0x35')][_0xcd58('0x37')];var _0x561dbb=_0x428d86[_0xcd58('0x35')]['callerId'];var _0x301ed4=_0x428d86[_0xcd58('0x35')][_0xcd58('0x38')];return getAgent(_0x5f3b60)[_0xcd58('0x21')](function(_0x722107){logger[_0xcd58('0x16')](_0xcd58('0x39'),_0x722107[_0xcd58('0x1c')]);emit(util['format'](_0xcd58('0x3a'),_0x722107[_0xcd58('0x1c')]),'webbar:originate',{'callNumber':_0x318b1f,'callerId':_0x561dbb,'callbackUrl':_0x301ed4});return _0x51afb4['status'](0xc8)[_0xcd58('0x3b')]({'error':![],'message':_0xcd58('0x3c')});})[_0xcd58('0x26')](handleError(_0x51afb4));};exports['hangup']=function(_0x24db50,_0x408f67){logger[_0xcd58('0x16')](_0xcd58('0x3d'),_0x24db50[_0xcd58('0x35')]);var _0x29a100=hangupValidation[_0xcd58('0xf')](_0x24db50[_0xcd58('0x35')]);if(_0x29a100['length']>0x0){return _0x408f67[_0xcd58('0x1d')](0x190)[_0xcd58('0x3b')](_0x29a100);}var _0x90028d=_0x24db50[_0xcd58('0x35')][_0xcd58('0x36')];var _0x216e47=_0x24db50[_0xcd58('0x35')][_0xcd58('0x2f')];return getAgent(_0x90028d)['then'](function(_0x12e18c){logger[_0xcd58('0x16')](_0xcd58('0x39'),_0x12e18c[_0xcd58('0x1c')]);emit(util[_0xcd58('0x3e')](_0xcd58('0x3a'),_0x12e18c[_0xcd58('0x1c')]),_0xcd58('0x3f'),{'sessionId':_0x216e47});return _0x408f67[_0xcd58('0x1d')](0xc8)['json']({'error':![],'message':_0xcd58('0x40')});})[_0xcd58('0x26')](handleError(_0x408f67));};exports[_0xcd58('0x41')]=function(_0x15b765,_0x55f88d){logger[_0xcd58('0x16')](_0xcd58('0x42'),_0x15b765[_0xcd58('0x35')]);var _0x26e8a0=answerValidation[_0xcd58('0xf')](_0x15b765[_0xcd58('0x35')]);if(_0x26e8a0[_0xcd58('0x30')]>0x0){return _0x55f88d[_0xcd58('0x1d')](0x190)[_0xcd58('0x3b')](_0x26e8a0);}var _0x598d95=_0x15b765[_0xcd58('0x35')][_0xcd58('0x36')];var _0xbf8056=_0x15b765['body'][_0xcd58('0x2f')];return getAgent(_0x598d95)[_0xcd58('0x21')](function(_0x3d1f60){logger[_0xcd58('0x16')](_0xcd58('0x39'),_0x3d1f60[_0xcd58('0x1c')]);emit(util['format'](_0xcd58('0x3a'),_0x3d1f60[_0xcd58('0x1c')]),_0xcd58('0x43'),{'sessionId':_0xbf8056});return _0x55f88d['status'](0xc8)[_0xcd58('0x3b')]({'error':![],'message':'answer\x20executed!'});})[_0xcd58('0x26')](handleError(_0x55f88d));};exports[_0xcd58('0x44')]=function(_0x1a95e2,_0x3bf913){logger[_0xcd58('0x16')](_0xcd58('0x45'),_0x1a95e2[_0xcd58('0x35')]);var _0x2fcd82=holdValidation['validate'](_0x1a95e2[_0xcd58('0x35')]);if(_0x2fcd82[_0xcd58('0x30')]>0x0){return _0x3bf913[_0xcd58('0x1d')](0x190)[_0xcd58('0x3b')](_0x2fcd82);}var _0x21e4cd=_0x1a95e2['body'][_0xcd58('0x36')];var _0x2c8b1a=_0x1a95e2[_0xcd58('0x35')]['sessionId'];return getAgent(_0x21e4cd)[_0xcd58('0x21')](function(_0x35e9f1){logger['info'](_0xcd58('0x39'),_0x35e9f1[_0xcd58('0x1c')]);emit(util['format'](_0xcd58('0x3a'),_0x35e9f1[_0xcd58('0x1c')]),_0xcd58('0x46'),{'sessionId':_0x2c8b1a});return _0x3bf913[_0xcd58('0x1d')](0xc8)[_0xcd58('0x3b')]({'error':![],'message':_0xcd58('0x47')});})[_0xcd58('0x26')](handleError(_0x3bf913));};exports[_0xcd58('0x48')]=function(_0x4ae5ae,_0x56a3e3){logger['info']('unhold\x20fired:',_0x4ae5ae[_0xcd58('0x35')]);var _0x2ec092=unholdValidation[_0xcd58('0xf')](_0x4ae5ae[_0xcd58('0x35')]);if(_0x2ec092[_0xcd58('0x30')]>0x0){return _0x56a3e3[_0xcd58('0x1d')](0x190)[_0xcd58('0x3b')](_0x2ec092);}var _0x1f519e=_0x4ae5ae['body'][_0xcd58('0x36')];var _0x598566=_0x4ae5ae[_0xcd58('0x35')]['sessionId'];return getAgent(_0x1f519e)['then'](function(_0x1235e8){logger[_0xcd58('0x16')](_0xcd58('0x39'),_0x1235e8[_0xcd58('0x1c')]);emit(util[_0xcd58('0x3e')](_0xcd58('0x3a'),_0x1235e8[_0xcd58('0x1c')]),_0xcd58('0x49'),{'sessionId':_0x598566});return _0x56a3e3[_0xcd58('0x1d')](0xc8)[_0xcd58('0x3b')]({'error':![],'message':_0xcd58('0x4a')});})[_0xcd58('0x26')](handleError(_0x56a3e3));};exports[_0xcd58('0x4b')]=function(_0x371893,_0x33e495){logger['info']('calls\x20fired:',_0x33e495[_0xcd58('0x35')]);var _0x3aa74a=callsValidation[_0xcd58('0xf')](_0x371893[_0xcd58('0x35')]);if(_0x3aa74a[_0xcd58('0x30')]>0x0){return _0x33e495[_0xcd58('0x1d')](0x190)['json'](_0x3aa74a);}var _0x99e57a=_0x371893[_0xcd58('0x35')][_0xcd58('0x36')];var _0x249e38=respondWithRpcPromise(_0xcd58('0x2a'));var _0x45e649=getAgent(_0x99e57a);return Promise[_0xcd58('0x2b')]([_0x249e38,_0x45e649])[_0xcd58('0x21')](function(_0x292aad){var _0x244440=_0x292aad[0x0];var _0x2ee0b2=_0x292aad[0x1];var _0x335f97=_[_0xcd58('0x2c')](_0x244440[_0xcd58('0x2d')],function(_0x2a18f0){return _0x2a18f0[_0xcd58('0x2e')]==_0x2ee0b2['id'];});return _0x33e495[_0xcd58('0x1d')](0xc8)[_0xcd58('0x3b')]({'count':_0x335f97[_0xcd58('0x30')],'rows':_0x335f97});})[_0xcd58('0x26')](handleError(_0x33e495));};exports[_0xcd58('0x4c')]=function(_0x53d46c,_0x5effb6){logger[_0xcd58('0x16')](_0xcd58('0x4d'),_0x53d46c[_0xcd58('0x35')]);var _0x1c4a74=conferenceValidation['validate'](_0x53d46c[_0xcd58('0x35')]);if(_0x1c4a74[_0xcd58('0x30')]>0x0){return _0x5effb6[_0xcd58('0x1d')](0x190)[_0xcd58('0x3b')](_0x1c4a74);}var _0x4eb8a5=_0x53d46c[_0xcd58('0x35')]['userId'];return getAgent(_0x4eb8a5)[_0xcd58('0x21')](function(_0x3f2713){logger[_0xcd58('0x16')](_0xcd58('0x39'),_0x3f2713[_0xcd58('0x1c')]);emit(util[_0xcd58('0x3e')](_0xcd58('0x3a'),_0x3f2713[_0xcd58('0x1c')]),_0xcd58('0x4e'));return _0x5effb6[_0xcd58('0x1d')](0xc8)[_0xcd58('0x3b')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x5effb6));};exports['transfer']=function(_0x2ac17c,_0x22f2bb){logger[_0xcd58('0x16')](_0xcd58('0x4f'),_0x2ac17c[_0xcd58('0x35')]);var _0x5c4e96=transferValidation[_0xcd58('0xf')](_0x2ac17c['body']);if(_0x5c4e96[_0xcd58('0x30')]>0x0){return _0x22f2bb[_0xcd58('0x1d')](0x190)[_0xcd58('0x3b')](_0x5c4e96);}var _0x5b7ad2=_0x2ac17c[_0xcd58('0x35')]['userId'];var _0x1839db=_0x2ac17c['body']['sessionId'];var _0x1740f6=_0x2ac17c['body'][_0xcd58('0x50')];return getAgent(_0x5b7ad2)[_0xcd58('0x21')](function(_0x1425d9){logger[_0xcd58('0x16')]('entityFound:',_0x1425d9[_0xcd58('0x1c')]);emit(util[_0xcd58('0x3e')]('user:%s',_0x1425d9[_0xcd58('0x1c')]),'webbar:transfer',{'sessionId':_0x1839db,'transferNumber':_0x1740f6});return _0x22f2bb['status'](0xc8)['json']({'error':![],'message':'transfer\x20executed!'});})[_0xcd58('0x26')](handleError(_0x22f2bb));};