1cbe0c9eed43dce3396c6d0048afd010111cd5c9
[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 _0x9a19=['defaults','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','log','handleError:','error','stack','name','status','send','NotFound','then','message','result','catch','agent','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','json','body','userId','callNumber','callerId','entityFound:','format','user:%s','hangup','hangup\x20fired:','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','unhold','unhold\x20fired:','calls','calls\x20fired:','VoiceChannels','rows','conference','conference\x20fired:','webbar:conference','transfer','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis'];(function(_0x290452,_0x3ace5e){var _0x540db4=function(_0x340164){while(--_0x340164){_0x290452['push'](_0x290452['shift']());}};_0x540db4(++_0x3ace5e);}(_0x9a19,0x114));var _0x99a1=function(_0x1b5aea,_0x1afe6f){_0x1b5aea=_0x1b5aea-0x0;var _0x51cae9=_0x9a19[_0x1b5aea];return _0x51cae9;};'use strict';var path=require(_0x99a1('0x0'));var fs=require('fs');var _=require(_0x99a1('0x1'));var db=require(_0x99a1('0x2'))['db'];var config=require('../../config/environment');var util=require(_0x99a1('0x3'));var BPromise=require(_0x99a1('0x4'));var jayson=require(_0x99a1('0x5'));var amiClient=jayson[_0x99a1('0x6')][_0x99a1('0x7')]({'port':0x232a});var logger=require(_0x99a1('0x8'))(_0x99a1('0x9'));var Redis=require(_0x99a1('0xa'));config[_0x99a1('0xb')]=_[_0x99a1('0xc')](config[_0x99a1('0xb')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0x99a1('0xd'));var originateValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x99a1('0xf')]},'callerId':{'type':_0x99a1('0x10')},'callbackUrl':{'type':_0x99a1('0x10')}});var hangupValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':[!![],_0x99a1('0x12')]},'transferNumber':{'type':_0x99a1('0x10'),'required':[!![],_0x99a1('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x99a1('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]}});function emit(_0x3d40cc,_0x384f05,_0x33e2c1){logger[_0x99a1('0x14')](_0x3d40cc,_0x384f05,JSON['stringify'](_0x33e2c1));io['to'](_0x3d40cc)['emit'](_0x384f05,_0x33e2c1);}function handleError(_0x6702d8){return function(_0xbf62f1){console[_0x99a1('0x15')](_0x99a1('0x16'),_0xbf62f1,_0xbf62f1 instanceof RangeError);logger[_0x99a1('0x17')](_0xbf62f1[_0x99a1('0x18')]);if(_0xbf62f1 instanceof RangeError){if(_0xbf62f1[_0x99a1('0x19')]){delete _0xbf62f1[_0x99a1('0x19')];}_0x6702d8[_0x99a1('0x1a')](0x194)[_0x99a1('0x1b')](_0xbf62f1);}else{if(_0xbf62f1[_0x99a1('0x19')]){delete _0xbf62f1['name'];}_0x6702d8[_0x99a1('0x1a')](0x1f4)[_0x99a1('0x1b')](_0xbf62f1);}};}function checkError(){return function(_0x5bed38){if(!_0x5bed38){throw new RangeError(_0x99a1('0x1c'));}return _0x5bed38;};}function respondWithRpcPromise(_0x53093d,_0x458ed3){return new BPromise(function(_0x2927b0,_0x2d6f20){var _0x2d3b82=amiClient;return _0x2d3b82['request'](_0x53093d,_0x458ed3)[_0x99a1('0x1d')](function(_0x1268a7){if(_0x1268a7['error']){if(_0x1268a7[_0x99a1('0x17')]['code']===0x1f4){return _0x2d6f20(_0x1268a7[_0x99a1('0x17')][_0x99a1('0x1e')]);}return _0x2927b0(_0x1268a7[_0x99a1('0x17')][_0x99a1('0x1e')]);}else{_0x2927b0(_0x1268a7[_0x99a1('0x1f')]);}})[_0x99a1('0x20')](function(_0x4fe7f7){_0x2d6f20(_0x4fe7f7);});});}function getAgent(_0x114b38){return db['User']['findOne']({'where':{'id':_0x114b38,'role':_0x99a1('0x21')}})[_0x99a1('0x1d')](checkError());}function getAgentCheckSession(_0xa6799b,_0x15a0b6){return new BPromise(function(_0x25d560,_0x309b93){var _0x183037=respondWithRpcPromise('VoiceChannels');var _0xf41b0d=getAgent(_0xa6799b);Promise['all']([_0x183037,_0xf41b0d])[_0x99a1('0x1d')](function(_0x1137f2){var _0x26fbae=_0x1137f2[0x0];var _0x523668=_0x1137f2[0x1];var _0x371edf=_[_0x99a1('0x22')](_0x26fbae['rows'],function(_0x37514e){return _0x37514e[_0x99a1('0x23')]==_0x523668['id']&&_0x37514e[_0x99a1('0x24')]==_0x15a0b6;});if(_0x371edf[_0x99a1('0x25')]==0x1){_0x25d560(_0x523668);}else{_0x309b93(new RangeError(_0x99a1('0x26')+_0x15a0b6+_0x99a1('0x27')));}});});}exports[_0x99a1('0x28')]=function(_0x26c23c,_0x52da8d){logger['info'](_0x99a1('0x29'),_0x26c23c['body']);var _0x38e383=originateValidation[_0x99a1('0xd')](_0x26c23c['body']);if(_0x38e383[_0x99a1('0x25')]>0x0){return _0x52da8d[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x38e383);}var _0x547ed3=_0x26c23c[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x3081cd=_0x26c23c[_0x99a1('0x2b')][_0x99a1('0x2d')];var _0x432fbc=_0x26c23c[_0x99a1('0x2b')][_0x99a1('0x2e')];var _0x215c18=_0x26c23c[_0x99a1('0x2b')]['callbackUrl'];return getAgent(_0x547ed3)['then'](function(_0x46e3f2){logger[_0x99a1('0x14')](_0x99a1('0x2f'),_0x46e3f2[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')](_0x99a1('0x31'),_0x46e3f2[_0x99a1('0x19')]),'webbar:originate',{'callNumber':_0x3081cd,'callerId':_0x432fbc,'callbackUrl':_0x215c18});return _0x52da8d[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'originate\x20executed!'});})[_0x99a1('0x20')](handleError(_0x52da8d));};exports[_0x99a1('0x32')]=function(_0x391afa,_0x3cd1a0){logger[_0x99a1('0x14')](_0x99a1('0x33'),_0x391afa[_0x99a1('0x2b')]);var _0x2f8135=hangupValidation[_0x99a1('0xd')](_0x391afa[_0x99a1('0x2b')]);if(_0x2f8135[_0x99a1('0x25')]>0x0){return _0x3cd1a0[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x2f8135);}var _0x5018e9=_0x391afa['body']['userId'];var _0x29e884=_0x391afa[_0x99a1('0x2b')][_0x99a1('0x24')];return getAgent(_0x5018e9)[_0x99a1('0x1d')](function(_0x40613a){logger['info'](_0x99a1('0x2f'),_0x40613a[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')]('user:%s',_0x40613a['name']),_0x99a1('0x34'),{'sessionId':_0x29e884});return _0x3cd1a0[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'hangup\x20executed!'});})[_0x99a1('0x20')](handleError(_0x3cd1a0));};exports[_0x99a1('0x35')]=function(_0x1b5d2d,_0x394762){logger[_0x99a1('0x14')](_0x99a1('0x36'),_0x1b5d2d[_0x99a1('0x2b')]);var _0x29d0a0=answerValidation[_0x99a1('0xd')](_0x1b5d2d[_0x99a1('0x2b')]);if(_0x29d0a0['length']>0x0){return _0x394762[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x29d0a0);}var _0x3d5373=_0x1b5d2d['body'][_0x99a1('0x2c')];var _0x51536d=_0x1b5d2d[_0x99a1('0x2b')][_0x99a1('0x24')];return getAgent(_0x3d5373)[_0x99a1('0x1d')](function(_0x3d7ec7){logger[_0x99a1('0x14')](_0x99a1('0x2f'),_0x3d7ec7['name']);emit(util[_0x99a1('0x30')]('user:%s',_0x3d7ec7[_0x99a1('0x19')]),_0x99a1('0x37'),{'sessionId':_0x51536d});return _0x394762[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':_0x99a1('0x38')});})[_0x99a1('0x20')](handleError(_0x394762));};exports[_0x99a1('0x39')]=function(_0x3861b6,_0x61c259){logger[_0x99a1('0x14')](_0x99a1('0x3a'),_0x3861b6['body']);var _0x3c1f55=holdValidation[_0x99a1('0xd')](_0x3861b6['body']);if(_0x3c1f55[_0x99a1('0x25')]>0x0){return _0x61c259[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x3c1f55);}var _0x2e377b=_0x3861b6[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x2e3bef=_0x3861b6['body'][_0x99a1('0x24')];return getAgent(_0x2e377b)['then'](function(_0x1d4d3f){logger[_0x99a1('0x14')]('entityFound:',_0x1d4d3f['name']);emit(util[_0x99a1('0x30')](_0x99a1('0x31'),_0x1d4d3f[_0x99a1('0x19')]),_0x99a1('0x3b'),{'sessionId':_0x2e3bef});return _0x61c259[_0x99a1('0x1a')](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x61c259));};exports[_0x99a1('0x3c')]=function(_0x4ae90e,_0x463e49){logger[_0x99a1('0x14')](_0x99a1('0x3d'),_0x4ae90e[_0x99a1('0x2b')]);var _0x1059b1=unholdValidation['validate'](_0x4ae90e[_0x99a1('0x2b')]);if(_0x1059b1[_0x99a1('0x25')]>0x0){return _0x463e49[_0x99a1('0x1a')](0x190)['json'](_0x1059b1);}var _0x81e218=_0x4ae90e['body']['userId'];var _0x1b9598=_0x4ae90e[_0x99a1('0x2b')][_0x99a1('0x24')];return getAgent(_0x81e218)[_0x99a1('0x1d')](function(_0x11632d){logger[_0x99a1('0x14')](_0x99a1('0x2f'),_0x11632d[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')]('user:%s',_0x11632d[_0x99a1('0x19')]),'webbar:unhold',{'sessionId':_0x1b9598});return _0x463e49[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'unhold\x20executed!'});})[_0x99a1('0x20')](handleError(_0x463e49));};exports[_0x99a1('0x3e')]=function(_0x469e10,_0x2b2d63){logger[_0x99a1('0x14')](_0x99a1('0x3f'),_0x2b2d63[_0x99a1('0x2b')]);var _0x1a5658=callsValidation[_0x99a1('0xd')](_0x469e10[_0x99a1('0x2b')]);if(_0x1a5658[_0x99a1('0x25')]>0x0){return _0x2b2d63[_0x99a1('0x1a')](0x190)['json'](_0x1a5658);}var _0x4f64b7=_0x469e10[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x28caeb=respondWithRpcPromise(_0x99a1('0x40'));var _0x213719=getAgent(_0x4f64b7);return Promise['all']([_0x28caeb,_0x213719])[_0x99a1('0x1d')](function(_0x35f4a8){var _0x529f66=_0x35f4a8[0x0];var _0x6107cd=_0x35f4a8[0x1];var _0x95f20a=_[_0x99a1('0x22')](_0x529f66[_0x99a1('0x41')],function(_0x2b0e5f){return _0x2b0e5f['UserId']==_0x6107cd['id'];});return _0x2b2d63[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'count':_0x95f20a[_0x99a1('0x25')],'rows':_0x95f20a});})[_0x99a1('0x20')](handleError(_0x2b2d63));};exports[_0x99a1('0x42')]=function(_0x10289c,_0x59260e){logger[_0x99a1('0x14')](_0x99a1('0x43'),_0x10289c['body']);var _0x33feb9=conferenceValidation[_0x99a1('0xd')](_0x10289c[_0x99a1('0x2b')]);if(_0x33feb9[_0x99a1('0x25')]>0x0){return _0x59260e[_0x99a1('0x1a')](0x190)['json'](_0x33feb9);}var _0x52f450=_0x10289c['body']['userId'];return getAgent(_0x52f450)['then'](function(_0x38ce3c){logger[_0x99a1('0x14')]('entityFound:',_0x38ce3c['name']);emit(util[_0x99a1('0x30')]('user:%s',_0x38ce3c[_0x99a1('0x19')]),_0x99a1('0x44'));return _0x59260e[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'conference\x20executed!'});})[_0x99a1('0x20')](handleError(_0x59260e));};exports[_0x99a1('0x45')]=function(_0x11b1c1,_0x4fbfb3){logger[_0x99a1('0x14')]('transfer\x20fired:',_0x11b1c1[_0x99a1('0x2b')]);var _0x186615=transferValidation[_0x99a1('0xd')](_0x11b1c1[_0x99a1('0x2b')]);if(_0x186615[_0x99a1('0x25')]>0x0){return _0x4fbfb3['status'](0x190)['json'](_0x186615);}var _0x4fc962=_0x11b1c1[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x4ad713=_0x11b1c1['body'][_0x99a1('0x24')];var _0x2f5587=_0x11b1c1[_0x99a1('0x2b')]['transferNumber'];return getAgent(_0x4fc962)['then'](function(_0x2b8df8){logger['info'](_0x99a1('0x2f'),_0x2b8df8[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')]('user:%s',_0x2b8df8[_0x99a1('0x19')]),_0x99a1('0x46'),{'sessionId':_0x4ad713,'transferNumber':_0x2f5587});return _0x4fbfb3['status'](0xc8)['json']({'error':![],'message':_0x99a1('0x47')});})['catch'](handleError(_0x4fbfb3));};