Built motion from commit (unavailable).|2.5.7
[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 _0x982c=['stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','message','result','agent','VoiceChannels','all','filter','rows','UserId','\x20not\x20found!','originate','originate\x20fired:','body','validate','json','userId','callNumber','callerId','format','user:%s','webbar:originate','originate\x20executed!','catch','hangup','hangup\x20fired:','length','sessionId','entityFound:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','lodash','util','bluebird','client','http','../../config/logger','ioredis','redis','localhost','socket.io-emitter','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info'];(function(_0x42d5cc,_0x4ab82f){var _0x3daaca=function(_0x7951ec){while(--_0x7951ec){_0x42d5cc['push'](_0x42d5cc['shift']());}};_0x3daaca(++_0x4ab82f);}(_0x982c,0xd9));var _0xc982=function(_0x1f6414,_0x3cf1fa){_0x1f6414=_0x1f6414-0x0;var _0x53ae8f=_0x982c[_0x1f6414];return _0x53ae8f;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xc982('0x0'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0xc982('0x1'));var BPromise=require(_0xc982('0x2'));var jayson=require('jayson/promise');var amiClient=jayson[_0xc982('0x3')][_0xc982('0x4')]({'port':0x232a});var logger=require(_0xc982('0x5'))('webbarapi');var Redis=require(_0xc982('0x6'));config['redis']=_['defaults'](config[_0xc982('0x7')],{'host':_0xc982('0x8'),'port':0x18eb});var io=require(_0xc982('0x9'))(new Redis(config[_0xc982('0x7')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0xc982('0xa'),'required':[!![],_0xc982('0xb')]},'callNumber':{'type':_0xc982('0xc'),'required':[!![],_0xc982('0xd')]},'callerId':{'type':_0xc982('0xc')},'callbackUrl':{'type':_0xc982('0xc')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xc982('0xb')]},'sessionId':{'type':_0xc982('0xc'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xc982('0xa'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xc982('0xa'),'required':[!![],_0xc982('0xb')]},'sessionId':{'type':'string','required':[!![],_0xc982('0xe')]},'transferNumber':{'type':_0xc982('0xc'),'required':[!![],_0xc982('0xf')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xc982('0xb')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xc982('0xa'),'required':[!![],_0xc982('0xb')]},'sessionId':{'type':_0xc982('0xc'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xc982('0xa'),'required':[!![],_0xc982('0xb')]}});var conferenceValidation=new Schema({'userId':{'type':_0xc982('0xa'),'required':[!![],'userId\x20is\x20required']}});function emit(_0xea33e1,_0x2c5081,_0x19c8a7){logger[_0xc982('0x10')](_0xea33e1,_0x2c5081,JSON[_0xc982('0x11')](_0x19c8a7));io['to'](_0xea33e1)[_0xc982('0x12')](_0x2c5081,_0x19c8a7);}function handleError(_0x22b512){return function(_0x288a1a){console[_0xc982('0x13')](_0xc982('0x14'),_0x288a1a,_0x288a1a instanceof RangeError);logger[_0xc982('0x15')](_0x288a1a[_0xc982('0x16')]);if(_0x288a1a instanceof RangeError){if(_0x288a1a[_0xc982('0x17')]){delete _0x288a1a[_0xc982('0x17')];}_0x22b512[_0xc982('0x18')](0x194)[_0xc982('0x19')](_0x288a1a);}else{if(_0x288a1a[_0xc982('0x17')]){delete _0x288a1a[_0xc982('0x17')];}_0x22b512[_0xc982('0x18')](0x1f4)[_0xc982('0x19')](_0x288a1a);}};}function checkError(){return function(_0x536630){if(!_0x536630){throw new RangeError(_0xc982('0x1a'));}return _0x536630;};}function respondWithRpcPromise(_0x46f396,_0x2f67f4){return new BPromise(function(_0x14246d,_0x53f237){var _0x16ca35=amiClient;return _0x16ca35[_0xc982('0x1b')](_0x46f396,_0x2f67f4)[_0xc982('0x1c')](function(_0x531e4f){if(_0x531e4f[_0xc982('0x15')]){if(_0x531e4f[_0xc982('0x15')]['code']===0x1f4){return _0x53f237(_0x531e4f['error'][_0xc982('0x1d')]);}return _0x14246d(_0x531e4f[_0xc982('0x15')]['message']);}else{_0x14246d(_0x531e4f[_0xc982('0x1e')]);}})['catch'](function(_0x2a38ce){_0x53f237(_0x2a38ce);});});}function getAgent(_0x36d3f5){return db['User']['findOne']({'where':{'id':_0x36d3f5,'role':_0xc982('0x1f')}})[_0xc982('0x1c')](checkError());}function getAgentCheckSession(_0x444dd3,_0x28b0ec){return new BPromise(function(_0x33bda3,_0x5495ad){var _0x52678f=respondWithRpcPromise(_0xc982('0x20'));var _0xa3d34b=getAgent(_0x444dd3);Promise[_0xc982('0x21')]([_0x52678f,_0xa3d34b])['then'](function(_0xaea96e){var _0x52d0e1=_0xaea96e[0x0];var _0x26cf64=_0xaea96e[0x1];var _0x5ecc0a=_[_0xc982('0x22')](_0x52d0e1[_0xc982('0x23')],function(_0xf8909c){return _0xf8909c[_0xc982('0x24')]==_0x26cf64['id']&&_0xf8909c['sessionId']==_0x28b0ec;});if(_0x5ecc0a['length']==0x1){_0x33bda3(_0x26cf64);}else{_0x5495ad(new RangeError('sessionId\x20'+_0x28b0ec+_0xc982('0x25')));}});});}exports[_0xc982('0x26')]=function(_0x2ad5f5,_0x449445){logger[_0xc982('0x10')](_0xc982('0x27'),_0x2ad5f5[_0xc982('0x28')]);var _0x2ecd10=originateValidation[_0xc982('0x29')](_0x2ad5f5[_0xc982('0x28')]);if(_0x2ecd10['length']>0x0){return _0x449445[_0xc982('0x18')](0x190)[_0xc982('0x2a')](_0x2ecd10);}var _0x273af2=_0x2ad5f5[_0xc982('0x28')][_0xc982('0x2b')];var _0x58f5b4=_0x2ad5f5[_0xc982('0x28')][_0xc982('0x2c')];var _0x58ef2b=_0x2ad5f5[_0xc982('0x28')][_0xc982('0x2d')];var _0x4c40f1=_0x2ad5f5['body']['callbackUrl'];return getAgent(_0x273af2)[_0xc982('0x1c')](function(_0x3e0ec7){logger[_0xc982('0x10')]('entityFound:',_0x3e0ec7[_0xc982('0x17')]);emit(util[_0xc982('0x2e')](_0xc982('0x2f'),_0x3e0ec7[_0xc982('0x17')]),_0xc982('0x30'),{'callNumber':_0x58f5b4,'callerId':_0x58ef2b,'callbackUrl':_0x4c40f1});return _0x449445[_0xc982('0x18')](0xc8)[_0xc982('0x2a')]({'error':![],'message':_0xc982('0x31')});})[_0xc982('0x32')](handleError(_0x449445));};exports[_0xc982('0x33')]=function(_0x3c8c5f,_0x20acf1){logger[_0xc982('0x10')](_0xc982('0x34'),_0x3c8c5f['body']);var _0x149f10=hangupValidation['validate'](_0x3c8c5f['body']);if(_0x149f10[_0xc982('0x35')]>0x0){return _0x20acf1[_0xc982('0x18')](0x190)[_0xc982('0x2a')](_0x149f10);}var _0x326b1a=_0x3c8c5f[_0xc982('0x28')][_0xc982('0x2b')];var _0x3bd94f=_0x3c8c5f[_0xc982('0x28')][_0xc982('0x36')];return getAgent(_0x326b1a)[_0xc982('0x1c')](function(_0x4716fb){logger[_0xc982('0x10')](_0xc982('0x37'),_0x4716fb[_0xc982('0x17')]);emit(util[_0xc982('0x2e')](_0xc982('0x2f'),_0x4716fb[_0xc982('0x17')]),_0xc982('0x38'),{'sessionId':_0x3bd94f});return _0x20acf1[_0xc982('0x18')](0xc8)[_0xc982('0x2a')]({'error':![],'message':_0xc982('0x39')});})['catch'](handleError(_0x20acf1));};exports[_0xc982('0x3a')]=function(_0x21953e,_0x65eafb){logger[_0xc982('0x10')](_0xc982('0x3b'),_0x21953e[_0xc982('0x28')]);var _0x411159=answerValidation[_0xc982('0x29')](_0x21953e[_0xc982('0x28')]);if(_0x411159[_0xc982('0x35')]>0x0){return _0x65eafb[_0xc982('0x18')](0x190)[_0xc982('0x2a')](_0x411159);}var _0x3fa150=_0x21953e[_0xc982('0x28')]['userId'];var _0xa6d411=_0x21953e[_0xc982('0x28')][_0xc982('0x36')];return getAgent(_0x3fa150)[_0xc982('0x1c')](function(_0x5c2230){logger[_0xc982('0x10')](_0xc982('0x37'),_0x5c2230[_0xc982('0x17')]);emit(util['format'](_0xc982('0x2f'),_0x5c2230[_0xc982('0x17')]),_0xc982('0x3c'),{'sessionId':_0xa6d411});return _0x65eafb[_0xc982('0x18')](0xc8)[_0xc982('0x2a')]({'error':![],'message':'answer\x20executed!'});})[_0xc982('0x32')](handleError(_0x65eafb));};exports[_0xc982('0x3d')]=function(_0x260bb7,_0x3a99a7){logger[_0xc982('0x10')]('hold\x20fired:',_0x260bb7[_0xc982('0x28')]);var _0x3a8410=holdValidation['validate'](_0x260bb7['body']);if(_0x3a8410[_0xc982('0x35')]>0x0){return _0x3a99a7[_0xc982('0x18')](0x190)[_0xc982('0x2a')](_0x3a8410);}var _0x5b8bb5=_0x260bb7[_0xc982('0x28')][_0xc982('0x2b')];var _0x23305a=_0x260bb7[_0xc982('0x28')][_0xc982('0x36')];return getAgent(_0x5b8bb5)[_0xc982('0x1c')](function(_0x4f1a5a){logger[_0xc982('0x10')](_0xc982('0x37'),_0x4f1a5a[_0xc982('0x17')]);emit(util[_0xc982('0x2e')](_0xc982('0x2f'),_0x4f1a5a[_0xc982('0x17')]),_0xc982('0x3e'),{'sessionId':_0x23305a});return _0x3a99a7[_0xc982('0x18')](0xc8)[_0xc982('0x2a')]({'error':![],'message':_0xc982('0x3f')});})[_0xc982('0x32')](handleError(_0x3a99a7));};exports[_0xc982('0x40')]=function(_0x39e5fb,_0x3a5882){logger[_0xc982('0x10')](_0xc982('0x41'),_0x39e5fb[_0xc982('0x28')]);var _0x4e6a7c=unholdValidation['validate'](_0x39e5fb[_0xc982('0x28')]);if(_0x4e6a7c[_0xc982('0x35')]>0x0){return _0x3a5882[_0xc982('0x18')](0x190)['json'](_0x4e6a7c);}var _0x907c25=_0x39e5fb[_0xc982('0x28')][_0xc982('0x2b')];var _0x4ecc86=_0x39e5fb[_0xc982('0x28')][_0xc982('0x36')];return getAgent(_0x907c25)['then'](function(_0x5eebc3){logger[_0xc982('0x10')](_0xc982('0x37'),_0x5eebc3[_0xc982('0x17')]);emit(util[_0xc982('0x2e')]('user:%s',_0x5eebc3[_0xc982('0x17')]),'webbar:unhold',{'sessionId':_0x4ecc86});return _0x3a5882[_0xc982('0x18')](0xc8)[_0xc982('0x2a')]({'error':![],'message':_0xc982('0x42')});})[_0xc982('0x32')](handleError(_0x3a5882));};exports[_0xc982('0x43')]=function(_0x2beadb,_0x37e61c){logger[_0xc982('0x10')](_0xc982('0x44'),_0x37e61c[_0xc982('0x28')]);var _0x304b6b=callsValidation[_0xc982('0x29')](_0x2beadb[_0xc982('0x28')]);if(_0x304b6b[_0xc982('0x35')]>0x0){return _0x37e61c[_0xc982('0x18')](0x190)['json'](_0x304b6b);}var _0x232505=_0x2beadb['body'][_0xc982('0x2b')];var _0x5574d5=respondWithRpcPromise(_0xc982('0x20'));var _0x4eb397=getAgent(_0x232505);return Promise[_0xc982('0x21')]([_0x5574d5,_0x4eb397])['then'](function(_0x3f77ea){var _0x517377=_0x3f77ea[0x0];var _0xa97be2=_0x3f77ea[0x1];var _0x4fbcc2=_[_0xc982('0x22')](_0x517377[_0xc982('0x23')],function(_0x2acd45){return _0x2acd45[_0xc982('0x24')]==_0xa97be2['id'];});return _0x37e61c[_0xc982('0x18')](0xc8)[_0xc982('0x2a')]({'count':_0x4fbcc2[_0xc982('0x35')],'rows':_0x4fbcc2});})['catch'](handleError(_0x37e61c));};exports[_0xc982('0x45')]=function(_0x3a95cf,_0x727c91){logger[_0xc982('0x10')](_0xc982('0x46'),_0x3a95cf['body']);var _0x227327=conferenceValidation[_0xc982('0x29')](_0x3a95cf['body']);if(_0x227327[_0xc982('0x35')]>0x0){return _0x727c91[_0xc982('0x18')](0x190)[_0xc982('0x2a')](_0x227327);}var _0x18db66=_0x3a95cf[_0xc982('0x28')][_0xc982('0x2b')];return getAgent(_0x18db66)[_0xc982('0x1c')](function(_0x1197fc){logger[_0xc982('0x10')](_0xc982('0x37'),_0x1197fc[_0xc982('0x17')]);emit(util[_0xc982('0x2e')](_0xc982('0x2f'),_0x1197fc[_0xc982('0x17')]),_0xc982('0x47'));return _0x727c91[_0xc982('0x18')](0xc8)['json']({'error':![],'message':_0xc982('0x48')});})[_0xc982('0x32')](handleError(_0x727c91));};exports[_0xc982('0x49')]=function(_0x21354d,_0x3235b6){logger[_0xc982('0x10')](_0xc982('0x4a'),_0x21354d[_0xc982('0x28')]);var _0x536682=transferValidation['validate'](_0x21354d[_0xc982('0x28')]);if(_0x536682['length']>0x0){return _0x3235b6[_0xc982('0x18')](0x190)['json'](_0x536682);}var _0x22adf6=_0x21354d[_0xc982('0x28')][_0xc982('0x2b')];var _0x5a78c7=_0x21354d[_0xc982('0x28')]['sessionId'];var _0x27a031=_0x21354d[_0xc982('0x28')][_0xc982('0x4b')];return getAgent(_0x22adf6)[_0xc982('0x1c')](function(_0x2ad31c){logger[_0xc982('0x10')](_0xc982('0x37'),_0x2ad31c[_0xc982('0x17')]);emit(util['format']('user:%s',_0x2ad31c[_0xc982('0x17')]),_0xc982('0x4c'),{'sessionId':_0x5a78c7,'transferNumber':_0x27a031});return _0x3235b6['status'](0xc8)[_0xc982('0x2a')]({'error':![],'message':_0xc982('0x4d')});})['catch'](handleError(_0x3235b6));};