Built motion from commit 53172ac8.|2.6.30
[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 _0xab8f=['lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','redis','defaults','localhost','socket.io-emitter','validate','callNumber\x20is\x20required','string','number','userId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','error','stack','status','name','request','then','code','message','result','catch','User','agent','all','filter','rows','UserId','sessionId','\x20not\x20found!','originate','body','length','json','userId','callNumber','callerId','entityFound:','user:%s','webbar:originate','originate\x20executed!','webbar:hangup','hangup\x20executed!','answer\x20fired:','format','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','VoiceChannels','conference','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path'];(function(_0x9aa273,_0x1c84bb){var _0x1d5145=function(_0x3f4a3f){while(--_0x3f4a3f){_0x9aa273['push'](_0x9aa273['shift']());}};_0x1d5145(++_0x1c84bb);}(_0xab8f,0x12b));var _0xfab8=function(_0x1ee068,_0x123a93){_0x1ee068=_0x1ee068-0x0;var _0x2091d6=_0xab8f[_0x1ee068];return _0x2091d6;};'use strict';var path=require(_0xfab8('0x0'));var fs=require('fs');var _=require(_0xfab8('0x1'));var db=require(_0xfab8('0x2'))['db'];var config=require(_0xfab8('0x3'));var util=require(_0xfab8('0x4'));var BPromise=require(_0xfab8('0x5'));var jayson=require(_0xfab8('0x6'));var amiClient=jayson[_0xfab8('0x7')][_0xfab8('0x8')]({'port':0x232a});var logger=require(_0xfab8('0x9'))(_0xfab8('0xa'));var Redis=require('ioredis');config[_0xfab8('0xb')]=_[_0xfab8('0xc')](config[_0xfab8('0xb')],{'host':_0xfab8('0xd'),'port':0x18eb});var io=require(_0xfab8('0xe'))(new Redis(config[_0xfab8('0xb')]));var Schema=require(_0xfab8('0xf'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0xfab8('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xfab8('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0xfab8('0x12'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xfab8('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xfab8('0x12'),'required':[!![],_0xfab8('0x13')]},'sessionId':{'type':_0xfab8('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xfab8('0x12'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xfab8('0x11'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xfab8('0x11'),'required':[!![],_0xfab8('0x14')]}});var holdValidation=new Schema({'userId':{'type':_0xfab8('0x12'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xfab8('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xfab8('0x12'),'required':[!![],_0xfab8('0x13')]},'sessionId':{'type':_0xfab8('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xfab8('0x12'),'required':[!![],_0xfab8('0x13')]}});var conferenceValidation=new Schema({'userId':{'type':_0xfab8('0x12'),'required':[!![],_0xfab8('0x13')]}});function emit(_0x24d6f8,_0x337250,_0x2f87d4){logger[_0xfab8('0x15')](_0x24d6f8,_0x337250,JSON['stringify'](_0x2f87d4));io['to'](_0x24d6f8)[_0xfab8('0x16')](_0x337250,_0x2f87d4);}function handleError(_0x2e98e3){return function(_0x51ea98){console[_0xfab8('0x17')]('handleError:',_0x51ea98,_0x51ea98 instanceof RangeError);logger[_0xfab8('0x18')](_0x51ea98[_0xfab8('0x19')]);if(_0x51ea98 instanceof RangeError){if(_0x51ea98['name']){delete _0x51ea98['name'];}_0x2e98e3[_0xfab8('0x1a')](0x194)['send'](_0x51ea98);}else{if(_0x51ea98[_0xfab8('0x1b')]){delete _0x51ea98[_0xfab8('0x1b')];}_0x2e98e3[_0xfab8('0x1a')](0x1f4)['send'](_0x51ea98);}};}function checkError(){return function(_0x502d0f){if(!_0x502d0f){throw new RangeError('NotFound');}return _0x502d0f;};}function respondWithRpcPromise(_0x50c2c6,_0x4f9bab){return new BPromise(function(_0x52bf74,_0x4792f4){var _0x1a28b8=amiClient;return _0x1a28b8[_0xfab8('0x1c')](_0x50c2c6,_0x4f9bab)[_0xfab8('0x1d')](function(_0x279b51){if(_0x279b51['error']){if(_0x279b51[_0xfab8('0x18')][_0xfab8('0x1e')]===0x1f4){return _0x4792f4(_0x279b51['error'][_0xfab8('0x1f')]);}return _0x52bf74(_0x279b51['error']['message']);}else{_0x52bf74(_0x279b51[_0xfab8('0x20')]);}})[_0xfab8('0x21')](function(_0x37e927){_0x4792f4(_0x37e927);});});}function getAgent(_0x3b41d0){return db[_0xfab8('0x22')]['findOne']({'where':{'id':_0x3b41d0,'role':_0xfab8('0x23')}})[_0xfab8('0x1d')](checkError());}function getAgentCheckSession(_0x5018ac,_0x3f2aaa){return new BPromise(function(_0x363eb0,_0x38d5b5){var _0x670180=respondWithRpcPromise('VoiceChannels');var _0x12e882=getAgent(_0x5018ac);Promise[_0xfab8('0x24')]([_0x670180,_0x12e882])['then'](function(_0x5cb3c3){var _0x421429=_0x5cb3c3[0x0];var _0xdfd783=_0x5cb3c3[0x1];var _0x2d459c=_[_0xfab8('0x25')](_0x421429[_0xfab8('0x26')],function(_0x1a884c){return _0x1a884c[_0xfab8('0x27')]==_0xdfd783['id']&&_0x1a884c[_0xfab8('0x28')]==_0x3f2aaa;});if(_0x2d459c['length']==0x1){_0x363eb0(_0xdfd783);}else{_0x38d5b5(new RangeError('sessionId\x20'+_0x3f2aaa+_0xfab8('0x29')));}});});}exports[_0xfab8('0x2a')]=function(_0x169fed,_0x247a70){logger['info']('originate\x20fired:',_0x169fed[_0xfab8('0x2b')]);var _0x3f24d5=originateValidation[_0xfab8('0xf')](_0x169fed[_0xfab8('0x2b')]);if(_0x3f24d5[_0xfab8('0x2c')]>0x0){return _0x247a70[_0xfab8('0x1a')](0x190)[_0xfab8('0x2d')](_0x3f24d5);}var _0x3efc32=_0x169fed['body'][_0xfab8('0x2e')];var _0x385f32=_0x169fed['body'][_0xfab8('0x2f')];var _0xc59717=_0x169fed[_0xfab8('0x2b')][_0xfab8('0x30')];var _0x3e93bf=_0x169fed[_0xfab8('0x2b')]['callbackUrl'];return getAgent(_0x3efc32)['then'](function(_0x2be558){logger['info'](_0xfab8('0x31'),_0x2be558[_0xfab8('0x1b')]);emit(util['format'](_0xfab8('0x32'),_0x2be558[_0xfab8('0x1b')]),_0xfab8('0x33'),{'callNumber':_0x385f32,'callerId':_0xc59717,'callbackUrl':_0x3e93bf});return _0x247a70['status'](0xc8)[_0xfab8('0x2d')]({'error':![],'message':_0xfab8('0x34')});})['catch'](handleError(_0x247a70));};exports['hangup']=function(_0x159f7d,_0x86354){logger[_0xfab8('0x15')]('hangup\x20fired:',_0x159f7d['body']);var _0x2921a3=hangupValidation[_0xfab8('0xf')](_0x159f7d[_0xfab8('0x2b')]);if(_0x2921a3[_0xfab8('0x2c')]>0x0){return _0x86354[_0xfab8('0x1a')](0x190)[_0xfab8('0x2d')](_0x2921a3);}var _0x3f7d53=_0x159f7d['body'][_0xfab8('0x2e')];var _0x3c2f1c=_0x159f7d[_0xfab8('0x2b')][_0xfab8('0x28')];return getAgent(_0x3f7d53)['then'](function(_0x54fc83){logger['info']('entityFound:',_0x54fc83[_0xfab8('0x1b')]);emit(util['format']('user:%s',_0x54fc83[_0xfab8('0x1b')]),_0xfab8('0x35'),{'sessionId':_0x3c2f1c});return _0x86354[_0xfab8('0x1a')](0xc8)[_0xfab8('0x2d')]({'error':![],'message':_0xfab8('0x36')});})[_0xfab8('0x21')](handleError(_0x86354));};exports['answer']=function(_0x29a4c9,_0x4105b1){logger[_0xfab8('0x15')](_0xfab8('0x37'),_0x29a4c9[_0xfab8('0x2b')]);var _0x4a1d1c=answerValidation[_0xfab8('0xf')](_0x29a4c9['body']);if(_0x4a1d1c[_0xfab8('0x2c')]>0x0){return _0x4105b1[_0xfab8('0x1a')](0x190)[_0xfab8('0x2d')](_0x4a1d1c);}var _0x5b2317=_0x29a4c9['body'][_0xfab8('0x2e')];var _0x2d4101=_0x29a4c9[_0xfab8('0x2b')][_0xfab8('0x28')];return getAgent(_0x5b2317)[_0xfab8('0x1d')](function(_0x8dba92){logger[_0xfab8('0x15')]('entityFound:',_0x8dba92[_0xfab8('0x1b')]);emit(util[_0xfab8('0x38')]('user:%s',_0x8dba92[_0xfab8('0x1b')]),'webbar:answer',{'sessionId':_0x2d4101});return _0x4105b1[_0xfab8('0x1a')](0xc8)['json']({'error':![],'message':_0xfab8('0x39')});})[_0xfab8('0x21')](handleError(_0x4105b1));};exports['hold']=function(_0x3b7696,_0x351fd5){logger[_0xfab8('0x15')](_0xfab8('0x3a'),_0x3b7696[_0xfab8('0x2b')]);var _0x33cfe8=holdValidation['validate'](_0x3b7696[_0xfab8('0x2b')]);if(_0x33cfe8[_0xfab8('0x2c')]>0x0){return _0x351fd5[_0xfab8('0x1a')](0x190)[_0xfab8('0x2d')](_0x33cfe8);}var _0x184d36=_0x3b7696['body'][_0xfab8('0x2e')];var _0x45b077=_0x3b7696['body']['sessionId'];return getAgent(_0x184d36)[_0xfab8('0x1d')](function(_0x43f201){logger[_0xfab8('0x15')]('entityFound:',_0x43f201[_0xfab8('0x1b')]);emit(util[_0xfab8('0x38')]('user:%s',_0x43f201[_0xfab8('0x1b')]),_0xfab8('0x3b'),{'sessionId':_0x45b077});return _0x351fd5[_0xfab8('0x1a')](0xc8)['json']({'error':![],'message':_0xfab8('0x3c')});})['catch'](handleError(_0x351fd5));};exports[_0xfab8('0x3d')]=function(_0x321266,_0x70109a){logger['info'](_0xfab8('0x3e'),_0x321266[_0xfab8('0x2b')]);var _0x53d204=unholdValidation['validate'](_0x321266[_0xfab8('0x2b')]);if(_0x53d204['length']>0x0){return _0x70109a[_0xfab8('0x1a')](0x190)['json'](_0x53d204);}var _0x316cee=_0x321266[_0xfab8('0x2b')][_0xfab8('0x2e')];var _0x789c72=_0x321266[_0xfab8('0x2b')][_0xfab8('0x28')];return getAgent(_0x316cee)[_0xfab8('0x1d')](function(_0x40563b){logger[_0xfab8('0x15')]('entityFound:',_0x40563b[_0xfab8('0x1b')]);emit(util[_0xfab8('0x38')]('user:%s',_0x40563b['name']),_0xfab8('0x3f'),{'sessionId':_0x789c72});return _0x70109a[_0xfab8('0x1a')](0xc8)[_0xfab8('0x2d')]({'error':![],'message':_0xfab8('0x40')});})[_0xfab8('0x21')](handleError(_0x70109a));};exports['calls']=function(_0x1e209b,_0x29fd2f){logger[_0xfab8('0x15')](_0xfab8('0x41'),_0x29fd2f[_0xfab8('0x2b')]);var _0x6c34e4=callsValidation[_0xfab8('0xf')](_0x1e209b[_0xfab8('0x2b')]);if(_0x6c34e4[_0xfab8('0x2c')]>0x0){return _0x29fd2f[_0xfab8('0x1a')](0x190)[_0xfab8('0x2d')](_0x6c34e4);}var _0x4ddb2e=_0x1e209b[_0xfab8('0x2b')][_0xfab8('0x2e')];var _0x56a126=respondWithRpcPromise(_0xfab8('0x42'));var _0x3c1ef8=getAgent(_0x4ddb2e);return Promise['all']([_0x56a126,_0x3c1ef8])[_0xfab8('0x1d')](function(_0x5721ed){var _0xbd28a8=_0x5721ed[0x0];var _0x1302ba=_0x5721ed[0x1];var _0x21bb6e=_[_0xfab8('0x25')](_0xbd28a8[_0xfab8('0x26')],function(_0x5229d0){return _0x5229d0['UserId']==_0x1302ba['id'];});return _0x29fd2f[_0xfab8('0x1a')](0xc8)[_0xfab8('0x2d')]({'count':_0x21bb6e[_0xfab8('0x2c')],'rows':_0x21bb6e});})['catch'](handleError(_0x29fd2f));};exports[_0xfab8('0x43')]=function(_0x2cddc7,_0x327c86){logger[_0xfab8('0x15')]('conference\x20fired:',_0x2cddc7[_0xfab8('0x2b')]);var _0x448f43=conferenceValidation[_0xfab8('0xf')](_0x2cddc7[_0xfab8('0x2b')]);if(_0x448f43[_0xfab8('0x2c')]>0x0){return _0x327c86[_0xfab8('0x1a')](0x190)['json'](_0x448f43);}var _0x174617=_0x2cddc7[_0xfab8('0x2b')]['userId'];return getAgent(_0x174617)[_0xfab8('0x1d')](function(_0x33355d){logger[_0xfab8('0x15')](_0xfab8('0x31'),_0x33355d[_0xfab8('0x1b')]);emit(util[_0xfab8('0x38')](_0xfab8('0x32'),_0x33355d[_0xfab8('0x1b')]),_0xfab8('0x44'));return _0x327c86[_0xfab8('0x1a')](0xc8)[_0xfab8('0x2d')]({'error':![],'message':_0xfab8('0x45')});})[_0xfab8('0x21')](handleError(_0x327c86));};exports[_0xfab8('0x46')]=function(_0x48ccc2,_0x57fac0){logger[_0xfab8('0x15')](_0xfab8('0x47'),_0x48ccc2[_0xfab8('0x2b')]);var _0xc7b932=transferValidation[_0xfab8('0xf')](_0x48ccc2[_0xfab8('0x2b')]);if(_0xc7b932['length']>0x0){return _0x57fac0[_0xfab8('0x1a')](0x190)[_0xfab8('0x2d')](_0xc7b932);}var _0x16b232=_0x48ccc2[_0xfab8('0x2b')][_0xfab8('0x2e')];var _0x1c6392=_0x48ccc2[_0xfab8('0x2b')]['sessionId'];var _0x46b3fc=_0x48ccc2[_0xfab8('0x2b')][_0xfab8('0x48')];return getAgent(_0x16b232)[_0xfab8('0x1d')](function(_0x135cb8){logger[_0xfab8('0x15')](_0xfab8('0x31'),_0x135cb8[_0xfab8('0x1b')]);emit(util[_0xfab8('0x38')]('user:%s',_0x135cb8[_0xfab8('0x1b')]),_0xfab8('0x49'),{'sessionId':_0x1c6392,'transferNumber':_0x46b3fc});return _0x57fac0['status'](0xc8)[_0xfab8('0x2d')]({'error':![],'message':_0xfab8('0x4a')});})[_0xfab8('0x21')](handleError(_0x57fac0));};