f57dc089950607015d859e6250f499fcf28b75b9
[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 _0x9234=['client','http','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','transferNumber\x20is\x20required','stringify','emit','error','name','send','status','NotFound','then','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate','info','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','format','user:%s','webbar:originate','json','length','hangup\x20executed!','answer','answer\x20fired:','entityFound:','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','../../mysqldb','../../config/environment','util','bluebird'];(function(_0x4ae625,_0xf396d0){var _0x31accf=function(_0x3ded6b){while(--_0x3ded6b){_0x4ae625['push'](_0x4ae625['shift']());}};_0x31accf(++_0xf396d0);}(_0x9234,0x1bd));var _0x4923=function(_0x55c485,_0x3fe77e){_0x55c485=_0x55c485-0x0;var _0x6bb521=_0x9234[_0x55c485];return _0x6bb521;};'use strict';var path=require(_0x4923('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x4923('0x1'))['db'];var config=require(_0x4923('0x2'));var util=require(_0x4923('0x3'));var BPromise=require(_0x4923('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0x4923('0x5')][_0x4923('0x6')]({'port':0x232a});var logger=require('../../config/logger')(_0x4923('0x7'));var Redis=require(_0x4923('0x8'));config[_0x4923('0x9')]=_[_0x4923('0xa')](config[_0x4923('0x9')],{'host':_0x4923('0xb'),'port':0x18eb});var io=require(_0x4923('0xc'))(new Redis(config['redis']));var Schema=require(_0x4923('0xd'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4923('0xe')]},'callNumber':{'type':_0x4923('0xf'),'required':[!![],_0x4923('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x4923('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x4923('0x11'),'required':[!![],_0x4923('0xe')]},'sessionId':{'type':_0x4923('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x4923('0x11'),'required':[!![],_0x4923('0xe')]},'sessionId':{'type':_0x4923('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x4923('0x11'),'required':[!![],_0x4923('0xe')]},'sessionId':{'type':_0x4923('0xf'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':'string','required':[!![],_0x4923('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x4923('0x11'),'required':[!![],_0x4923('0xe')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x4923('0x11'),'required':[!![],_0x4923('0xe')]},'sessionId':{'type':_0x4923('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x4923('0x11'),'required':[!![],_0x4923('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0x4923('0x11'),'required':[!![],_0x4923('0xe')]}});function emit(_0x2897da,_0x2e9944,_0x3fedc7){logger['info'](_0x2897da,_0x2e9944,JSON[_0x4923('0x13')](_0x3fedc7));io['to'](_0x2897da)[_0x4923('0x14')](_0x2e9944,_0x3fedc7);}function handleError(_0x5dbb86){return function(_0x1be04d){console['log']('handleError:',_0x1be04d,_0x1be04d instanceof RangeError);logger[_0x4923('0x15')](_0x1be04d['stack']);if(_0x1be04d instanceof RangeError){if(_0x1be04d[_0x4923('0x16')]){delete _0x1be04d[_0x4923('0x16')];}_0x5dbb86['status'](0x194)[_0x4923('0x17')](_0x1be04d);}else{if(_0x1be04d[_0x4923('0x16')]){delete _0x1be04d[_0x4923('0x16')];}_0x5dbb86[_0x4923('0x18')](0x1f4)['send'](_0x1be04d);}};}function checkError(){return function(_0x3742d0){if(!_0x3742d0){throw new RangeError(_0x4923('0x19'));}return _0x3742d0;};}function respondWithRpcPromise(_0x5f4d43,_0x43326e){return new BPromise(function(_0x522753,_0x3de8f5){var _0x168bb4=amiClient;return _0x168bb4['request'](_0x5f4d43,_0x43326e)[_0x4923('0x1a')](function(_0xb1b3d3){if(_0xb1b3d3[_0x4923('0x15')]){if(_0xb1b3d3[_0x4923('0x15')][_0x4923('0x1b')]===0x1f4){return _0x3de8f5(_0xb1b3d3[_0x4923('0x15')][_0x4923('0x1c')]);}return _0x522753(_0xb1b3d3['error']['message']);}else{_0x522753(_0xb1b3d3[_0x4923('0x1d')]);}})[_0x4923('0x1e')](function(_0xdb893b){_0x3de8f5(_0xdb893b);});});}function getAgent(_0x32d508){return db[_0x4923('0x1f')][_0x4923('0x20')]({'where':{'id':_0x32d508,'role':_0x4923('0x21')}})[_0x4923('0x1a')](checkError());}function getAgentCheckSession(_0x9982e8,_0x18fc90){return new BPromise(function(_0x3a7852,_0x52b433){var _0x1cc7c4=respondWithRpcPromise(_0x4923('0x22'));var _0x7944b2=getAgent(_0x9982e8);Promise[_0x4923('0x23')]([_0x1cc7c4,_0x7944b2])[_0x4923('0x1a')](function(_0x47158c){var _0x158a30=_0x47158c[0x0];var _0x7a97f3=_0x47158c[0x1];var _0xb88ca4=_[_0x4923('0x24')](_0x158a30[_0x4923('0x25')],function(_0x425b3c){return _0x425b3c[_0x4923('0x26')]==_0x7a97f3['id']&&_0x425b3c[_0x4923('0x27')]==_0x18fc90;});if(_0xb88ca4['length']==0x1){_0x3a7852(_0x7a97f3);}else{_0x52b433(new RangeError(_0x4923('0x28')+_0x18fc90+_0x4923('0x29')));}});});}exports[_0x4923('0x2a')]=function(_0x3c92bd,_0xf3bc52){logger[_0x4923('0x2b')](_0x4923('0x2c'),_0x3c92bd[_0x4923('0x2d')]);var _0x557756=originateValidation['validate'](_0x3c92bd[_0x4923('0x2d')]);if(_0x557756['length']>0x0){return _0xf3bc52['status'](0x190)['json'](_0x557756);}var _0x207392=_0x3c92bd[_0x4923('0x2d')][_0x4923('0x2e')];var _0x25a9f7=_0x3c92bd['body'][_0x4923('0x2f')];var _0x58b0c1=_0x3c92bd[_0x4923('0x2d')][_0x4923('0x30')];var _0x368d50=_0x3c92bd[_0x4923('0x2d')][_0x4923('0x31')];return getAgent(_0x207392)['then'](function(_0x43ed8e){logger['info']('entityFound:',_0x43ed8e[_0x4923('0x16')]);emit(util[_0x4923('0x32')](_0x4923('0x33'),_0x43ed8e[_0x4923('0x16')]),_0x4923('0x34'),{'callNumber':_0x25a9f7,'callerId':_0x58b0c1,'callbackUrl':_0x368d50});return _0xf3bc52[_0x4923('0x18')](0xc8)[_0x4923('0x35')]({'error':![],'message':'originate\x20executed!'});})[_0x4923('0x1e')](handleError(_0xf3bc52));};exports['hangup']=function(_0x4b01da,_0x35eaea){logger[_0x4923('0x2b')]('hangup\x20fired:',_0x4b01da[_0x4923('0x2d')]);var _0x306436=hangupValidation['validate'](_0x4b01da['body']);if(_0x306436[_0x4923('0x36')]>0x0){return _0x35eaea[_0x4923('0x18')](0x190)['json'](_0x306436);}var _0x51cb0e=_0x4b01da[_0x4923('0x2d')][_0x4923('0x2e')];var _0x3345e1=_0x4b01da[_0x4923('0x2d')][_0x4923('0x27')];return getAgent(_0x51cb0e)['then'](function(_0x2a02e0){logger[_0x4923('0x2b')]('entityFound:',_0x2a02e0[_0x4923('0x16')]);emit(util['format'](_0x4923('0x33'),_0x2a02e0[_0x4923('0x16')]),'webbar:hangup',{'sessionId':_0x3345e1});return _0x35eaea[_0x4923('0x18')](0xc8)[_0x4923('0x35')]({'error':![],'message':_0x4923('0x37')});})[_0x4923('0x1e')](handleError(_0x35eaea));};exports[_0x4923('0x38')]=function(_0x3ea276,_0x580092){logger[_0x4923('0x2b')](_0x4923('0x39'),_0x3ea276['body']);var _0x2a7355=answerValidation['validate'](_0x3ea276[_0x4923('0x2d')]);if(_0x2a7355[_0x4923('0x36')]>0x0){return _0x580092[_0x4923('0x18')](0x190)[_0x4923('0x35')](_0x2a7355);}var _0x120a77=_0x3ea276[_0x4923('0x2d')][_0x4923('0x2e')];var _0x1de781=_0x3ea276['body'][_0x4923('0x27')];return getAgent(_0x120a77)[_0x4923('0x1a')](function(_0xbab297){logger[_0x4923('0x2b')](_0x4923('0x3a'),_0xbab297[_0x4923('0x16')]);emit(util[_0x4923('0x32')](_0x4923('0x33'),_0xbab297[_0x4923('0x16')]),'webbar:answer',{'sessionId':_0x1de781});return _0x580092[_0x4923('0x18')](0xc8)[_0x4923('0x35')]({'error':![],'message':'answer\x20executed!'});})[_0x4923('0x1e')](handleError(_0x580092));};exports[_0x4923('0x3b')]=function(_0x456fd7,_0xf092a1){logger[_0x4923('0x2b')](_0x4923('0x3c'),_0x456fd7[_0x4923('0x2d')]);var _0x2fb017=holdValidation[_0x4923('0xd')](_0x456fd7['body']);if(_0x2fb017['length']>0x0){return _0xf092a1['status'](0x190)[_0x4923('0x35')](_0x2fb017);}var _0x58c1c7=_0x456fd7[_0x4923('0x2d')]['userId'];var _0x278ccc=_0x456fd7[_0x4923('0x2d')][_0x4923('0x27')];return getAgent(_0x58c1c7)[_0x4923('0x1a')](function(_0x2b89be){logger[_0x4923('0x2b')](_0x4923('0x3a'),_0x2b89be[_0x4923('0x16')]);emit(util['format'](_0x4923('0x33'),_0x2b89be[_0x4923('0x16')]),_0x4923('0x3d'),{'sessionId':_0x278ccc});return _0xf092a1[_0x4923('0x18')](0xc8)[_0x4923('0x35')]({'error':![],'message':_0x4923('0x3e')});})[_0x4923('0x1e')](handleError(_0xf092a1));};exports[_0x4923('0x3f')]=function(_0x4eb38f,_0x218f49){logger[_0x4923('0x2b')](_0x4923('0x40'),_0x4eb38f[_0x4923('0x2d')]);var _0x5a092d=unholdValidation[_0x4923('0xd')](_0x4eb38f[_0x4923('0x2d')]);if(_0x5a092d[_0x4923('0x36')]>0x0){return _0x218f49[_0x4923('0x18')](0x190)[_0x4923('0x35')](_0x5a092d);}var _0x2ee03b=_0x4eb38f[_0x4923('0x2d')]['userId'];var _0x4527da=_0x4eb38f['body']['sessionId'];return getAgent(_0x2ee03b)[_0x4923('0x1a')](function(_0x36a27c){logger[_0x4923('0x2b')]('entityFound:',_0x36a27c[_0x4923('0x16')]);emit(util['format'](_0x4923('0x33'),_0x36a27c['name']),_0x4923('0x41'),{'sessionId':_0x4527da});return _0x218f49[_0x4923('0x18')](0xc8)[_0x4923('0x35')]({'error':![],'message':_0x4923('0x42')});})[_0x4923('0x1e')](handleError(_0x218f49));};exports['calls']=function(_0x2d0a14,_0x103a7e){logger[_0x4923('0x2b')](_0x4923('0x43'),_0x103a7e[_0x4923('0x2d')]);var _0xff2e1d=callsValidation['validate'](_0x2d0a14[_0x4923('0x2d')]);if(_0xff2e1d[_0x4923('0x36')]>0x0){return _0x103a7e[_0x4923('0x18')](0x190)[_0x4923('0x35')](_0xff2e1d);}var _0x125421=_0x2d0a14[_0x4923('0x2d')][_0x4923('0x2e')];var _0x4ea676=respondWithRpcPromise(_0x4923('0x22'));var _0xf7fdfe=getAgent(_0x125421);return Promise[_0x4923('0x23')]([_0x4ea676,_0xf7fdfe])[_0x4923('0x1a')](function(_0x3b59e6){var _0x3a75d2=_0x3b59e6[0x0];var _0x338613=_0x3b59e6[0x1];var _0x59ac29=_[_0x4923('0x24')](_0x3a75d2[_0x4923('0x25')],function(_0x618948){return _0x618948['UserId']==_0x338613['id'];});return _0x103a7e[_0x4923('0x18')](0xc8)[_0x4923('0x35')]({'count':_0x59ac29['length'],'rows':_0x59ac29});})['catch'](handleError(_0x103a7e));};exports[_0x4923('0x44')]=function(_0x3d9df9,_0x2e60c3){logger[_0x4923('0x2b')](_0x4923('0x45'),_0x3d9df9[_0x4923('0x2d')]);var _0x224e30=conferenceValidation[_0x4923('0xd')](_0x3d9df9['body']);if(_0x224e30[_0x4923('0x36')]>0x0){return _0x2e60c3[_0x4923('0x18')](0x190)[_0x4923('0x35')](_0x224e30);}var _0x36ede5=_0x3d9df9[_0x4923('0x2d')]['userId'];return getAgent(_0x36ede5)[_0x4923('0x1a')](function(_0x1d2724){logger[_0x4923('0x2b')]('entityFound:',_0x1d2724['name']);emit(util[_0x4923('0x32')](_0x4923('0x33'),_0x1d2724['name']),'webbar:conference');return _0x2e60c3[_0x4923('0x18')](0xc8)[_0x4923('0x35')]({'error':![],'message':_0x4923('0x46')});})['catch'](handleError(_0x2e60c3));};exports[_0x4923('0x47')]=function(_0x2c5f79,_0x52e228){logger['info']('transfer\x20fired:',_0x2c5f79[_0x4923('0x2d')]);var _0x520df2=transferValidation[_0x4923('0xd')](_0x2c5f79[_0x4923('0x2d')]);if(_0x520df2[_0x4923('0x36')]>0x0){return _0x52e228[_0x4923('0x18')](0x190)[_0x4923('0x35')](_0x520df2);}var _0x5b54b4=_0x2c5f79[_0x4923('0x2d')]['userId'];var _0x1fc770=_0x2c5f79[_0x4923('0x2d')][_0x4923('0x27')];var _0x497e63=_0x2c5f79[_0x4923('0x2d')][_0x4923('0x48')];return getAgent(_0x5b54b4)['then'](function(_0x1adc05){logger[_0x4923('0x2b')](_0x4923('0x3a'),_0x1adc05[_0x4923('0x16')]);emit(util['format'](_0x4923('0x33'),_0x1adc05['name']),_0x4923('0x49'),{'sessionId':_0x1fc770,'transferNumber':_0x497e63});return _0x52e228[_0x4923('0x18')](0xc8)['json']({'error':![],'message':_0x4923('0x4a')});})['catch'](handleError(_0x52e228));};