Built motion from commit (unavailable).|2.5.0
[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 _0xb3ea=['message','catch','User','agent','VoiceChannels','then','filter','rows','UserId','sessionId\x20','originate','originate\x20fired:','body','validate','length','json','userId','callNumber','callbackUrl','info','entityFound:','format','user:%s','originate\x20executed!','hangup','hangup\x20fired:','sessionId','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold\x20fired:','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','all','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','jayson/promise','http','../../config/logger','webbarapi','ioredis','redis','socket.io-emitter','number','userId\x20is\x20required','callNumber\x20is\x20required','string','transferNumber\x20is\x20required','stringify','log','handleError:','error','stack','name','status','send','NotFound','request','code'];(function(_0x25a5ee,_0x54d5de){var _0x18593f=function(_0x150331){while(--_0x150331){_0x25a5ee['push'](_0x25a5ee['shift']());}};_0x18593f(++_0x54d5de);}(_0xb3ea,0x10d));var _0xab3e=function(_0x5f51cb,_0x556260){_0x5f51cb=_0x5f51cb-0x0;var _0x19ba69=_0xb3ea[_0x5f51cb];return _0x19ba69;};'use strict';var path=require(_0xab3e('0x0'));var fs=require('fs');var _=require(_0xab3e('0x1'));var db=require(_0xab3e('0x2'))['db'];var config=require('../../config/environment');var util=require(_0xab3e('0x3'));var BPromise=require('bluebird');var jayson=require(_0xab3e('0x4'));var amiClient=jayson['client'][_0xab3e('0x5')]({'port':0x232a});var logger=require(_0xab3e('0x6'))(_0xab3e('0x7'));var Redis=require(_0xab3e('0x8'));config[_0xab3e('0x9')]=_['defaults'](config[_0xab3e('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xab3e('0xa'))(new Redis(config[_0xab3e('0x9')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0xab3e('0xb'),'required':[!![],_0xab3e('0xc')]},'callNumber':{'type':'string','required':[!![],_0xab3e('0xd')]},'callerId':{'type':_0xab3e('0xe')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xab3e('0xc')]},'sessionId':{'type':_0xab3e('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xab3e('0xb'),'required':[!![],_0xab3e('0xc')]},'sessionId':{'type':_0xab3e('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xab3e('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xab3e('0xe'),'required':[!![],_0xab3e('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0xab3e('0xb'),'required':[!![],_0xab3e('0xc')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xab3e('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xab3e('0xb'),'required':[!![],_0xab3e('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xab3e('0xc')]}});function emit(_0x161ff9,_0x5aad51,_0xcf080c){logger['info'](_0x161ff9,_0x5aad51,JSON[_0xab3e('0x10')](_0xcf080c));io['to'](_0x161ff9)['emit'](_0x5aad51,_0xcf080c);}function handleError(_0x5594f1){return function(_0xdfe0e){console[_0xab3e('0x11')](_0xab3e('0x12'),_0xdfe0e,_0xdfe0e instanceof RangeError);logger[_0xab3e('0x13')](_0xdfe0e[_0xab3e('0x14')]);if(_0xdfe0e instanceof RangeError){if(_0xdfe0e[_0xab3e('0x15')]){delete _0xdfe0e['name'];}_0x5594f1[_0xab3e('0x16')](0x194)[_0xab3e('0x17')](_0xdfe0e);}else{if(_0xdfe0e[_0xab3e('0x15')]){delete _0xdfe0e['name'];}_0x5594f1[_0xab3e('0x16')](0x1f4)[_0xab3e('0x17')](_0xdfe0e);}};}function checkError(){return function(_0xf9a898){if(!_0xf9a898){throw new RangeError(_0xab3e('0x18'));}return _0xf9a898;};}function respondWithRpcPromise(_0x13ffd3,_0x106307){return new BPromise(function(_0x39ae19,_0x3c9666){var _0x8086aa=amiClient;return _0x8086aa[_0xab3e('0x19')](_0x13ffd3,_0x106307)['then'](function(_0x49bdad){if(_0x49bdad['error']){if(_0x49bdad[_0xab3e('0x13')][_0xab3e('0x1a')]===0x1f4){return _0x3c9666(_0x49bdad['error']['message']);}return _0x39ae19(_0x49bdad['error'][_0xab3e('0x1b')]);}else{_0x39ae19(_0x49bdad['result']);}})[_0xab3e('0x1c')](function(_0x5f34bf){_0x3c9666(_0x5f34bf);});});}function getAgent(_0x324e20){return db[_0xab3e('0x1d')]['findOne']({'where':{'id':_0x324e20,'role':_0xab3e('0x1e')}})['then'](checkError());}function getAgentCheckSession(_0x3de38e,_0x21408c){return new BPromise(function(_0x3e0254,_0x460a25){var _0x3a727d=respondWithRpcPromise(_0xab3e('0x1f'));var _0x2c9111=getAgent(_0x3de38e);Promise['all']([_0x3a727d,_0x2c9111])[_0xab3e('0x20')](function(_0x287dbd){var _0x41bb99=_0x287dbd[0x0];var _0x37ea06=_0x287dbd[0x1];var _0x5c771a=_[_0xab3e('0x21')](_0x41bb99[_0xab3e('0x22')],function(_0x5d201c){return _0x5d201c[_0xab3e('0x23')]==_0x37ea06['id']&&_0x5d201c['sessionId']==_0x21408c;});if(_0x5c771a['length']==0x1){_0x3e0254(_0x37ea06);}else{_0x460a25(new RangeError(_0xab3e('0x24')+_0x21408c+'\x20not\x20found!'));}});});}exports[_0xab3e('0x25')]=function(_0x1dd02e,_0x16833b){logger['info'](_0xab3e('0x26'),_0x1dd02e[_0xab3e('0x27')]);var _0x16305e=originateValidation[_0xab3e('0x28')](_0x1dd02e[_0xab3e('0x27')]);if(_0x16305e[_0xab3e('0x29')]>0x0){return _0x16833b[_0xab3e('0x16')](0x190)[_0xab3e('0x2a')](_0x16305e);}var _0x373c2a=_0x1dd02e[_0xab3e('0x27')][_0xab3e('0x2b')];var _0x56bd44=_0x1dd02e[_0xab3e('0x27')][_0xab3e('0x2c')];var _0x5cc79c=_0x1dd02e[_0xab3e('0x27')]['callerId'];var _0x204ff5=_0x1dd02e[_0xab3e('0x27')][_0xab3e('0x2d')];return getAgent(_0x373c2a)[_0xab3e('0x20')](function(_0x2a36cc){logger[_0xab3e('0x2e')](_0xab3e('0x2f'),_0x2a36cc[_0xab3e('0x15')]);emit(util[_0xab3e('0x30')](_0xab3e('0x31'),_0x2a36cc['name']),'webbar:originate',{'callNumber':_0x56bd44,'callerId':_0x5cc79c,'callbackUrl':_0x204ff5});return _0x16833b[_0xab3e('0x16')](0xc8)[_0xab3e('0x2a')]({'error':![],'message':_0xab3e('0x32')});})[_0xab3e('0x1c')](handleError(_0x16833b));};exports[_0xab3e('0x33')]=function(_0xd80b03,_0x1f0397){logger['info'](_0xab3e('0x34'),_0xd80b03[_0xab3e('0x27')]);var _0x103cce=hangupValidation[_0xab3e('0x28')](_0xd80b03['body']);if(_0x103cce[_0xab3e('0x29')]>0x0){return _0x1f0397['status'](0x190)[_0xab3e('0x2a')](_0x103cce);}var _0x1346b1=_0xd80b03[_0xab3e('0x27')][_0xab3e('0x2b')];var _0x43e63b=_0xd80b03[_0xab3e('0x27')][_0xab3e('0x35')];return getAgent(_0x1346b1)[_0xab3e('0x20')](function(_0xc3437){logger[_0xab3e('0x2e')]('entityFound:',_0xc3437[_0xab3e('0x15')]);emit(util['format'](_0xab3e('0x31'),_0xc3437[_0xab3e('0x15')]),'webbar:hangup',{'sessionId':_0x43e63b});return _0x1f0397['status'](0xc8)[_0xab3e('0x2a')]({'error':![],'message':_0xab3e('0x36')});})[_0xab3e('0x1c')](handleError(_0x1f0397));};exports[_0xab3e('0x37')]=function(_0xaeed7e,_0x25d0e){logger['info'](_0xab3e('0x38'),_0xaeed7e[_0xab3e('0x27')]);var _0x4ac0bf=answerValidation[_0xab3e('0x28')](_0xaeed7e['body']);if(_0x4ac0bf[_0xab3e('0x29')]>0x0){return _0x25d0e[_0xab3e('0x16')](0x190)['json'](_0x4ac0bf);}var _0x57808d=_0xaeed7e[_0xab3e('0x27')]['userId'];var _0x3b3bd7=_0xaeed7e[_0xab3e('0x27')][_0xab3e('0x35')];return getAgent(_0x57808d)['then'](function(_0x13d7e7){logger[_0xab3e('0x2e')](_0xab3e('0x2f'),_0x13d7e7[_0xab3e('0x15')]);emit(util[_0xab3e('0x30')](_0xab3e('0x31'),_0x13d7e7[_0xab3e('0x15')]),_0xab3e('0x39'),{'sessionId':_0x3b3bd7});return _0x25d0e[_0xab3e('0x16')](0xc8)[_0xab3e('0x2a')]({'error':![],'message':'answer\x20executed!'});})[_0xab3e('0x1c')](handleError(_0x25d0e));};exports['hold']=function(_0x4e1702,_0x1491fc){logger['info'](_0xab3e('0x3a'),_0x4e1702[_0xab3e('0x27')]);var _0x1570f9=holdValidation['validate'](_0x4e1702['body']);if(_0x1570f9['length']>0x0){return _0x1491fc[_0xab3e('0x16')](0x190)[_0xab3e('0x2a')](_0x1570f9);}var _0x4934b6=_0x4e1702[_0xab3e('0x27')]['userId'];var _0x47166b=_0x4e1702[_0xab3e('0x27')][_0xab3e('0x35')];return getAgent(_0x4934b6)[_0xab3e('0x20')](function(_0x32d302){logger[_0xab3e('0x2e')](_0xab3e('0x2f'),_0x32d302[_0xab3e('0x15')]);emit(util[_0xab3e('0x30')]('user:%s',_0x32d302[_0xab3e('0x15')]),'webbar:hold',{'sessionId':_0x47166b});return _0x1491fc[_0xab3e('0x16')](0xc8)['json']({'error':![],'message':_0xab3e('0x3b')});})['catch'](handleError(_0x1491fc));};exports[_0xab3e('0x3c')]=function(_0x26144f,_0x2dd561){logger['info'](_0xab3e('0x3d'),_0x26144f[_0xab3e('0x27')]);var _0x398081=unholdValidation['validate'](_0x26144f[_0xab3e('0x27')]);if(_0x398081[_0xab3e('0x29')]>0x0){return _0x2dd561['status'](0x190)[_0xab3e('0x2a')](_0x398081);}var _0x453d2b=_0x26144f[_0xab3e('0x27')][_0xab3e('0x2b')];var _0x1b8a66=_0x26144f['body']['sessionId'];return getAgent(_0x453d2b)[_0xab3e('0x20')](function(_0x3987d3){logger['info']('entityFound:',_0x3987d3[_0xab3e('0x15')]);emit(util[_0xab3e('0x30')]('user:%s',_0x3987d3[_0xab3e('0x15')]),'webbar:unhold',{'sessionId':_0x1b8a66});return _0x2dd561[_0xab3e('0x16')](0xc8)[_0xab3e('0x2a')]({'error':![],'message':_0xab3e('0x3e')});})[_0xab3e('0x1c')](handleError(_0x2dd561));};exports[_0xab3e('0x3f')]=function(_0x4eb5cf,_0x14a845){logger['info'](_0xab3e('0x40'),_0x14a845['body']);var _0x49d67f=callsValidation[_0xab3e('0x28')](_0x4eb5cf[_0xab3e('0x27')]);if(_0x49d67f[_0xab3e('0x29')]>0x0){return _0x14a845[_0xab3e('0x16')](0x190)[_0xab3e('0x2a')](_0x49d67f);}var _0x35d998=_0x4eb5cf[_0xab3e('0x27')][_0xab3e('0x2b')];var _0x1f77ec=respondWithRpcPromise('VoiceChannels');var _0x979b12=getAgent(_0x35d998);return Promise[_0xab3e('0x41')]([_0x1f77ec,_0x979b12])[_0xab3e('0x20')](function(_0x114476){var _0x2b51b3=_0x114476[0x0];var _0x55edc3=_0x114476[0x1];var _0x16a436=_[_0xab3e('0x21')](_0x2b51b3[_0xab3e('0x22')],function(_0x3a5e8f){return _0x3a5e8f[_0xab3e('0x23')]==_0x55edc3['id'];});return _0x14a845[_0xab3e('0x16')](0xc8)['json']({'count':_0x16a436['length'],'rows':_0x16a436});})['catch'](handleError(_0x14a845));};exports[_0xab3e('0x42')]=function(_0xcfe032,_0x1805be){logger['info'](_0xab3e('0x43'),_0xcfe032[_0xab3e('0x27')]);var _0x4936c2=conferenceValidation[_0xab3e('0x28')](_0xcfe032[_0xab3e('0x27')]);if(_0x4936c2[_0xab3e('0x29')]>0x0){return _0x1805be[_0xab3e('0x16')](0x190)[_0xab3e('0x2a')](_0x4936c2);}var _0x4b823d=_0xcfe032[_0xab3e('0x27')][_0xab3e('0x2b')];return getAgent(_0x4b823d)[_0xab3e('0x20')](function(_0x334cb8){logger[_0xab3e('0x2e')]('entityFound:',_0x334cb8['name']);emit(util['format']('user:%s',_0x334cb8[_0xab3e('0x15')]),_0xab3e('0x44'));return _0x1805be['status'](0xc8)[_0xab3e('0x2a')]({'error':![],'message':_0xab3e('0x45')});})[_0xab3e('0x1c')](handleError(_0x1805be));};exports[_0xab3e('0x46')]=function(_0x455d80,_0x1ced4f){logger[_0xab3e('0x2e')]('transfer\x20fired:',_0x455d80[_0xab3e('0x27')]);var _0x73f558=transferValidation[_0xab3e('0x28')](_0x455d80[_0xab3e('0x27')]);if(_0x73f558['length']>0x0){return _0x1ced4f[_0xab3e('0x16')](0x190)['json'](_0x73f558);}var _0x4e97d3=_0x455d80[_0xab3e('0x27')][_0xab3e('0x2b')];var _0x13b877=_0x455d80[_0xab3e('0x27')][_0xab3e('0x35')];var _0x3df82e=_0x455d80['body'][_0xab3e('0x47')];return getAgent(_0x4e97d3)[_0xab3e('0x20')](function(_0x28e7b1){logger['info'](_0xab3e('0x2f'),_0x28e7b1[_0xab3e('0x15')]);emit(util[_0xab3e('0x30')](_0xab3e('0x31'),_0x28e7b1[_0xab3e('0x15')]),_0xab3e('0x48'),{'sessionId':_0x13b877,'transferNumber':_0x3df82e});return _0x1ced4f[_0xab3e('0x16')](0xc8)[_0xab3e('0x2a')]({'error':![],'message':_0xab3e('0x49')});})[_0xab3e('0x1c')](handleError(_0x1ced4f));};