e3f546f6b9f32d7c2a3866b2664b027464208c54
[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 _0x919d=['redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','error','name','status','send','NotFound','request','then','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','length','sessionId\x20','\x20not\x20found!','originate','body','json','callNumber','callerId','entityFound:','format','user:%s','originate\x20executed!','hangup','hangup\x20fired:','userId','sessionId','webbar:hangup','hangup\x20executed!','answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','bluebird','client','webbarapi','ioredis'];(function(_0x4df94b,_0x1169a5){var _0x3fb6b4=function(_0x3f7860){while(--_0x3f7860){_0x4df94b['push'](_0x4df94b['shift']());}};_0x3fb6b4(++_0x1169a5);}(_0x919d,0x1c0));var _0xd919=function(_0x40e570,_0xcdd91a){_0x40e570=_0x40e570-0x0;var _0x55f1c7=_0x919d[_0x40e570];return _0x55f1c7;};'use strict';var path=require(_0xd919('0x0'));var fs=require('fs');var _=require(_0xd919('0x1'));var db=require(_0xd919('0x2'))['db'];var config=require(_0xd919('0x3'));var util=require('util');var BPromise=require(_0xd919('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0xd919('0x5')]['http']({'port':0x232a});var logger=require('../../config/logger')(_0xd919('0x6'));var Redis=require(_0xd919('0x7'));config['redis']=_['defaults'](config[_0xd919('0x8')],{'host':_0xd919('0x9'),'port':0x18eb});var io=require(_0xd919('0xa'))(new Redis(config['redis']));var Schema=require(_0xd919('0xb'));var originateValidation=new Schema({'userId':{'type':_0xd919('0xc'),'required':[!![],_0xd919('0xd')]},'callNumber':{'type':_0xd919('0xe'),'required':[!![],_0xd919('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xd919('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0xd919('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xd919('0xc'),'required':[!![],_0xd919('0xd')]},'sessionId':{'type':_0xd919('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xd919('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':[!![],_0xd919('0x10')]},'transferNumber':{'type':'string','required':[!![],_0xd919('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xd919('0xc'),'required':[!![],_0xd919('0xd')]},'sessionId':{'type':_0xd919('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xd919('0xc'),'required':[!![],_0xd919('0xd')]},'sessionId':{'type':_0xd919('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xd919('0xc'),'required':[!![],_0xd919('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x462ca8,_0x1dfd4f,_0x5eb806){logger[_0xd919('0x12')](_0x462ca8,_0x1dfd4f,JSON[_0xd919('0x13')](_0x5eb806));io['to'](_0x462ca8)['emit'](_0x1dfd4f,_0x5eb806);}function handleError(_0x14431c){return function(_0x3d1b3a){console['log']('handleError:',_0x3d1b3a,_0x3d1b3a instanceof RangeError);logger[_0xd919('0x14')](_0x3d1b3a['stack']);if(_0x3d1b3a instanceof RangeError){if(_0x3d1b3a[_0xd919('0x15')]){delete _0x3d1b3a[_0xd919('0x15')];}_0x14431c[_0xd919('0x16')](0x194)[_0xd919('0x17')](_0x3d1b3a);}else{if(_0x3d1b3a[_0xd919('0x15')]){delete _0x3d1b3a[_0xd919('0x15')];}_0x14431c[_0xd919('0x16')](0x1f4)[_0xd919('0x17')](_0x3d1b3a);}};}function checkError(){return function(_0x472d71){if(!_0x472d71){throw new RangeError(_0xd919('0x18'));}return _0x472d71;};}function respondWithRpcPromise(_0x5ce4c2,_0x1c7c44){return new BPromise(function(_0x400a3c,_0x4dbe9e){var _0x1f34dd=amiClient;return _0x1f34dd[_0xd919('0x19')](_0x5ce4c2,_0x1c7c44)[_0xd919('0x1a')](function(_0x45776a){if(_0x45776a[_0xd919('0x14')]){if(_0x45776a['error'][_0xd919('0x1b')]===0x1f4){return _0x4dbe9e(_0x45776a[_0xd919('0x14')][_0xd919('0x1c')]);}return _0x400a3c(_0x45776a['error']['message']);}else{_0x400a3c(_0x45776a[_0xd919('0x1d')]);}})[_0xd919('0x1e')](function(_0x110ccb){_0x4dbe9e(_0x110ccb);});});}function getAgent(_0x1e5bb5){return db[_0xd919('0x1f')][_0xd919('0x20')]({'where':{'id':_0x1e5bb5,'role':_0xd919('0x21')}})[_0xd919('0x1a')](checkError());}function getAgentCheckSession(_0xab7610,_0x1cde28){return new BPromise(function(_0x1d7ebf,_0x3f1206){var _0x3955a8=respondWithRpcPromise(_0xd919('0x22'));var _0x250c01=getAgent(_0xab7610);Promise[_0xd919('0x23')]([_0x3955a8,_0x250c01])[_0xd919('0x1a')](function(_0x214bfa){var _0x4eca02=_0x214bfa[0x0];var _0xbdb08b=_0x214bfa[0x1];var _0x3d0162=_[_0xd919('0x24')](_0x4eca02[_0xd919('0x25')],function(_0x377350){return _0x377350['UserId']==_0xbdb08b['id']&&_0x377350['sessionId']==_0x1cde28;});if(_0x3d0162[_0xd919('0x26')]==0x1){_0x1d7ebf(_0xbdb08b);}else{_0x3f1206(new RangeError(_0xd919('0x27')+_0x1cde28+_0xd919('0x28')));}});});}exports[_0xd919('0x29')]=function(_0x2d69a0,_0x2c16c2){logger[_0xd919('0x12')]('originate\x20fired:',_0x2d69a0['body']);var _0x3634a8=originateValidation[_0xd919('0xb')](_0x2d69a0[_0xd919('0x2a')]);if(_0x3634a8[_0xd919('0x26')]>0x0){return _0x2c16c2['status'](0x190)[_0xd919('0x2b')](_0x3634a8);}var _0x536af2=_0x2d69a0[_0xd919('0x2a')]['userId'];var _0x530b0b=_0x2d69a0['body'][_0xd919('0x2c')];var _0x41e5ce=_0x2d69a0[_0xd919('0x2a')][_0xd919('0x2d')];var _0xa2afac=_0x2d69a0[_0xd919('0x2a')]['callbackUrl'];return getAgent(_0x536af2)['then'](function(_0x37a505){logger[_0xd919('0x12')](_0xd919('0x2e'),_0x37a505[_0xd919('0x15')]);emit(util[_0xd919('0x2f')](_0xd919('0x30'),_0x37a505[_0xd919('0x15')]),'webbar:originate',{'callNumber':_0x530b0b,'callerId':_0x41e5ce,'callbackUrl':_0xa2afac});return _0x2c16c2[_0xd919('0x16')](0xc8)['json']({'error':![],'message':_0xd919('0x31')});})[_0xd919('0x1e')](handleError(_0x2c16c2));};exports[_0xd919('0x32')]=function(_0x39d495,_0x289c52){logger[_0xd919('0x12')](_0xd919('0x33'),_0x39d495['body']);var _0x19712c=hangupValidation[_0xd919('0xb')](_0x39d495[_0xd919('0x2a')]);if(_0x19712c[_0xd919('0x26')]>0x0){return _0x289c52['status'](0x190)[_0xd919('0x2b')](_0x19712c);}var _0x3b380f=_0x39d495[_0xd919('0x2a')][_0xd919('0x34')];var _0x564a6e=_0x39d495['body'][_0xd919('0x35')];return getAgent(_0x3b380f)['then'](function(_0x453344){logger['info']('entityFound:',_0x453344[_0xd919('0x15')]);emit(util[_0xd919('0x2f')](_0xd919('0x30'),_0x453344[_0xd919('0x15')]),_0xd919('0x36'),{'sessionId':_0x564a6e});return _0x289c52[_0xd919('0x16')](0xc8)[_0xd919('0x2b')]({'error':![],'message':_0xd919('0x37')});})[_0xd919('0x1e')](handleError(_0x289c52));};exports['answer']=function(_0x178ebb,_0x514852){logger[_0xd919('0x12')](_0xd919('0x38'),_0x178ebb[_0xd919('0x2a')]);var _0x4487e1=answerValidation[_0xd919('0xb')](_0x178ebb[_0xd919('0x2a')]);if(_0x4487e1['length']>0x0){return _0x514852['status'](0x190)[_0xd919('0x2b')](_0x4487e1);}var _0x3c9897=_0x178ebb[_0xd919('0x2a')]['userId'];var _0x1c0c29=_0x178ebb[_0xd919('0x2a')][_0xd919('0x35')];return getAgent(_0x3c9897)['then'](function(_0x1894e6){logger[_0xd919('0x12')]('entityFound:',_0x1894e6[_0xd919('0x15')]);emit(util['format'](_0xd919('0x30'),_0x1894e6[_0xd919('0x15')]),_0xd919('0x39'),{'sessionId':_0x1c0c29});return _0x514852[_0xd919('0x16')](0xc8)[_0xd919('0x2b')]({'error':![],'message':_0xd919('0x3a')});})[_0xd919('0x1e')](handleError(_0x514852));};exports['hold']=function(_0x4a117d,_0x3578d2){logger['info'](_0xd919('0x3b'),_0x4a117d['body']);var _0x48a362=holdValidation[_0xd919('0xb')](_0x4a117d[_0xd919('0x2a')]);if(_0x48a362['length']>0x0){return _0x3578d2[_0xd919('0x16')](0x190)[_0xd919('0x2b')](_0x48a362);}var _0x41652e=_0x4a117d[_0xd919('0x2a')]['userId'];var _0x3f9266=_0x4a117d[_0xd919('0x2a')][_0xd919('0x35')];return getAgent(_0x41652e)[_0xd919('0x1a')](function(_0x3c4cfa){logger[_0xd919('0x12')](_0xd919('0x2e'),_0x3c4cfa[_0xd919('0x15')]);emit(util[_0xd919('0x2f')]('user:%s',_0x3c4cfa[_0xd919('0x15')]),_0xd919('0x3c'),{'sessionId':_0x3f9266});return _0x3578d2['status'](0xc8)['json']({'error':![],'message':_0xd919('0x3d')});})[_0xd919('0x1e')](handleError(_0x3578d2));};exports[_0xd919('0x3e')]=function(_0x2a1e18,_0x537411){logger['info'](_0xd919('0x3f'),_0x2a1e18['body']);var _0x596d70=unholdValidation[_0xd919('0xb')](_0x2a1e18[_0xd919('0x2a')]);if(_0x596d70[_0xd919('0x26')]>0x0){return _0x537411[_0xd919('0x16')](0x190)['json'](_0x596d70);}var _0x7d09d9=_0x2a1e18[_0xd919('0x2a')][_0xd919('0x34')];var _0x5e1836=_0x2a1e18['body'][_0xd919('0x35')];return getAgent(_0x7d09d9)[_0xd919('0x1a')](function(_0x569d43){logger[_0xd919('0x12')](_0xd919('0x2e'),_0x569d43[_0xd919('0x15')]);emit(util[_0xd919('0x2f')](_0xd919('0x30'),_0x569d43['name']),_0xd919('0x40'),{'sessionId':_0x5e1836});return _0x537411['status'](0xc8)[_0xd919('0x2b')]({'error':![],'message':_0xd919('0x41')});})['catch'](handleError(_0x537411));};exports[_0xd919('0x42')]=function(_0x5e1584,_0x1fcdab){logger[_0xd919('0x12')](_0xd919('0x43'),_0x1fcdab[_0xd919('0x2a')]);var _0x284999=callsValidation[_0xd919('0xb')](_0x5e1584[_0xd919('0x2a')]);if(_0x284999['length']>0x0){return _0x1fcdab[_0xd919('0x16')](0x190)[_0xd919('0x2b')](_0x284999);}var _0x271a04=_0x5e1584[_0xd919('0x2a')][_0xd919('0x34')];var _0x592e20=respondWithRpcPromise(_0xd919('0x22'));var _0x41412f=getAgent(_0x271a04);return Promise[_0xd919('0x23')]([_0x592e20,_0x41412f])[_0xd919('0x1a')](function(_0x202752){var _0x5eff1f=_0x202752[0x0];var _0x36a2a4=_0x202752[0x1];var _0x2d58f5=_[_0xd919('0x24')](_0x5eff1f[_0xd919('0x25')],function(_0x4eb0a0){return _0x4eb0a0['UserId']==_0x36a2a4['id'];});return _0x1fcdab[_0xd919('0x16')](0xc8)[_0xd919('0x2b')]({'count':_0x2d58f5['length'],'rows':_0x2d58f5});})['catch'](handleError(_0x1fcdab));};exports['conference']=function(_0x544818,_0x243498){logger[_0xd919('0x12')](_0xd919('0x44'),_0x544818[_0xd919('0x2a')]);var _0x16b2e8=conferenceValidation[_0xd919('0xb')](_0x544818[_0xd919('0x2a')]);if(_0x16b2e8['length']>0x0){return _0x243498[_0xd919('0x16')](0x190)[_0xd919('0x2b')](_0x16b2e8);}var _0x1b0e31=_0x544818['body'][_0xd919('0x34')];return getAgent(_0x1b0e31)[_0xd919('0x1a')](function(_0x493e42){logger['info'](_0xd919('0x2e'),_0x493e42[_0xd919('0x15')]);emit(util['format'](_0xd919('0x30'),_0x493e42[_0xd919('0x15')]),_0xd919('0x45'));return _0x243498[_0xd919('0x16')](0xc8)[_0xd919('0x2b')]({'error':![],'message':_0xd919('0x46')});})['catch'](handleError(_0x243498));};exports[_0xd919('0x47')]=function(_0x513e80,_0x2d7120){logger['info'](_0xd919('0x48'),_0x513e80[_0xd919('0x2a')]);var _0x3f3ca0=transferValidation[_0xd919('0xb')](_0x513e80['body']);if(_0x3f3ca0[_0xd919('0x26')]>0x0){return _0x2d7120[_0xd919('0x16')](0x190)[_0xd919('0x2b')](_0x3f3ca0);}var _0x3e14ce=_0x513e80['body'][_0xd919('0x34')];var _0x15a895=_0x513e80[_0xd919('0x2a')]['sessionId'];var _0x237b08=_0x513e80[_0xd919('0x2a')][_0xd919('0x49')];return getAgent(_0x3e14ce)[_0xd919('0x1a')](function(_0x44a0d7){logger['info'](_0xd919('0x2e'),_0x44a0d7['name']);emit(util[_0xd919('0x2f')](_0xd919('0x30'),_0x44a0d7['name']),_0xd919('0x4a'),{'sessionId':_0x15a895,'transferNumber':_0x237b08});return _0x2d7120[_0xd919('0x16')](0xc8)[_0xd919('0x2b')]({'error':![],'message':_0xd919('0x4b')});})[_0xd919('0x1e')](handleError(_0x2d7120));};