Built motion from commit 980b26c3.|2.6.29
[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 _0xabb2=['userId','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','all','filter','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','../../mysqldb','../../config/environment','bluebird','client','http','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','callNumber\x20is\x20required','number','string','transferNumber\x20is\x20required','info','stringify','emit','log','name','status','send','NotFound','request','error','code','message','result','catch','agent','then','VoiceChannels','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:'];(function(_0x2129af,_0x44f158){var _0x412906=function(_0x226614){while(--_0x226614){_0x2129af['push'](_0x2129af['shift']());}};_0x412906(++_0x44f158);}(_0xabb2,0x6e));var _0x2abb=function(_0x1e4a8e,_0x18022b){_0x1e4a8e=_0x1e4a8e-0x0;var _0x5408f9=_0xabb2[_0x1e4a8e];return _0x5408f9;};'use strict';var path=require(_0x2abb('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x2abb('0x1'))['db'];var config=require(_0x2abb('0x2'));var util=require('util');var BPromise=require(_0x2abb('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x2abb('0x4')][_0x2abb('0x5')]({'port':0x232a});var logger=require('../../config/logger')(_0x2abb('0x6'));var Redis=require(_0x2abb('0x7'));config[_0x2abb('0x8')]=_[_0x2abb('0x9')](config['redis'],{'host':_0x2abb('0xa'),'port':0x18eb});var io=require(_0x2abb('0xb'))(new Redis(config[_0x2abb('0x8')]));var Schema=require(_0x2abb('0xc'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x2abb('0xd')]},'callNumber':{'type':'string','required':[!![],_0x2abb('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x2abb('0xf'),'required':[!![],_0x2abb('0xd')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x2abb('0xf'),'required':[!![],_0x2abb('0xd')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x2abb('0xf'),'required':[!![],_0x2abb('0xd')]},'sessionId':{'type':_0x2abb('0x10'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x2abb('0x10'),'required':[!![],_0x2abb('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x2abb('0xf'),'required':[!![],_0x2abb('0xd')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x2abb('0xf'),'required':[!![],_0x2abb('0xd')]},'sessionId':{'type':_0x2abb('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x2abb('0xf'),'required':[!![],_0x2abb('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x2abb('0xf'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x6b3d3c,_0x21f840,_0x3e02d7){logger[_0x2abb('0x12')](_0x6b3d3c,_0x21f840,JSON[_0x2abb('0x13')](_0x3e02d7));io['to'](_0x6b3d3c)[_0x2abb('0x14')](_0x21f840,_0x3e02d7);}function handleError(_0x553719){return function(_0x246db7){console[_0x2abb('0x15')]('handleError:',_0x246db7,_0x246db7 instanceof RangeError);logger['error'](_0x246db7['stack']);if(_0x246db7 instanceof RangeError){if(_0x246db7[_0x2abb('0x16')]){delete _0x246db7['name'];}_0x553719[_0x2abb('0x17')](0x194)['send'](_0x246db7);}else{if(_0x246db7[_0x2abb('0x16')]){delete _0x246db7['name'];}_0x553719[_0x2abb('0x17')](0x1f4)[_0x2abb('0x18')](_0x246db7);}};}function checkError(){return function(_0x265433){if(!_0x265433){throw new RangeError(_0x2abb('0x19'));}return _0x265433;};}function respondWithRpcPromise(_0xeb4f62,_0x169a1f){return new BPromise(function(_0x4d4885,_0xd353b6){var _0x58d0eb=amiClient;return _0x58d0eb[_0x2abb('0x1a')](_0xeb4f62,_0x169a1f)['then'](function(_0x2f0eb4){if(_0x2f0eb4[_0x2abb('0x1b')]){if(_0x2f0eb4[_0x2abb('0x1b')][_0x2abb('0x1c')]===0x1f4){return _0xd353b6(_0x2f0eb4[_0x2abb('0x1b')][_0x2abb('0x1d')]);}return _0x4d4885(_0x2f0eb4[_0x2abb('0x1b')][_0x2abb('0x1d')]);}else{_0x4d4885(_0x2f0eb4[_0x2abb('0x1e')]);}})[_0x2abb('0x1f')](function(_0xc541c7){_0xd353b6(_0xc541c7);});});}function getAgent(_0x44de13){return db['User']['findOne']({'where':{'id':_0x44de13,'role':_0x2abb('0x20')}})[_0x2abb('0x21')](checkError());}function getAgentCheckSession(_0x5a6ce1,_0x36a3c7){return new BPromise(function(_0x256aa4,_0x27410d){var _0x44ba30=respondWithRpcPromise(_0x2abb('0x22'));var _0x36d948=getAgent(_0x5a6ce1);Promise['all']([_0x44ba30,_0x36d948])[_0x2abb('0x21')](function(_0x582eba){var _0x34d20d=_0x582eba[0x0];var _0x3c16e5=_0x582eba[0x1];var _0x4ba7bf=_['filter'](_0x34d20d[_0x2abb('0x23')],function(_0x294f59){return _0x294f59[_0x2abb('0x24')]==_0x3c16e5['id']&&_0x294f59[_0x2abb('0x25')]==_0x36a3c7;});if(_0x4ba7bf[_0x2abb('0x26')]==0x1){_0x256aa4(_0x3c16e5);}else{_0x27410d(new RangeError(_0x2abb('0x27')+_0x36a3c7+_0x2abb('0x28')));}});});}exports[_0x2abb('0x29')]=function(_0x8094da,_0x13014a){logger[_0x2abb('0x12')](_0x2abb('0x2a'),_0x8094da['body']);var _0x5c8a32=originateValidation[_0x2abb('0xc')](_0x8094da[_0x2abb('0x2b')]);if(_0x5c8a32['length']>0x0){return _0x13014a[_0x2abb('0x17')](0x190)['json'](_0x5c8a32);}var _0x1e661a=_0x8094da[_0x2abb('0x2b')]['userId'];var _0x12f2f6=_0x8094da[_0x2abb('0x2b')][_0x2abb('0x2c')];var _0x392ca0=_0x8094da[_0x2abb('0x2b')][_0x2abb('0x2d')];var _0x3f5c20=_0x8094da[_0x2abb('0x2b')][_0x2abb('0x2e')];return getAgent(_0x1e661a)[_0x2abb('0x21')](function(_0x4c657f){logger[_0x2abb('0x12')](_0x2abb('0x2f'),_0x4c657f['name']);emit(util[_0x2abb('0x30')]('user:%s',_0x4c657f[_0x2abb('0x16')]),_0x2abb('0x31'),{'callNumber':_0x12f2f6,'callerId':_0x392ca0,'callbackUrl':_0x3f5c20});return _0x13014a['status'](0xc8)[_0x2abb('0x32')]({'error':![],'message':_0x2abb('0x33')});})[_0x2abb('0x1f')](handleError(_0x13014a));};exports[_0x2abb('0x34')]=function(_0x25cb52,_0x196261){logger[_0x2abb('0x12')](_0x2abb('0x35'),_0x25cb52['body']);var _0x4c62d0=hangupValidation[_0x2abb('0xc')](_0x25cb52[_0x2abb('0x2b')]);if(_0x4c62d0[_0x2abb('0x26')]>0x0){return _0x196261[_0x2abb('0x17')](0x190)['json'](_0x4c62d0);}var _0x194bc5=_0x25cb52[_0x2abb('0x2b')][_0x2abb('0x36')];var _0x57f40c=_0x25cb52['body'][_0x2abb('0x25')];return getAgent(_0x194bc5)[_0x2abb('0x21')](function(_0x40e973){logger[_0x2abb('0x12')](_0x2abb('0x2f'),_0x40e973[_0x2abb('0x16')]);emit(util['format'](_0x2abb('0x37'),_0x40e973[_0x2abb('0x16')]),_0x2abb('0x38'),{'sessionId':_0x57f40c});return _0x196261[_0x2abb('0x17')](0xc8)[_0x2abb('0x32')]({'error':![],'message':_0x2abb('0x39')});})[_0x2abb('0x1f')](handleError(_0x196261));};exports[_0x2abb('0x3a')]=function(_0x2c7d94,_0x4906c7){logger[_0x2abb('0x12')](_0x2abb('0x3b'),_0x2c7d94['body']);var _0x1873ae=answerValidation['validate'](_0x2c7d94['body']);if(_0x1873ae['length']>0x0){return _0x4906c7['status'](0x190)[_0x2abb('0x32')](_0x1873ae);}var _0x467d12=_0x2c7d94[_0x2abb('0x2b')][_0x2abb('0x36')];var _0x34fe02=_0x2c7d94[_0x2abb('0x2b')][_0x2abb('0x25')];return getAgent(_0x467d12)[_0x2abb('0x21')](function(_0x5150c8){logger[_0x2abb('0x12')](_0x2abb('0x2f'),_0x5150c8[_0x2abb('0x16')]);emit(util[_0x2abb('0x30')]('user:%s',_0x5150c8[_0x2abb('0x16')]),_0x2abb('0x3c'),{'sessionId':_0x34fe02});return _0x4906c7[_0x2abb('0x17')](0xc8)[_0x2abb('0x32')]({'error':![],'message':_0x2abb('0x3d')});})[_0x2abb('0x1f')](handleError(_0x4906c7));};exports[_0x2abb('0x3e')]=function(_0x1e149f,_0x4dad61){logger[_0x2abb('0x12')](_0x2abb('0x3f'),_0x1e149f['body']);var _0x20f7a9=holdValidation[_0x2abb('0xc')](_0x1e149f[_0x2abb('0x2b')]);if(_0x20f7a9[_0x2abb('0x26')]>0x0){return _0x4dad61['status'](0x190)[_0x2abb('0x32')](_0x20f7a9);}var _0xf7b3b4=_0x1e149f['body'][_0x2abb('0x36')];var _0x2c4955=_0x1e149f[_0x2abb('0x2b')][_0x2abb('0x25')];return getAgent(_0xf7b3b4)[_0x2abb('0x21')](function(_0x44c278){logger[_0x2abb('0x12')](_0x2abb('0x2f'),_0x44c278[_0x2abb('0x16')]);emit(util['format'](_0x2abb('0x37'),_0x44c278[_0x2abb('0x16')]),_0x2abb('0x40'),{'sessionId':_0x2c4955});return _0x4dad61['status'](0xc8)['json']({'error':![],'message':_0x2abb('0x41')});})['catch'](handleError(_0x4dad61));};exports[_0x2abb('0x42')]=function(_0x4ef959,_0xbceaf){logger[_0x2abb('0x12')](_0x2abb('0x43'),_0x4ef959['body']);var _0x1d48ab=unholdValidation[_0x2abb('0xc')](_0x4ef959[_0x2abb('0x2b')]);if(_0x1d48ab['length']>0x0){return _0xbceaf[_0x2abb('0x17')](0x190)[_0x2abb('0x32')](_0x1d48ab);}var _0x4cf74c=_0x4ef959['body'][_0x2abb('0x36')];var _0x3b3877=_0x4ef959[_0x2abb('0x2b')][_0x2abb('0x25')];return getAgent(_0x4cf74c)['then'](function(_0x408494){logger['info'](_0x2abb('0x2f'),_0x408494[_0x2abb('0x16')]);emit(util[_0x2abb('0x30')](_0x2abb('0x37'),_0x408494[_0x2abb('0x16')]),_0x2abb('0x44'),{'sessionId':_0x3b3877});return _0xbceaf[_0x2abb('0x17')](0xc8)[_0x2abb('0x32')]({'error':![],'message':_0x2abb('0x45')});})[_0x2abb('0x1f')](handleError(_0xbceaf));};exports['calls']=function(_0x4bb3c8,_0x2451f0){logger[_0x2abb('0x12')](_0x2abb('0x46'),_0x2451f0[_0x2abb('0x2b')]);var _0x312a55=callsValidation['validate'](_0x4bb3c8[_0x2abb('0x2b')]);if(_0x312a55[_0x2abb('0x26')]>0x0){return _0x2451f0[_0x2abb('0x17')](0x190)[_0x2abb('0x32')](_0x312a55);}var _0x33f86a=_0x4bb3c8[_0x2abb('0x2b')][_0x2abb('0x36')];var _0x31647f=respondWithRpcPromise('VoiceChannels');var _0x3f5bb4=getAgent(_0x33f86a);return Promise[_0x2abb('0x47')]([_0x31647f,_0x3f5bb4])['then'](function(_0x45c64e){var _0x48c45e=_0x45c64e[0x0];var _0x7d8b9a=_0x45c64e[0x1];var _0x476a26=_[_0x2abb('0x48')](_0x48c45e[_0x2abb('0x23')],function(_0x5f5819){return _0x5f5819[_0x2abb('0x24')]==_0x7d8b9a['id'];});return _0x2451f0['status'](0xc8)[_0x2abb('0x32')]({'count':_0x476a26[_0x2abb('0x26')],'rows':_0x476a26});})['catch'](handleError(_0x2451f0));};exports[_0x2abb('0x49')]=function(_0x422a3e,_0x1f0fac){logger['info'](_0x2abb('0x4a'),_0x422a3e[_0x2abb('0x2b')]);var _0x4832a8=conferenceValidation[_0x2abb('0xc')](_0x422a3e[_0x2abb('0x2b')]);if(_0x4832a8['length']>0x0){return _0x1f0fac[_0x2abb('0x17')](0x190)[_0x2abb('0x32')](_0x4832a8);}var _0x4eb84b=_0x422a3e[_0x2abb('0x2b')][_0x2abb('0x36')];return getAgent(_0x4eb84b)[_0x2abb('0x21')](function(_0x5a1f2b){logger[_0x2abb('0x12')](_0x2abb('0x2f'),_0x5a1f2b['name']);emit(util[_0x2abb('0x30')](_0x2abb('0x37'),_0x5a1f2b[_0x2abb('0x16')]),_0x2abb('0x4b'));return _0x1f0fac[_0x2abb('0x17')](0xc8)[_0x2abb('0x32')]({'error':![],'message':_0x2abb('0x4c')});})[_0x2abb('0x1f')](handleError(_0x1f0fac));};exports[_0x2abb('0x4d')]=function(_0x59a3b6,_0x5f7660){logger[_0x2abb('0x12')](_0x2abb('0x4e'),_0x59a3b6['body']);var _0x1a0b7c=transferValidation['validate'](_0x59a3b6[_0x2abb('0x2b')]);if(_0x1a0b7c['length']>0x0){return _0x5f7660[_0x2abb('0x17')](0x190)['json'](_0x1a0b7c);}var _0x37c43d=_0x59a3b6[_0x2abb('0x2b')][_0x2abb('0x36')];var _0x596769=_0x59a3b6['body']['sessionId'];var _0x19b4d8=_0x59a3b6[_0x2abb('0x2b')][_0x2abb('0x4f')];return getAgent(_0x37c43d)['then'](function(_0x199d20){logger[_0x2abb('0x12')](_0x2abb('0x2f'),_0x199d20[_0x2abb('0x16')]);emit(util[_0x2abb('0x30')](_0x2abb('0x37'),_0x199d20[_0x2abb('0x16')]),_0x2abb('0x50'),{'sessionId':_0x596769,'transferNumber':_0x19b4d8});return _0x5f7660[_0x2abb('0x17')](0xc8)[_0x2abb('0x32')]({'error':![],'message':_0x2abb('0x51')});})[_0x2abb('0x1f')](handleError(_0x5f7660));};