Built motion from commit da617fac.|2.6.6
[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 _0x80d9=['validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','handleError:','error','stack','name','status','send','code','message','catch','User','then','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','callNumber','body','callbackUrl','entityFound:','format','user:%s','webbar:originate','json','originate\x20executed!','userId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','answer\x20executed!','hold','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','../../mysqldb','../../config/environment','util','jayson/promise','client','http','../../config/logger','webbarapi','defaults','socket.io-emitter','redis'];(function(_0x5e8460,_0x2003b5){var _0x3d50fd=function(_0x4c499f){while(--_0x4c499f){_0x5e8460['push'](_0x5e8460['shift']());}};_0x3d50fd(++_0x2003b5);}(_0x80d9,0x15c));var _0x980d=function(_0x1961d7,_0x315f92){_0x1961d7=_0x1961d7-0x0;var _0x4f8793=_0x80d9[_0x1961d7];return _0x4f8793;};'use strict';var path=require(_0x980d('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x980d('0x1'))['db'];var config=require(_0x980d('0x2'));var util=require(_0x980d('0x3'));var BPromise=require('bluebird');var jayson=require(_0x980d('0x4'));var amiClient=jayson[_0x980d('0x5')][_0x980d('0x6')]({'port':0x232a});var logger=require(_0x980d('0x7'))(_0x980d('0x8'));var Redis=require('ioredis');config['redis']=_[_0x980d('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x980d('0xa'))(new Redis(config[_0x980d('0xb')]));var Schema=require(_0x980d('0xc'));var originateValidation=new Schema({'userId':{'type':_0x980d('0xd'),'required':[!![],_0x980d('0xe')]},'callNumber':{'type':_0x980d('0xf'),'required':[!![],_0x980d('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x980d('0xe')]},'sessionId':{'type':_0x980d('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x980d('0xe')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x980d('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x980d('0xf'),'required':[!![],_0x980d('0x11')]},'transferNumber':{'type':_0x980d('0xf'),'required':[!![],_0x980d('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x980d('0xd'),'required':[!![],_0x980d('0xe')]},'sessionId':{'type':_0x980d('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x980d('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x980d('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x980d('0xd'),'required':[!![],_0x980d('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0x980d('0xd'),'required':[!![],_0x980d('0xe')]}});function emit(_0x169648,_0x5824bf,_0x27dd6a){logger[_0x980d('0x13')](_0x169648,_0x5824bf,JSON['stringify'](_0x27dd6a));io['to'](_0x169648)[_0x980d('0x14')](_0x5824bf,_0x27dd6a);}function handleError(_0x4e9d73){return function(_0x23f64c){console[_0x980d('0x15')](_0x980d('0x16'),_0x23f64c,_0x23f64c instanceof RangeError);logger[_0x980d('0x17')](_0x23f64c[_0x980d('0x18')]);if(_0x23f64c instanceof RangeError){if(_0x23f64c[_0x980d('0x19')]){delete _0x23f64c[_0x980d('0x19')];}_0x4e9d73[_0x980d('0x1a')](0x194)[_0x980d('0x1b')](_0x23f64c);}else{if(_0x23f64c[_0x980d('0x19')]){delete _0x23f64c[_0x980d('0x19')];}_0x4e9d73['status'](0x1f4)['send'](_0x23f64c);}};}function checkError(){return function(_0x3cb470){if(!_0x3cb470){throw new RangeError('NotFound');}return _0x3cb470;};}function respondWithRpcPromise(_0x4e37c8,_0x124c3f){return new BPromise(function(_0x1d6286,_0x45d698){var _0xbb89e3=amiClient;return _0xbb89e3['request'](_0x4e37c8,_0x124c3f)['then'](function(_0x11cb45){if(_0x11cb45['error']){if(_0x11cb45[_0x980d('0x17')][_0x980d('0x1c')]===0x1f4){return _0x45d698(_0x11cb45['error'][_0x980d('0x1d')]);}return _0x1d6286(_0x11cb45['error']['message']);}else{_0x1d6286(_0x11cb45['result']);}})[_0x980d('0x1e')](function(_0x43f278){_0x45d698(_0x43f278);});});}function getAgent(_0x117053){return db[_0x980d('0x1f')]['findOne']({'where':{'id':_0x117053,'role':'agent'}})[_0x980d('0x20')](checkError());}function getAgentCheckSession(_0x1d5dad,_0x97ca70){return new BPromise(function(_0x1da8ea,_0x3d5f19){var _0x47b11d=respondWithRpcPromise('VoiceChannels');var _0x2830e5=getAgent(_0x1d5dad);Promise[_0x980d('0x21')]([_0x47b11d,_0x2830e5])[_0x980d('0x20')](function(_0xf00845){var _0x2dab0e=_0xf00845[0x0];var _0x25542b=_0xf00845[0x1];var _0x513693=_[_0x980d('0x22')](_0x2dab0e[_0x980d('0x23')],function(_0xaa9cd6){return _0xaa9cd6[_0x980d('0x24')]==_0x25542b['id']&&_0xaa9cd6[_0x980d('0x25')]==_0x97ca70;});if(_0x513693[_0x980d('0x26')]==0x1){_0x1da8ea(_0x25542b);}else{_0x3d5f19(new RangeError(_0x980d('0x27')+_0x97ca70+_0x980d('0x28')));}});});}exports[_0x980d('0x29')]=function(_0x59a847,_0x3671b8){logger[_0x980d('0x13')](_0x980d('0x2a'),_0x59a847['body']);var _0x5d0771=originateValidation[_0x980d('0xc')](_0x59a847['body']);if(_0x5d0771[_0x980d('0x26')]>0x0){return _0x3671b8['status'](0x190)['json'](_0x5d0771);}var _0x5a3160=_0x59a847['body']['userId'];var _0x511d25=_0x59a847['body'][_0x980d('0x2b')];var _0x3569b8=_0x59a847[_0x980d('0x2c')]['callerId'];var _0x498081=_0x59a847[_0x980d('0x2c')][_0x980d('0x2d')];return getAgent(_0x5a3160)[_0x980d('0x20')](function(_0x120bf1){logger[_0x980d('0x13')](_0x980d('0x2e'),_0x120bf1['name']);emit(util[_0x980d('0x2f')](_0x980d('0x30'),_0x120bf1['name']),_0x980d('0x31'),{'callNumber':_0x511d25,'callerId':_0x3569b8,'callbackUrl':_0x498081});return _0x3671b8['status'](0xc8)[_0x980d('0x32')]({'error':![],'message':_0x980d('0x33')});})[_0x980d('0x1e')](handleError(_0x3671b8));};exports['hangup']=function(_0x5d8c31,_0x5d5903){logger[_0x980d('0x13')]('hangup\x20fired:',_0x5d8c31['body']);var _0x98b1b=hangupValidation[_0x980d('0xc')](_0x5d8c31[_0x980d('0x2c')]);if(_0x98b1b['length']>0x0){return _0x5d5903[_0x980d('0x1a')](0x190)[_0x980d('0x32')](_0x98b1b);}var _0x32f2f9=_0x5d8c31[_0x980d('0x2c')][_0x980d('0x34')];var _0x4e2aac=_0x5d8c31['body'][_0x980d('0x25')];return getAgent(_0x32f2f9)['then'](function(_0x5b49e2){logger['info']('entityFound:',_0x5b49e2[_0x980d('0x19')]);emit(util[_0x980d('0x2f')](_0x980d('0x30'),_0x5b49e2['name']),_0x980d('0x35'),{'sessionId':_0x4e2aac});return _0x5d5903[_0x980d('0x1a')](0xc8)[_0x980d('0x32')]({'error':![],'message':_0x980d('0x36')});})[_0x980d('0x1e')](handleError(_0x5d5903));};exports[_0x980d('0x37')]=function(_0x1221e7,_0x555417){logger[_0x980d('0x13')](_0x980d('0x38'),_0x1221e7[_0x980d('0x2c')]);var _0x5f1f04=answerValidation[_0x980d('0xc')](_0x1221e7[_0x980d('0x2c')]);if(_0x5f1f04[_0x980d('0x26')]>0x0){return _0x555417[_0x980d('0x1a')](0x190)[_0x980d('0x32')](_0x5f1f04);}var _0x45831c=_0x1221e7[_0x980d('0x2c')]['userId'];var _0x473c94=_0x1221e7['body'][_0x980d('0x25')];return getAgent(_0x45831c)[_0x980d('0x20')](function(_0x23980c){logger[_0x980d('0x13')](_0x980d('0x2e'),_0x23980c[_0x980d('0x19')]);emit(util[_0x980d('0x2f')](_0x980d('0x30'),_0x23980c['name']),'webbar:answer',{'sessionId':_0x473c94});return _0x555417[_0x980d('0x1a')](0xc8)[_0x980d('0x32')]({'error':![],'message':_0x980d('0x39')});})[_0x980d('0x1e')](handleError(_0x555417));};exports[_0x980d('0x3a')]=function(_0x48f239,_0x1de28b){logger[_0x980d('0x13')]('hold\x20fired:',_0x48f239[_0x980d('0x2c')]);var _0x169270=holdValidation[_0x980d('0xc')](_0x48f239[_0x980d('0x2c')]);if(_0x169270[_0x980d('0x26')]>0x0){return _0x1de28b[_0x980d('0x1a')](0x190)[_0x980d('0x32')](_0x169270);}var _0x135c26=_0x48f239[_0x980d('0x2c')]['userId'];var _0xaf9c1c=_0x48f239[_0x980d('0x2c')][_0x980d('0x25')];return getAgent(_0x135c26)[_0x980d('0x20')](function(_0x2e18c6){logger[_0x980d('0x13')](_0x980d('0x2e'),_0x2e18c6['name']);emit(util[_0x980d('0x2f')]('user:%s',_0x2e18c6[_0x980d('0x19')]),_0x980d('0x3b'),{'sessionId':_0xaf9c1c});return _0x1de28b[_0x980d('0x1a')](0xc8)[_0x980d('0x32')]({'error':![],'message':_0x980d('0x3c')});})['catch'](handleError(_0x1de28b));};exports[_0x980d('0x3d')]=function(_0x448b3c,_0x242277){logger[_0x980d('0x13')](_0x980d('0x3e'),_0x448b3c[_0x980d('0x2c')]);var _0x411b3a=unholdValidation['validate'](_0x448b3c['body']);if(_0x411b3a['length']>0x0){return _0x242277['status'](0x190)[_0x980d('0x32')](_0x411b3a);}var _0x216458=_0x448b3c[_0x980d('0x2c')][_0x980d('0x34')];var _0x177bb2=_0x448b3c[_0x980d('0x2c')]['sessionId'];return getAgent(_0x216458)[_0x980d('0x20')](function(_0x51c112){logger[_0x980d('0x13')](_0x980d('0x2e'),_0x51c112[_0x980d('0x19')]);emit(util[_0x980d('0x2f')]('user:%s',_0x51c112['name']),_0x980d('0x3f'),{'sessionId':_0x177bb2});return _0x242277[_0x980d('0x1a')](0xc8)[_0x980d('0x32')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x242277));};exports[_0x980d('0x40')]=function(_0x4c61c8,_0x459b0e){logger[_0x980d('0x13')](_0x980d('0x41'),_0x459b0e[_0x980d('0x2c')]);var _0x20459e=callsValidation[_0x980d('0xc')](_0x4c61c8[_0x980d('0x2c')]);if(_0x20459e[_0x980d('0x26')]>0x0){return _0x459b0e['status'](0x190)['json'](_0x20459e);}var _0x899a7e=_0x4c61c8['body'][_0x980d('0x34')];var _0x21cf36=respondWithRpcPromise('VoiceChannels');var _0x2b28e4=getAgent(_0x899a7e);return Promise[_0x980d('0x21')]([_0x21cf36,_0x2b28e4])[_0x980d('0x20')](function(_0x60969d){var _0x5498aa=_0x60969d[0x0];var _0x2ccfff=_0x60969d[0x1];var _0x5e45c6=_['filter'](_0x5498aa[_0x980d('0x23')],function(_0x55a075){return _0x55a075[_0x980d('0x24')]==_0x2ccfff['id'];});return _0x459b0e['status'](0xc8)[_0x980d('0x32')]({'count':_0x5e45c6[_0x980d('0x26')],'rows':_0x5e45c6});})['catch'](handleError(_0x459b0e));};exports[_0x980d('0x42')]=function(_0x132495,_0x36f01e){logger[_0x980d('0x13')](_0x980d('0x43'),_0x132495[_0x980d('0x2c')]);var _0x343deb=conferenceValidation[_0x980d('0xc')](_0x132495[_0x980d('0x2c')]);if(_0x343deb[_0x980d('0x26')]>0x0){return _0x36f01e[_0x980d('0x1a')](0x190)[_0x980d('0x32')](_0x343deb);}var _0x4cb91f=_0x132495['body']['userId'];return getAgent(_0x4cb91f)[_0x980d('0x20')](function(_0x53a444){logger[_0x980d('0x13')](_0x980d('0x2e'),_0x53a444[_0x980d('0x19')]);emit(util[_0x980d('0x2f')]('user:%s',_0x53a444[_0x980d('0x19')]),_0x980d('0x44'));return _0x36f01e['status'](0xc8)[_0x980d('0x32')]({'error':![],'message':'conference\x20executed!'});})[_0x980d('0x1e')](handleError(_0x36f01e));};exports['transfer']=function(_0x528e35,_0x465e03){logger[_0x980d('0x13')](_0x980d('0x45'),_0x528e35[_0x980d('0x2c')]);var _0x4dbcca=transferValidation[_0x980d('0xc')](_0x528e35['body']);if(_0x4dbcca['length']>0x0){return _0x465e03[_0x980d('0x1a')](0x190)[_0x980d('0x32')](_0x4dbcca);}var _0x3bd029=_0x528e35[_0x980d('0x2c')][_0x980d('0x34')];var _0x287d47=_0x528e35[_0x980d('0x2c')][_0x980d('0x25')];var _0x392ec3=_0x528e35[_0x980d('0x2c')]['transferNumber'];return getAgent(_0x3bd029)[_0x980d('0x20')](function(_0x4e6f36){logger[_0x980d('0x13')](_0x980d('0x2e'),_0x4e6f36['name']);emit(util[_0x980d('0x2f')](_0x980d('0x30'),_0x4e6f36[_0x980d('0x19')]),_0x980d('0x46'),{'sessionId':_0x287d47,'transferNumber':_0x392ec3});return _0x465e03['status'](0xc8)[_0x980d('0x32')]({'error':![],'message':_0x980d('0x47')});})[_0x980d('0x1e')](handleError(_0x465e03));};