d454797a1af65dc8a4b7b49d4d4395206b3cd784
[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 _0xbe45=['userId','webbar:answer','answer\x20executed!','hold','hold\x20executed!','unhold','unhold\x20fired:','format','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','transfer','transfer\x20fired:','transferNumber','webbar:transfer','path','lodash','../../config/environment','util','bluebird','jayson/promise','client','http','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','stack','name','status','send','then','error','message','result','catch','User','findOne','VoiceChannels','all','rows','UserId','sessionId','sessionId\x20','originate\x20fired:','body','length','json','callNumber','callerId','webbar:originate','originate\x20executed!','hangup\x20fired:','entityFound:','user:%s','hangup\x20executed!','answer','answer\x20fired:'];(function(_0x1ac3cf,_0x142edc){var _0xf3686c=function(_0x505d75){while(--_0x505d75){_0x1ac3cf['push'](_0x1ac3cf['shift']());}};_0xf3686c(++_0x142edc);}(_0xbe45,0xf0));var _0x5be4=function(_0x16131d,_0x69b9ae){_0x16131d=_0x16131d-0x0;var _0x38719c=_0xbe45[_0x16131d];return _0x38719c;};'use strict';var path=require(_0x5be4('0x0'));var fs=require('fs');var _=require(_0x5be4('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x5be4('0x2'));var util=require(_0x5be4('0x3'));var BPromise=require(_0x5be4('0x4'));var jayson=require(_0x5be4('0x5'));var amiClient=jayson[_0x5be4('0x6')][_0x5be4('0x7')]({'port':0x232a});var logger=require('../../config/logger')(_0x5be4('0x8'));var Redis=require(_0x5be4('0x9'));config[_0x5be4('0xa')]=_[_0x5be4('0xb')](config[_0x5be4('0xa')],{'host':_0x5be4('0xc'),'port':0x18eb});var io=require(_0x5be4('0xd'))(new Redis(config[_0x5be4('0xa')]));var Schema=require(_0x5be4('0xe'));var originateValidation=new Schema({'userId':{'type':_0x5be4('0xf'),'required':[!![],_0x5be4('0x10')]},'callNumber':{'type':_0x5be4('0x11'),'required':[!![],_0x5be4('0x12')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x5be4('0x11')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x5be4('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5be4('0x10')]},'sessionId':{'type':_0x5be4('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5be4('0x10')]},'sessionId':{'type':_0x5be4('0x11'),'required':[!![],_0x5be4('0x13')]},'transferNumber':{'type':'string','required':[!![],_0x5be4('0x14')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5be4('0x10')]},'sessionId':{'type':_0x5be4('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x5be4('0xf'),'required':[!![],_0x5be4('0x10')]},'sessionId':{'type':_0x5be4('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x5be4('0xf'),'required':[!![],_0x5be4('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5be4('0x10')]}});function emit(_0x8466a7,_0x1d7db7,_0x11e581){logger[_0x5be4('0x15')](_0x8466a7,_0x1d7db7,JSON[_0x5be4('0x16')](_0x11e581));io['to'](_0x8466a7)[_0x5be4('0x17')](_0x1d7db7,_0x11e581);}function handleError(_0x2b704d){return function(_0x51662a){console[_0x5be4('0x18')]('handleError:',_0x51662a,_0x51662a instanceof RangeError);logger['error'](_0x51662a[_0x5be4('0x19')]);if(_0x51662a instanceof RangeError){if(_0x51662a[_0x5be4('0x1a')]){delete _0x51662a['name'];}_0x2b704d[_0x5be4('0x1b')](0x194)[_0x5be4('0x1c')](_0x51662a);}else{if(_0x51662a['name']){delete _0x51662a['name'];}_0x2b704d[_0x5be4('0x1b')](0x1f4)[_0x5be4('0x1c')](_0x51662a);}};}function checkError(){return function(_0x4b73f9){if(!_0x4b73f9){throw new RangeError('NotFound');}return _0x4b73f9;};}function respondWithRpcPromise(_0x9bdadd,_0x132489){return new BPromise(function(_0x2843e3,_0x3ccd67){var _0xa20552=amiClient;return _0xa20552['request'](_0x9bdadd,_0x132489)[_0x5be4('0x1d')](function(_0x51d7a7){if(_0x51d7a7[_0x5be4('0x1e')]){if(_0x51d7a7[_0x5be4('0x1e')]['code']===0x1f4){return _0x3ccd67(_0x51d7a7[_0x5be4('0x1e')][_0x5be4('0x1f')]);}return _0x2843e3(_0x51d7a7['error'][_0x5be4('0x1f')]);}else{_0x2843e3(_0x51d7a7[_0x5be4('0x20')]);}})[_0x5be4('0x21')](function(_0x39cf54){_0x3ccd67(_0x39cf54);});});}function getAgent(_0xa7a16){return db[_0x5be4('0x22')][_0x5be4('0x23')]({'where':{'id':_0xa7a16,'role':'agent'}})['then'](checkError());}function getAgentCheckSession(_0x51584f,_0x29b1f4){return new BPromise(function(_0x39430a,_0x5c489e){var _0xd88995=respondWithRpcPromise(_0x5be4('0x24'));var _0x3bd842=getAgent(_0x51584f);Promise[_0x5be4('0x25')]([_0xd88995,_0x3bd842])[_0x5be4('0x1d')](function(_0x1e0485){var _0x4b9029=_0x1e0485[0x0];var _0x1661c2=_0x1e0485[0x1];var _0x17a291=_['filter'](_0x4b9029[_0x5be4('0x26')],function(_0x49780a){return _0x49780a[_0x5be4('0x27')]==_0x1661c2['id']&&_0x49780a[_0x5be4('0x28')]==_0x29b1f4;});if(_0x17a291['length']==0x1){_0x39430a(_0x1661c2);}else{_0x5c489e(new RangeError(_0x5be4('0x29')+_0x29b1f4+'\x20not\x20found!'));}});});}exports['originate']=function(_0x11929e,_0x337ca1){logger[_0x5be4('0x15')](_0x5be4('0x2a'),_0x11929e[_0x5be4('0x2b')]);var _0x23775c=originateValidation[_0x5be4('0xe')](_0x11929e[_0x5be4('0x2b')]);if(_0x23775c[_0x5be4('0x2c')]>0x0){return _0x337ca1[_0x5be4('0x1b')](0x190)[_0x5be4('0x2d')](_0x23775c);}var _0x3c9b5c=_0x11929e['body']['userId'];var _0x31e023=_0x11929e[_0x5be4('0x2b')][_0x5be4('0x2e')];var _0x2af6c3=_0x11929e['body'][_0x5be4('0x2f')];var _0x4ae580=_0x11929e[_0x5be4('0x2b')]['callbackUrl'];return getAgent(_0x3c9b5c)[_0x5be4('0x1d')](function(_0x146a7b){logger['info']('entityFound:',_0x146a7b[_0x5be4('0x1a')]);emit(util['format']('user:%s',_0x146a7b[_0x5be4('0x1a')]),_0x5be4('0x30'),{'callNumber':_0x31e023,'callerId':_0x2af6c3,'callbackUrl':_0x4ae580});return _0x337ca1[_0x5be4('0x1b')](0xc8)['json']({'error':![],'message':_0x5be4('0x31')});})[_0x5be4('0x21')](handleError(_0x337ca1));};exports['hangup']=function(_0xeb99b5,_0x46953c){logger[_0x5be4('0x15')](_0x5be4('0x32'),_0xeb99b5['body']);var _0x68cd9=hangupValidation[_0x5be4('0xe')](_0xeb99b5[_0x5be4('0x2b')]);if(_0x68cd9[_0x5be4('0x2c')]>0x0){return _0x46953c[_0x5be4('0x1b')](0x190)[_0x5be4('0x2d')](_0x68cd9);}var _0x11d139=_0xeb99b5[_0x5be4('0x2b')]['userId'];var _0x41f02e=_0xeb99b5[_0x5be4('0x2b')][_0x5be4('0x28')];return getAgent(_0x11d139)[_0x5be4('0x1d')](function(_0x304fab){logger['info'](_0x5be4('0x33'),_0x304fab[_0x5be4('0x1a')]);emit(util['format'](_0x5be4('0x34'),_0x304fab[_0x5be4('0x1a')]),'webbar:hangup',{'sessionId':_0x41f02e});return _0x46953c[_0x5be4('0x1b')](0xc8)[_0x5be4('0x2d')]({'error':![],'message':_0x5be4('0x35')});})[_0x5be4('0x21')](handleError(_0x46953c));};exports[_0x5be4('0x36')]=function(_0x14ae03,_0x1ab4de){logger[_0x5be4('0x15')](_0x5be4('0x37'),_0x14ae03['body']);var _0x1add45=answerValidation['validate'](_0x14ae03[_0x5be4('0x2b')]);if(_0x1add45[_0x5be4('0x2c')]>0x0){return _0x1ab4de['status'](0x190)[_0x5be4('0x2d')](_0x1add45);}var _0x48c1db=_0x14ae03['body'][_0x5be4('0x38')];var _0x126812=_0x14ae03[_0x5be4('0x2b')][_0x5be4('0x28')];return getAgent(_0x48c1db)[_0x5be4('0x1d')](function(_0x224321){logger[_0x5be4('0x15')]('entityFound:',_0x224321[_0x5be4('0x1a')]);emit(util['format'](_0x5be4('0x34'),_0x224321['name']),_0x5be4('0x39'),{'sessionId':_0x126812});return _0x1ab4de[_0x5be4('0x1b')](0xc8)['json']({'error':![],'message':_0x5be4('0x3a')});})[_0x5be4('0x21')](handleError(_0x1ab4de));};exports[_0x5be4('0x3b')]=function(_0x4f548c,_0x17fabd){logger[_0x5be4('0x15')]('hold\x20fired:',_0x4f548c[_0x5be4('0x2b')]);var _0x4d9bbb=holdValidation['validate'](_0x4f548c[_0x5be4('0x2b')]);if(_0x4d9bbb[_0x5be4('0x2c')]>0x0){return _0x17fabd['status'](0x190)[_0x5be4('0x2d')](_0x4d9bbb);}var _0x57f25d=_0x4f548c['body'][_0x5be4('0x38')];var _0xa8b6a9=_0x4f548c[_0x5be4('0x2b')]['sessionId'];return getAgent(_0x57f25d)['then'](function(_0x378ae7){logger[_0x5be4('0x15')](_0x5be4('0x33'),_0x378ae7[_0x5be4('0x1a')]);emit(util['format'](_0x5be4('0x34'),_0x378ae7[_0x5be4('0x1a')]),'webbar:hold',{'sessionId':_0xa8b6a9});return _0x17fabd[_0x5be4('0x1b')](0xc8)[_0x5be4('0x2d')]({'error':![],'message':_0x5be4('0x3c')});})['catch'](handleError(_0x17fabd));};exports[_0x5be4('0x3d')]=function(_0x3481c9,_0xc9ca2f){logger[_0x5be4('0x15')](_0x5be4('0x3e'),_0x3481c9[_0x5be4('0x2b')]);var _0x1396ce=unholdValidation[_0x5be4('0xe')](_0x3481c9[_0x5be4('0x2b')]);if(_0x1396ce[_0x5be4('0x2c')]>0x0){return _0xc9ca2f['status'](0x190)[_0x5be4('0x2d')](_0x1396ce);}var _0x5f5851=_0x3481c9[_0x5be4('0x2b')][_0x5be4('0x38')];var _0xafdf6e=_0x3481c9[_0x5be4('0x2b')][_0x5be4('0x28')];return getAgent(_0x5f5851)[_0x5be4('0x1d')](function(_0x40e5e3){logger[_0x5be4('0x15')](_0x5be4('0x33'),_0x40e5e3[_0x5be4('0x1a')]);emit(util[_0x5be4('0x3f')]('user:%s',_0x40e5e3[_0x5be4('0x1a')]),_0x5be4('0x40'),{'sessionId':_0xafdf6e});return _0xc9ca2f[_0x5be4('0x1b')](0xc8)[_0x5be4('0x2d')]({'error':![],'message':_0x5be4('0x41')});})['catch'](handleError(_0xc9ca2f));};exports[_0x5be4('0x42')]=function(_0xaae2c,_0xf454e6){logger[_0x5be4('0x15')](_0x5be4('0x43'),_0xf454e6[_0x5be4('0x2b')]);var _0x7d2b3c=callsValidation['validate'](_0xaae2c[_0x5be4('0x2b')]);if(_0x7d2b3c['length']>0x0){return _0xf454e6[_0x5be4('0x1b')](0x190)[_0x5be4('0x2d')](_0x7d2b3c);}var _0x5b8b7a=_0xaae2c[_0x5be4('0x2b')][_0x5be4('0x38')];var _0x3c3ebb=respondWithRpcPromise(_0x5be4('0x24'));var _0x29ca73=getAgent(_0x5b8b7a);return Promise[_0x5be4('0x25')]([_0x3c3ebb,_0x29ca73])[_0x5be4('0x1d')](function(_0xc2719f){var _0x570c5d=_0xc2719f[0x0];var _0x5bb7ce=_0xc2719f[0x1];var _0x3052d8=_['filter'](_0x570c5d[_0x5be4('0x26')],function(_0x562e1d){return _0x562e1d[_0x5be4('0x27')]==_0x5bb7ce['id'];});return _0xf454e6[_0x5be4('0x1b')](0xc8)[_0x5be4('0x2d')]({'count':_0x3052d8[_0x5be4('0x2c')],'rows':_0x3052d8});})[_0x5be4('0x21')](handleError(_0xf454e6));};exports[_0x5be4('0x44')]=function(_0x3991cb,_0x5d8f53){logger[_0x5be4('0x15')](_0x5be4('0x45'),_0x3991cb['body']);var _0x3c862b=conferenceValidation[_0x5be4('0xe')](_0x3991cb[_0x5be4('0x2b')]);if(_0x3c862b[_0x5be4('0x2c')]>0x0){return _0x5d8f53[_0x5be4('0x1b')](0x190)['json'](_0x3c862b);}var _0x3d1ad3=_0x3991cb[_0x5be4('0x2b')][_0x5be4('0x38')];return getAgent(_0x3d1ad3)[_0x5be4('0x1d')](function(_0x915605){logger['info'](_0x5be4('0x33'),_0x915605['name']);emit(util[_0x5be4('0x3f')](_0x5be4('0x34'),_0x915605[_0x5be4('0x1a')]),'webbar:conference');return _0x5d8f53[_0x5be4('0x1b')](0xc8)[_0x5be4('0x2d')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x5d8f53));};exports[_0x5be4('0x46')]=function(_0xbaf63b,_0x48816f){logger[_0x5be4('0x15')](_0x5be4('0x47'),_0xbaf63b[_0x5be4('0x2b')]);var _0x51b6af=transferValidation[_0x5be4('0xe')](_0xbaf63b[_0x5be4('0x2b')]);if(_0x51b6af[_0x5be4('0x2c')]>0x0){return _0x48816f[_0x5be4('0x1b')](0x190)[_0x5be4('0x2d')](_0x51b6af);}var _0x2aa387=_0xbaf63b[_0x5be4('0x2b')][_0x5be4('0x38')];var _0x5a7d62=_0xbaf63b[_0x5be4('0x2b')][_0x5be4('0x28')];var _0x4743b8=_0xbaf63b[_0x5be4('0x2b')][_0x5be4('0x48')];return getAgent(_0x2aa387)[_0x5be4('0x1d')](function(_0x2995e6){logger[_0x5be4('0x15')](_0x5be4('0x33'),_0x2995e6[_0x5be4('0x1a')]);emit(util[_0x5be4('0x3f')]('user:%s',_0x2995e6['name']),_0x5be4('0x49'),{'sessionId':_0x5a7d62,'transferNumber':_0x4743b8});return _0x48816f[_0x5be4('0x1b')](0xc8)[_0x5be4('0x2d')]({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x48816f));};