Built motion from commit 3c2ce842.|2.6.31
[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 _0xe35c=['info','stringify','emit','log','handleError:','error','stack','name','status','request','then','message','result','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','callNumber','callbackUrl','user:%s','webbar:originate','hangup','hangup\x20fired:','userId','entityFound:','format','webbar:hangup','hangup\x20executed!','catch','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required'];(function(_0x571f36,_0x58551e){var _0x12724f=function(_0x6e7d5f){while(--_0x6e7d5f){_0x571f36['push'](_0x571f36['shift']());}};_0x12724f(++_0x58551e);}(_0xe35c,0xd5));var _0xce35=function(_0x521c79,_0x301016){_0x521c79=_0x521c79-0x0;var _0xfbee65=_0xe35c[_0x521c79];return _0xfbee65;};'use strict';var path=require(_0xce35('0x0'));var fs=require('fs');var _=require(_0xce35('0x1'));var db=require(_0xce35('0x2'))['db'];var config=require(_0xce35('0x3'));var util=require(_0xce35('0x4'));var BPromise=require(_0xce35('0x5'));var jayson=require(_0xce35('0x6'));var amiClient=jayson['client'][_0xce35('0x7')]({'port':0x232a});var logger=require(_0xce35('0x8'))(_0xce35('0x9'));var Redis=require(_0xce35('0xa'));config[_0xce35('0xb')]=_[_0xce35('0xc')](config[_0xce35('0xb')],{'host':_0xce35('0xd'),'port':0x18eb});var io=require(_0xce35('0xe'))(new Redis(config[_0xce35('0xb')]));var Schema=require(_0xce35('0xf'));var originateValidation=new Schema({'userId':{'type':_0xce35('0x10'),'required':[!![],_0xce35('0x11')]},'callNumber':{'type':_0xce35('0x12'),'required':[!![],_0xce35('0x13')]},'callerId':{'type':_0xce35('0x12')},'callbackUrl':{'type':_0xce35('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0xce35('0x10'),'required':[!![],_0xce35('0x11')]},'sessionId':{'type':_0xce35('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xce35('0x11')]},'sessionId':{'type':_0xce35('0x12'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xce35('0x10'),'required':[!![],_0xce35('0x11')]},'sessionId':{'type':_0xce35('0x12'),'required':[!![],_0xce35('0x14')]},'transferNumber':{'type':_0xce35('0x12'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xce35('0x11')]},'sessionId':{'type':_0xce35('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xce35('0x10'),'required':[!![],_0xce35('0x11')]},'sessionId':{'type':_0xce35('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xce35('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xce35('0x10'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x2e4057,_0x57523b,_0x4519de){logger[_0xce35('0x15')](_0x2e4057,_0x57523b,JSON[_0xce35('0x16')](_0x4519de));io['to'](_0x2e4057)[_0xce35('0x17')](_0x57523b,_0x4519de);}function handleError(_0x588327){return function(_0x2870ab){console[_0xce35('0x18')](_0xce35('0x19'),_0x2870ab,_0x2870ab instanceof RangeError);logger[_0xce35('0x1a')](_0x2870ab[_0xce35('0x1b')]);if(_0x2870ab instanceof RangeError){if(_0x2870ab[_0xce35('0x1c')]){delete _0x2870ab[_0xce35('0x1c')];}_0x588327[_0xce35('0x1d')](0x194)['send'](_0x2870ab);}else{if(_0x2870ab[_0xce35('0x1c')]){delete _0x2870ab['name'];}_0x588327['status'](0x1f4)['send'](_0x2870ab);}};}function checkError(){return function(_0x35dc1a){if(!_0x35dc1a){throw new RangeError('NotFound');}return _0x35dc1a;};}function respondWithRpcPromise(_0x1ef81f,_0x28522f){return new BPromise(function(_0x1c6b98,_0x326176){var _0x5af2e5=amiClient;return _0x5af2e5[_0xce35('0x1e')](_0x1ef81f,_0x28522f)[_0xce35('0x1f')](function(_0x52fc6e){if(_0x52fc6e[_0xce35('0x1a')]){if(_0x52fc6e['error']['code']===0x1f4){return _0x326176(_0x52fc6e[_0xce35('0x1a')][_0xce35('0x20')]);}return _0x1c6b98(_0x52fc6e[_0xce35('0x1a')][_0xce35('0x20')]);}else{_0x1c6b98(_0x52fc6e[_0xce35('0x21')]);}})['catch'](function(_0x26caab){_0x326176(_0x26caab);});});}function getAgent(_0x54fccd){return db[_0xce35('0x22')][_0xce35('0x23')]({'where':{'id':_0x54fccd,'role':_0xce35('0x24')}})[_0xce35('0x1f')](checkError());}function getAgentCheckSession(_0x4376fd,_0x1da5c9){return new BPromise(function(_0x1a40ce,_0x46b64c){var _0xd7c678=respondWithRpcPromise(_0xce35('0x25'));var _0x4ebf7b=getAgent(_0x4376fd);Promise[_0xce35('0x26')]([_0xd7c678,_0x4ebf7b])[_0xce35('0x1f')](function(_0x47ceee){var _0x5f2111=_0x47ceee[0x0];var _0x129aa5=_0x47ceee[0x1];var _0x4aa760=_[_0xce35('0x27')](_0x5f2111[_0xce35('0x28')],function(_0x491a93){return _0x491a93[_0xce35('0x29')]==_0x129aa5['id']&&_0x491a93[_0xce35('0x2a')]==_0x1da5c9;});if(_0x4aa760[_0xce35('0x2b')]==0x1){_0x1a40ce(_0x129aa5);}else{_0x46b64c(new RangeError(_0xce35('0x2c')+_0x1da5c9+_0xce35('0x2d')));}});});}exports[_0xce35('0x2e')]=function(_0xc47d97,_0x3b1400){logger[_0xce35('0x15')](_0xce35('0x2f'),_0xc47d97[_0xce35('0x30')]);var _0x4782f2=originateValidation[_0xce35('0xf')](_0xc47d97[_0xce35('0x30')]);if(_0x4782f2[_0xce35('0x2b')]>0x0){return _0x3b1400[_0xce35('0x1d')](0x190)[_0xce35('0x31')](_0x4782f2);}var _0x1b0c8b=_0xc47d97[_0xce35('0x30')]['userId'];var _0x3af94e=_0xc47d97[_0xce35('0x30')][_0xce35('0x32')];var _0x215871=_0xc47d97[_0xce35('0x30')]['callerId'];var _0x523bfd=_0xc47d97['body'][_0xce35('0x33')];return getAgent(_0x1b0c8b)['then'](function(_0x3c8f90){logger[_0xce35('0x15')]('entityFound:',_0x3c8f90[_0xce35('0x1c')]);emit(util['format'](_0xce35('0x34'),_0x3c8f90[_0xce35('0x1c')]),_0xce35('0x35'),{'callNumber':_0x3af94e,'callerId':_0x215871,'callbackUrl':_0x523bfd});return _0x3b1400[_0xce35('0x1d')](0xc8)[_0xce35('0x31')]({'error':![],'message':'originate\x20executed!'});})['catch'](handleError(_0x3b1400));};exports[_0xce35('0x36')]=function(_0x4167e3,_0x3fb719){logger['info'](_0xce35('0x37'),_0x4167e3[_0xce35('0x30')]);var _0xd4c9d2=hangupValidation[_0xce35('0xf')](_0x4167e3['body']);if(_0xd4c9d2[_0xce35('0x2b')]>0x0){return _0x3fb719['status'](0x190)['json'](_0xd4c9d2);}var _0x5e2476=_0x4167e3[_0xce35('0x30')][_0xce35('0x38')];var _0x196b58=_0x4167e3['body'][_0xce35('0x2a')];return getAgent(_0x5e2476)[_0xce35('0x1f')](function(_0x23054e){logger['info'](_0xce35('0x39'),_0x23054e[_0xce35('0x1c')]);emit(util[_0xce35('0x3a')](_0xce35('0x34'),_0x23054e['name']),_0xce35('0x3b'),{'sessionId':_0x196b58});return _0x3fb719[_0xce35('0x1d')](0xc8)[_0xce35('0x31')]({'error':![],'message':_0xce35('0x3c')});})[_0xce35('0x3d')](handleError(_0x3fb719));};exports['answer']=function(_0x12cd0e,_0x5decc1){logger[_0xce35('0x15')](_0xce35('0x3e'),_0x12cd0e[_0xce35('0x30')]);var _0x3ec65d=answerValidation['validate'](_0x12cd0e[_0xce35('0x30')]);if(_0x3ec65d['length']>0x0){return _0x5decc1[_0xce35('0x1d')](0x190)[_0xce35('0x31')](_0x3ec65d);}var _0x469ee6=_0x12cd0e[_0xce35('0x30')]['userId'];var _0x269cee=_0x12cd0e[_0xce35('0x30')][_0xce35('0x2a')];return getAgent(_0x469ee6)[_0xce35('0x1f')](function(_0x467d57){logger['info'](_0xce35('0x39'),_0x467d57[_0xce35('0x1c')]);emit(util['format'](_0xce35('0x34'),_0x467d57[_0xce35('0x1c')]),_0xce35('0x3f'),{'sessionId':_0x269cee});return _0x5decc1[_0xce35('0x1d')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0xce35('0x3d')](handleError(_0x5decc1));};exports[_0xce35('0x40')]=function(_0x124ad7,_0x3cfdd1){logger[_0xce35('0x15')](_0xce35('0x41'),_0x124ad7['body']);var _0x2df4e5=holdValidation[_0xce35('0xf')](_0x124ad7[_0xce35('0x30')]);if(_0x2df4e5[_0xce35('0x2b')]>0x0){return _0x3cfdd1[_0xce35('0x1d')](0x190)[_0xce35('0x31')](_0x2df4e5);}var _0x53e85d=_0x124ad7[_0xce35('0x30')][_0xce35('0x38')];var _0x15adda=_0x124ad7[_0xce35('0x30')][_0xce35('0x2a')];return getAgent(_0x53e85d)['then'](function(_0x186ed4){logger['info'](_0xce35('0x39'),_0x186ed4[_0xce35('0x1c')]);emit(util[_0xce35('0x3a')]('user:%s',_0x186ed4['name']),_0xce35('0x42'),{'sessionId':_0x15adda});return _0x3cfdd1[_0xce35('0x1d')](0xc8)['json']({'error':![],'message':_0xce35('0x43')});})[_0xce35('0x3d')](handleError(_0x3cfdd1));};exports[_0xce35('0x44')]=function(_0x31653c,_0x356812){logger[_0xce35('0x15')](_0xce35('0x45'),_0x31653c[_0xce35('0x30')]);var _0x1bc491=unholdValidation[_0xce35('0xf')](_0x31653c['body']);if(_0x1bc491[_0xce35('0x2b')]>0x0){return _0x356812[_0xce35('0x1d')](0x190)['json'](_0x1bc491);}var _0xe17f25=_0x31653c[_0xce35('0x30')][_0xce35('0x38')];var _0x1780be=_0x31653c[_0xce35('0x30')][_0xce35('0x2a')];return getAgent(_0xe17f25)[_0xce35('0x1f')](function(_0x1a3331){logger[_0xce35('0x15')](_0xce35('0x39'),_0x1a3331[_0xce35('0x1c')]);emit(util[_0xce35('0x3a')](_0xce35('0x34'),_0x1a3331[_0xce35('0x1c')]),'webbar:unhold',{'sessionId':_0x1780be});return _0x356812['status'](0xc8)[_0xce35('0x31')]({'error':![],'message':_0xce35('0x46')});})[_0xce35('0x3d')](handleError(_0x356812));};exports[_0xce35('0x47')]=function(_0x2cc9ff,_0x134af4){logger['info'](_0xce35('0x48'),_0x134af4['body']);var _0x2b279d=callsValidation[_0xce35('0xf')](_0x2cc9ff[_0xce35('0x30')]);if(_0x2b279d[_0xce35('0x2b')]>0x0){return _0x134af4[_0xce35('0x1d')](0x190)[_0xce35('0x31')](_0x2b279d);}var _0x42785c=_0x2cc9ff[_0xce35('0x30')][_0xce35('0x38')];var _0x235c05=respondWithRpcPromise('VoiceChannels');var _0x4b0e7b=getAgent(_0x42785c);return Promise['all']([_0x235c05,_0x4b0e7b])[_0xce35('0x1f')](function(_0x4b49dc){var _0x28bbbb=_0x4b49dc[0x0];var _0x43e24e=_0x4b49dc[0x1];var _0x57334e=_[_0xce35('0x27')](_0x28bbbb[_0xce35('0x28')],function(_0x4d8d75){return _0x4d8d75[_0xce35('0x29')]==_0x43e24e['id'];});return _0x134af4[_0xce35('0x1d')](0xc8)['json']({'count':_0x57334e[_0xce35('0x2b')],'rows':_0x57334e});})[_0xce35('0x3d')](handleError(_0x134af4));};exports['conference']=function(_0xf62ac3,_0x4e73a1){logger[_0xce35('0x15')]('conference\x20fired:',_0xf62ac3[_0xce35('0x30')]);var _0x1cacae=conferenceValidation[_0xce35('0xf')](_0xf62ac3[_0xce35('0x30')]);if(_0x1cacae[_0xce35('0x2b')]>0x0){return _0x4e73a1['status'](0x190)[_0xce35('0x31')](_0x1cacae);}var _0x4d0c3e=_0xf62ac3[_0xce35('0x30')][_0xce35('0x38')];return getAgent(_0x4d0c3e)[_0xce35('0x1f')](function(_0x508e23){logger[_0xce35('0x15')](_0xce35('0x39'),_0x508e23[_0xce35('0x1c')]);emit(util[_0xce35('0x3a')](_0xce35('0x34'),_0x508e23[_0xce35('0x1c')]),_0xce35('0x49'));return _0x4e73a1[_0xce35('0x1d')](0xc8)[_0xce35('0x31')]({'error':![],'message':'conference\x20executed!'});})[_0xce35('0x3d')](handleError(_0x4e73a1));};exports[_0xce35('0x4a')]=function(_0x1c4ed8,_0x1924c7){logger[_0xce35('0x15')](_0xce35('0x4b'),_0x1c4ed8['body']);var _0x7cdf4a=transferValidation[_0xce35('0xf')](_0x1c4ed8[_0xce35('0x30')]);if(_0x7cdf4a['length']>0x0){return _0x1924c7[_0xce35('0x1d')](0x190)['json'](_0x7cdf4a);}var _0x1208be=_0x1c4ed8[_0xce35('0x30')][_0xce35('0x38')];var _0xef1e75=_0x1c4ed8[_0xce35('0x30')][_0xce35('0x2a')];var _0x465214=_0x1c4ed8[_0xce35('0x30')][_0xce35('0x4c')];return getAgent(_0x1208be)[_0xce35('0x1f')](function(_0x1eae3e){logger['info'](_0xce35('0x39'),_0x1eae3e[_0xce35('0x1c')]);emit(util['format']('user:%s',_0x1eae3e[_0xce35('0x1c')]),'webbar:transfer',{'sessionId':_0xef1e75,'transferNumber':_0x465214});return _0x1924c7['status'](0xc8)[_0xce35('0x31')]({'error':![],'message':_0xce35('0x4d')});})['catch'](handleError(_0x1924c7));};