59bb18b7830ac200a27826797f511a0b3517a2e2
[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 _0x2f68=['conference\x20fired:','conference\x20executed!','transferNumber','webbar:transfer','lodash','../../mysqldb','../../config/environment','util','jayson/promise','http','../../config/logger','ioredis','redis','localhost','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','message','result','catch','User','agent','then','all','filter','rows','UserId','sessionId','length','sessionId\x20','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls\x20fired:','VoiceChannels','conference'];(function(_0x23f12f,_0x48f457){var _0x563de4=function(_0x41f95e){while(--_0x41f95e){_0x23f12f['push'](_0x23f12f['shift']());}};_0x563de4(++_0x48f457);}(_0x2f68,0x9a));var _0x82f6=function(_0x3b4879,_0x2c809f){_0x3b4879=_0x3b4879-0x0;var _0x5a91e7=_0x2f68[_0x3b4879];return _0x5a91e7;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x82f6('0x0'));var db=require(_0x82f6('0x1'))['db'];var config=require(_0x82f6('0x2'));var util=require(_0x82f6('0x3'));var BPromise=require('bluebird');var jayson=require(_0x82f6('0x4'));var amiClient=jayson['client'][_0x82f6('0x5')]({'port':0x232a});var logger=require(_0x82f6('0x6'))('webbarapi');var Redis=require(_0x82f6('0x7'));config[_0x82f6('0x8')]=_['defaults'](config['redis'],{'host':_0x82f6('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0x82f6('0xa'));var originateValidation=new Schema({'userId':{'type':_0x82f6('0xb'),'required':[!![],_0x82f6('0xc')]},'callNumber':{'type':'string','required':[!![],_0x82f6('0xd')]},'callerId':{'type':_0x82f6('0xe')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x82f6('0xb'),'required':[!![],_0x82f6('0xc')]},'sessionId':{'type':_0x82f6('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x82f6('0xb'),'required':[!![],_0x82f6('0xc')]},'sessionId':{'type':_0x82f6('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x82f6('0xc')]},'sessionId':{'type':_0x82f6('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x82f6('0xe'),'required':[!![],_0x82f6('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x82f6('0xb'),'required':[!![],_0x82f6('0xc')]},'sessionId':{'type':_0x82f6('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x82f6('0xb'),'required':[!![],_0x82f6('0xc')]},'sessionId':{'type':_0x82f6('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x82f6('0xb'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x82f6('0xb'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x249222,_0x1d0263,_0x31b4fb){logger[_0x82f6('0x10')](_0x249222,_0x1d0263,JSON[_0x82f6('0x11')](_0x31b4fb));io['to'](_0x249222)[_0x82f6('0x12')](_0x1d0263,_0x31b4fb);}function handleError(_0x326378){return function(_0xcbc95f){console[_0x82f6('0x13')](_0x82f6('0x14'),_0xcbc95f,_0xcbc95f instanceof RangeError);logger[_0x82f6('0x15')](_0xcbc95f[_0x82f6('0x16')]);if(_0xcbc95f instanceof RangeError){if(_0xcbc95f[_0x82f6('0x17')]){delete _0xcbc95f[_0x82f6('0x17')];}_0x326378[_0x82f6('0x18')](0x194)['send'](_0xcbc95f);}else{if(_0xcbc95f[_0x82f6('0x17')]){delete _0xcbc95f[_0x82f6('0x17')];}_0x326378['status'](0x1f4)[_0x82f6('0x19')](_0xcbc95f);}};}function checkError(){return function(_0x4b9f0){if(!_0x4b9f0){throw new RangeError(_0x82f6('0x1a'));}return _0x4b9f0;};}function respondWithRpcPromise(_0x25cae6,_0x4bfeb8){return new BPromise(function(_0xdc4dea,_0x4beccf){var _0x8668bb=amiClient;return _0x8668bb[_0x82f6('0x1b')](_0x25cae6,_0x4bfeb8)['then'](function(_0x516deb){if(_0x516deb[_0x82f6('0x15')]){if(_0x516deb[_0x82f6('0x15')]['code']===0x1f4){return _0x4beccf(_0x516deb['error'][_0x82f6('0x1c')]);}return _0xdc4dea(_0x516deb[_0x82f6('0x15')]['message']);}else{_0xdc4dea(_0x516deb[_0x82f6('0x1d')]);}})[_0x82f6('0x1e')](function(_0x5037f8){_0x4beccf(_0x5037f8);});});}function getAgent(_0x57ac0d){return db[_0x82f6('0x1f')]['findOne']({'where':{'id':_0x57ac0d,'role':_0x82f6('0x20')}})[_0x82f6('0x21')](checkError());}function getAgentCheckSession(_0x54ce11,_0x3795ef){return new BPromise(function(_0x15c9b7,_0x33ef08){var _0x1125a0=respondWithRpcPromise('VoiceChannels');var _0x40a071=getAgent(_0x54ce11);Promise[_0x82f6('0x22')]([_0x1125a0,_0x40a071])[_0x82f6('0x21')](function(_0x400137){var _0x271c28=_0x400137[0x0];var _0x328707=_0x400137[0x1];var _0x27e473=_[_0x82f6('0x23')](_0x271c28[_0x82f6('0x24')],function(_0x402449){return _0x402449[_0x82f6('0x25')]==_0x328707['id']&&_0x402449[_0x82f6('0x26')]==_0x3795ef;});if(_0x27e473[_0x82f6('0x27')]==0x1){_0x15c9b7(_0x328707);}else{_0x33ef08(new RangeError(_0x82f6('0x28')+_0x3795ef+'\x20not\x20found!'));}});});}exports[_0x82f6('0x29')]=function(_0x2c764f,_0x418f34){logger['info'](_0x82f6('0x2a'),_0x2c764f[_0x82f6('0x2b')]);var _0x831131=originateValidation[_0x82f6('0xa')](_0x2c764f[_0x82f6('0x2b')]);if(_0x831131[_0x82f6('0x27')]>0x0){return _0x418f34[_0x82f6('0x18')](0x190)[_0x82f6('0x2c')](_0x831131);}var _0x4756ee=_0x2c764f[_0x82f6('0x2b')][_0x82f6('0x2d')];var _0x31df71=_0x2c764f[_0x82f6('0x2b')][_0x82f6('0x2e')];var _0x4c45a4=_0x2c764f[_0x82f6('0x2b')][_0x82f6('0x2f')];var _0x1c6ce4=_0x2c764f[_0x82f6('0x2b')][_0x82f6('0x30')];return getAgent(_0x4756ee)[_0x82f6('0x21')](function(_0x34c2f1){logger[_0x82f6('0x10')](_0x82f6('0x31'),_0x34c2f1[_0x82f6('0x17')]);emit(util[_0x82f6('0x32')](_0x82f6('0x33'),_0x34c2f1[_0x82f6('0x17')]),_0x82f6('0x34'),{'callNumber':_0x31df71,'callerId':_0x4c45a4,'callbackUrl':_0x1c6ce4});return _0x418f34['status'](0xc8)[_0x82f6('0x2c')]({'error':![],'message':'originate\x20executed!'});})['catch'](handleError(_0x418f34));};exports[_0x82f6('0x35')]=function(_0x18c81e,_0x5e8828){logger[_0x82f6('0x10')](_0x82f6('0x36'),_0x18c81e[_0x82f6('0x2b')]);var _0x56e5f1=hangupValidation[_0x82f6('0xa')](_0x18c81e['body']);if(_0x56e5f1[_0x82f6('0x27')]>0x0){return _0x5e8828['status'](0x190)[_0x82f6('0x2c')](_0x56e5f1);}var _0x47ef9e=_0x18c81e[_0x82f6('0x2b')][_0x82f6('0x2d')];var _0x5ad42c=_0x18c81e[_0x82f6('0x2b')][_0x82f6('0x26')];return getAgent(_0x47ef9e)[_0x82f6('0x21')](function(_0x43dcd1){logger['info'](_0x82f6('0x31'),_0x43dcd1[_0x82f6('0x17')]);emit(util[_0x82f6('0x32')](_0x82f6('0x33'),_0x43dcd1['name']),_0x82f6('0x37'),{'sessionId':_0x5ad42c});return _0x5e8828[_0x82f6('0x18')](0xc8)['json']({'error':![],'message':_0x82f6('0x38')});})[_0x82f6('0x1e')](handleError(_0x5e8828));};exports[_0x82f6('0x39')]=function(_0x23662f,_0xc3e250){logger['info'](_0x82f6('0x3a'),_0x23662f['body']);var _0x139614=answerValidation[_0x82f6('0xa')](_0x23662f[_0x82f6('0x2b')]);if(_0x139614[_0x82f6('0x27')]>0x0){return _0xc3e250[_0x82f6('0x18')](0x190)[_0x82f6('0x2c')](_0x139614);}var _0x43fefc=_0x23662f['body'][_0x82f6('0x2d')];var _0x297cda=_0x23662f[_0x82f6('0x2b')][_0x82f6('0x26')];return getAgent(_0x43fefc)['then'](function(_0x408dce){logger['info'](_0x82f6('0x31'),_0x408dce[_0x82f6('0x17')]);emit(util[_0x82f6('0x32')](_0x82f6('0x33'),_0x408dce[_0x82f6('0x17')]),_0x82f6('0x3b'),{'sessionId':_0x297cda});return _0xc3e250['status'](0xc8)[_0x82f6('0x2c')]({'error':![],'message':_0x82f6('0x3c')});})[_0x82f6('0x1e')](handleError(_0xc3e250));};exports[_0x82f6('0x3d')]=function(_0x10ae6e,_0x95c1fa){logger[_0x82f6('0x10')](_0x82f6('0x3e'),_0x10ae6e['body']);var _0x43b92e=holdValidation[_0x82f6('0xa')](_0x10ae6e['body']);if(_0x43b92e[_0x82f6('0x27')]>0x0){return _0x95c1fa['status'](0x190)[_0x82f6('0x2c')](_0x43b92e);}var _0x5e3321=_0x10ae6e[_0x82f6('0x2b')][_0x82f6('0x2d')];var _0xbcc26b=_0x10ae6e[_0x82f6('0x2b')][_0x82f6('0x26')];return getAgent(_0x5e3321)[_0x82f6('0x21')](function(_0x53f7d4){logger[_0x82f6('0x10')](_0x82f6('0x31'),_0x53f7d4['name']);emit(util['format'](_0x82f6('0x33'),_0x53f7d4[_0x82f6('0x17')]),_0x82f6('0x3f'),{'sessionId':_0xbcc26b});return _0x95c1fa['status'](0xc8)[_0x82f6('0x2c')]({'error':![],'message':_0x82f6('0x40')});})[_0x82f6('0x1e')](handleError(_0x95c1fa));};exports[_0x82f6('0x41')]=function(_0x4e9e13,_0x495400){logger[_0x82f6('0x10')](_0x82f6('0x42'),_0x4e9e13[_0x82f6('0x2b')]);var _0x5231bb=unholdValidation[_0x82f6('0xa')](_0x4e9e13[_0x82f6('0x2b')]);if(_0x5231bb['length']>0x0){return _0x495400['status'](0x190)['json'](_0x5231bb);}var _0x2e6b03=_0x4e9e13['body'][_0x82f6('0x2d')];var _0x57c023=_0x4e9e13[_0x82f6('0x2b')]['sessionId'];return getAgent(_0x2e6b03)[_0x82f6('0x21')](function(_0x58f89b){logger[_0x82f6('0x10')](_0x82f6('0x31'),_0x58f89b[_0x82f6('0x17')]);emit(util[_0x82f6('0x32')](_0x82f6('0x33'),_0x58f89b[_0x82f6('0x17')]),'webbar:unhold',{'sessionId':_0x57c023});return _0x495400[_0x82f6('0x18')](0xc8)[_0x82f6('0x2c')]({'error':![],'message':_0x82f6('0x43')});})['catch'](handleError(_0x495400));};exports['calls']=function(_0x13406f,_0x81e595){logger[_0x82f6('0x10')](_0x82f6('0x44'),_0x81e595['body']);var _0x2c1c0e=callsValidation[_0x82f6('0xa')](_0x13406f[_0x82f6('0x2b')]);if(_0x2c1c0e['length']>0x0){return _0x81e595['status'](0x190)['json'](_0x2c1c0e);}var _0x44218c=_0x13406f[_0x82f6('0x2b')][_0x82f6('0x2d')];var _0x59176d=respondWithRpcPromise(_0x82f6('0x45'));var _0x26c1d8=getAgent(_0x44218c);return Promise[_0x82f6('0x22')]([_0x59176d,_0x26c1d8])[_0x82f6('0x21')](function(_0x51791c){var _0x255da2=_0x51791c[0x0];var _0x94aed4=_0x51791c[0x1];var _0x12a5b9=_[_0x82f6('0x23')](_0x255da2['rows'],function(_0x53c715){return _0x53c715[_0x82f6('0x25')]==_0x94aed4['id'];});return _0x81e595[_0x82f6('0x18')](0xc8)['json']({'count':_0x12a5b9[_0x82f6('0x27')],'rows':_0x12a5b9});})[_0x82f6('0x1e')](handleError(_0x81e595));};exports[_0x82f6('0x46')]=function(_0x5b3aaa,_0x32fa83){logger[_0x82f6('0x10')](_0x82f6('0x47'),_0x5b3aaa[_0x82f6('0x2b')]);var _0x169aa3=conferenceValidation[_0x82f6('0xa')](_0x5b3aaa['body']);if(_0x169aa3[_0x82f6('0x27')]>0x0){return _0x32fa83[_0x82f6('0x18')](0x190)[_0x82f6('0x2c')](_0x169aa3);}var _0x2d57e3=_0x5b3aaa[_0x82f6('0x2b')]['userId'];return getAgent(_0x2d57e3)[_0x82f6('0x21')](function(_0x3cc579){logger[_0x82f6('0x10')](_0x82f6('0x31'),_0x3cc579[_0x82f6('0x17')]);emit(util[_0x82f6('0x32')](_0x82f6('0x33'),_0x3cc579[_0x82f6('0x17')]),'webbar:conference');return _0x32fa83[_0x82f6('0x18')](0xc8)['json']({'error':![],'message':_0x82f6('0x48')});})[_0x82f6('0x1e')](handleError(_0x32fa83));};exports['transfer']=function(_0x843458,_0x32e43d){logger[_0x82f6('0x10')]('transfer\x20fired:',_0x843458['body']);var _0x140dcd=transferValidation[_0x82f6('0xa')](_0x843458['body']);if(_0x140dcd['length']>0x0){return _0x32e43d[_0x82f6('0x18')](0x190)[_0x82f6('0x2c')](_0x140dcd);}var _0x1c37d2=_0x843458[_0x82f6('0x2b')][_0x82f6('0x2d')];var _0x11581c=_0x843458[_0x82f6('0x2b')][_0x82f6('0x26')];var _0x2d0d7c=_0x843458[_0x82f6('0x2b')][_0x82f6('0x49')];return getAgent(_0x1c37d2)[_0x82f6('0x21')](function(_0x53d931){logger[_0x82f6('0x10')](_0x82f6('0x31'),_0x53d931[_0x82f6('0x17')]);emit(util[_0x82f6('0x32')](_0x82f6('0x33'),_0x53d931['name']),_0x82f6('0x4a'),{'sessionId':_0x11581c,'transferNumber':_0x2d0d7c});return _0x32e43d[_0x82f6('0x18')](0xc8)[_0x82f6('0x2c')]({'error':![],'message':'transfer\x20executed!'});})[_0x82f6('0x1e')](handleError(_0x32e43d));};