Built motion from commit (unavailable).|2.5.31
[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 _0x6d2e=['calls\x20fired:','UserId','conference\x20fired:','webbar:conference','transfer','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','http','ioredis','redis','defaults','localhost','validate','userId\x20is\x20required','string','number','sessionId\x20is\x20required','info','stringify','log','handleError:','error','stack','name','send','status','request','then','code','message','result','catch','findOne','agent','VoiceChannels','all','filter','rows','sessionId','length','sessionId\x20','\x20not\x20found!','originate\x20fired:','body','json','userId','callNumber','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup\x20fired:','user:%s','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','webbar:unhold','unhold\x20executed!','calls'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x6d2e,0x97));var _0xe6d2=function(_0x53594d,_0xb372ae){_0x53594d=_0x53594d-0x0;var _0x3b2544=_0x6d2e[_0x53594d];return _0x3b2544;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xe6d2('0x0'));var db=require(_0xe6d2('0x1'))['db'];var config=require(_0xe6d2('0x2'));var util=require(_0xe6d2('0x3'));var BPromise=require(_0xe6d2('0x4'));var jayson=require(_0xe6d2('0x5'));var amiClient=jayson['client'][_0xe6d2('0x6')]({'port':0x232a});var logger=require('../../config/logger')('webbarapi');var Redis=require(_0xe6d2('0x7'));config[_0xe6d2('0x8')]=_[_0xe6d2('0x9')](config['redis'],{'host':_0xe6d2('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe6d2('0x8')]));var Schema=require(_0xe6d2('0xb'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe6d2('0xc')]},'callNumber':{'type':_0xe6d2('0xd'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0xe6d2('0xd')},'callbackUrl':{'type':_0xe6d2('0xd')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe6d2('0xc')]},'sessionId':{'type':_0xe6d2('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xe6d2('0xe'),'required':[!![],_0xe6d2('0xc')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xe6d2('0xe'),'required':[!![],_0xe6d2('0xc')]},'sessionId':{'type':'string','required':[!![],_0xe6d2('0xf')]},'transferNumber':{'type':_0xe6d2('0xd'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0xe6d2('0xe'),'required':[!![],_0xe6d2('0xc')]},'sessionId':{'type':_0xe6d2('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe6d2('0xe'),'required':[!![],_0xe6d2('0xc')]},'sessionId':{'type':_0xe6d2('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe6d2('0xe'),'required':[!![],_0xe6d2('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':_0xe6d2('0xe'),'required':[!![],_0xe6d2('0xc')]}});function emit(_0xf6a43e,_0x34ff3e,_0x1e85a0){logger[_0xe6d2('0x10')](_0xf6a43e,_0x34ff3e,JSON[_0xe6d2('0x11')](_0x1e85a0));io['to'](_0xf6a43e)['emit'](_0x34ff3e,_0x1e85a0);}function handleError(_0x2ec9cc){return function(_0x35cc9c){console[_0xe6d2('0x12')](_0xe6d2('0x13'),_0x35cc9c,_0x35cc9c instanceof RangeError);logger[_0xe6d2('0x14')](_0x35cc9c[_0xe6d2('0x15')]);if(_0x35cc9c instanceof RangeError){if(_0x35cc9c[_0xe6d2('0x16')]){delete _0x35cc9c[_0xe6d2('0x16')];}_0x2ec9cc['status'](0x194)[_0xe6d2('0x17')](_0x35cc9c);}else{if(_0x35cc9c[_0xe6d2('0x16')]){delete _0x35cc9c['name'];}_0x2ec9cc[_0xe6d2('0x18')](0x1f4)[_0xe6d2('0x17')](_0x35cc9c);}};}function checkError(){return function(_0x19bce0){if(!_0x19bce0){throw new RangeError('NotFound');}return _0x19bce0;};}function respondWithRpcPromise(_0x3d4387,_0x5ade7b){return new BPromise(function(_0x2d5acf,_0xa4fac9){var _0x2f374f=amiClient;return _0x2f374f[_0xe6d2('0x19')](_0x3d4387,_0x5ade7b)[_0xe6d2('0x1a')](function(_0xb05d8c){if(_0xb05d8c[_0xe6d2('0x14')]){if(_0xb05d8c[_0xe6d2('0x14')][_0xe6d2('0x1b')]===0x1f4){return _0xa4fac9(_0xb05d8c['error'][_0xe6d2('0x1c')]);}return _0x2d5acf(_0xb05d8c[_0xe6d2('0x14')][_0xe6d2('0x1c')]);}else{_0x2d5acf(_0xb05d8c[_0xe6d2('0x1d')]);}})[_0xe6d2('0x1e')](function(_0x5d327a){_0xa4fac9(_0x5d327a);});});}function getAgent(_0x4a6ba8){return db['User'][_0xe6d2('0x1f')]({'where':{'id':_0x4a6ba8,'role':_0xe6d2('0x20')}})[_0xe6d2('0x1a')](checkError());}function getAgentCheckSession(_0x3a8734,_0x125286){return new BPromise(function(_0x223992,_0x83af1){var _0x4c4a4e=respondWithRpcPromise(_0xe6d2('0x21'));var _0x5d8299=getAgent(_0x3a8734);Promise[_0xe6d2('0x22')]([_0x4c4a4e,_0x5d8299])[_0xe6d2('0x1a')](function(_0x15b607){var _0x31d894=_0x15b607[0x0];var _0x2dceba=_0x15b607[0x1];var _0x2a9149=_[_0xe6d2('0x23')](_0x31d894[_0xe6d2('0x24')],function(_0x32056f){return _0x32056f['UserId']==_0x2dceba['id']&&_0x32056f[_0xe6d2('0x25')]==_0x125286;});if(_0x2a9149[_0xe6d2('0x26')]==0x1){_0x223992(_0x2dceba);}else{_0x83af1(new RangeError(_0xe6d2('0x27')+_0x125286+_0xe6d2('0x28')));}});});}exports['originate']=function(_0x22a192,_0x7c1e7e){logger[_0xe6d2('0x10')](_0xe6d2('0x29'),_0x22a192[_0xe6d2('0x2a')]);var _0x54bd35=originateValidation[_0xe6d2('0xb')](_0x22a192[_0xe6d2('0x2a')]);if(_0x54bd35[_0xe6d2('0x26')]>0x0){return _0x7c1e7e[_0xe6d2('0x18')](0x190)[_0xe6d2('0x2b')](_0x54bd35);}var _0x21b470=_0x22a192['body'][_0xe6d2('0x2c')];var _0x1ecefe=_0x22a192['body'][_0xe6d2('0x2d')];var _0x44e9c7=_0x22a192[_0xe6d2('0x2a')]['callerId'];var _0x4e11a9=_0x22a192[_0xe6d2('0x2a')][_0xe6d2('0x2e')];return getAgent(_0x21b470)[_0xe6d2('0x1a')](function(_0x486ff0){logger[_0xe6d2('0x10')](_0xe6d2('0x2f'),_0x486ff0[_0xe6d2('0x16')]);emit(util[_0xe6d2('0x30')]('user:%s',_0x486ff0[_0xe6d2('0x16')]),_0xe6d2('0x31'),{'callNumber':_0x1ecefe,'callerId':_0x44e9c7,'callbackUrl':_0x4e11a9});return _0x7c1e7e[_0xe6d2('0x18')](0xc8)[_0xe6d2('0x2b')]({'error':![],'message':_0xe6d2('0x32')});})['catch'](handleError(_0x7c1e7e));};exports['hangup']=function(_0x18329a,_0x33879f){logger[_0xe6d2('0x10')](_0xe6d2('0x33'),_0x18329a[_0xe6d2('0x2a')]);var _0x10280b=hangupValidation['validate'](_0x18329a[_0xe6d2('0x2a')]);if(_0x10280b[_0xe6d2('0x26')]>0x0){return _0x33879f['status'](0x190)[_0xe6d2('0x2b')](_0x10280b);}var _0x12396f=_0x18329a[_0xe6d2('0x2a')][_0xe6d2('0x2c')];var _0x558742=_0x18329a[_0xe6d2('0x2a')][_0xe6d2('0x25')];return getAgent(_0x12396f)[_0xe6d2('0x1a')](function(_0x1a192b){logger[_0xe6d2('0x10')](_0xe6d2('0x2f'),_0x1a192b[_0xe6d2('0x16')]);emit(util[_0xe6d2('0x30')](_0xe6d2('0x34'),_0x1a192b[_0xe6d2('0x16')]),_0xe6d2('0x35'),{'sessionId':_0x558742});return _0x33879f[_0xe6d2('0x18')](0xc8)[_0xe6d2('0x2b')]({'error':![],'message':'hangup\x20executed!'});})[_0xe6d2('0x1e')](handleError(_0x33879f));};exports[_0xe6d2('0x36')]=function(_0x358b2d,_0x233741){logger[_0xe6d2('0x10')](_0xe6d2('0x37'),_0x358b2d['body']);var _0x1ca811=answerValidation[_0xe6d2('0xb')](_0x358b2d[_0xe6d2('0x2a')]);if(_0x1ca811[_0xe6d2('0x26')]>0x0){return _0x233741[_0xe6d2('0x18')](0x190)['json'](_0x1ca811);}var _0x56b482=_0x358b2d[_0xe6d2('0x2a')][_0xe6d2('0x2c')];var _0x44f148=_0x358b2d[_0xe6d2('0x2a')]['sessionId'];return getAgent(_0x56b482)[_0xe6d2('0x1a')](function(_0x3d6cb4){logger[_0xe6d2('0x10')](_0xe6d2('0x2f'),_0x3d6cb4[_0xe6d2('0x16')]);emit(util['format']('user:%s',_0x3d6cb4[_0xe6d2('0x16')]),_0xe6d2('0x38'),{'sessionId':_0x44f148});return _0x233741[_0xe6d2('0x18')](0xc8)['json']({'error':![],'message':_0xe6d2('0x39')});})[_0xe6d2('0x1e')](handleError(_0x233741));};exports[_0xe6d2('0x3a')]=function(_0x2a82ee,_0x4650dd){logger['info'](_0xe6d2('0x3b'),_0x2a82ee[_0xe6d2('0x2a')]);var _0x3c90d9=holdValidation['validate'](_0x2a82ee[_0xe6d2('0x2a')]);if(_0x3c90d9[_0xe6d2('0x26')]>0x0){return _0x4650dd[_0xe6d2('0x18')](0x190)[_0xe6d2('0x2b')](_0x3c90d9);}var _0x3c93b0=_0x2a82ee[_0xe6d2('0x2a')][_0xe6d2('0x2c')];var _0x532279=_0x2a82ee[_0xe6d2('0x2a')][_0xe6d2('0x25')];return getAgent(_0x3c93b0)[_0xe6d2('0x1a')](function(_0x3493f6){logger[_0xe6d2('0x10')](_0xe6d2('0x2f'),_0x3493f6[_0xe6d2('0x16')]);emit(util[_0xe6d2('0x30')](_0xe6d2('0x34'),_0x3493f6[_0xe6d2('0x16')]),_0xe6d2('0x3c'),{'sessionId':_0x532279});return _0x4650dd[_0xe6d2('0x18')](0xc8)[_0xe6d2('0x2b')]({'error':![],'message':_0xe6d2('0x3d')});})[_0xe6d2('0x1e')](handleError(_0x4650dd));};exports['unhold']=function(_0x26ff5f,_0x41552a){logger[_0xe6d2('0x10')]('unhold\x20fired:',_0x26ff5f[_0xe6d2('0x2a')]);var _0x4b9a47=unholdValidation['validate'](_0x26ff5f[_0xe6d2('0x2a')]);if(_0x4b9a47[_0xe6d2('0x26')]>0x0){return _0x41552a[_0xe6d2('0x18')](0x190)[_0xe6d2('0x2b')](_0x4b9a47);}var _0x3d0338=_0x26ff5f['body']['userId'];var _0x2ae7a6=_0x26ff5f[_0xe6d2('0x2a')][_0xe6d2('0x25')];return getAgent(_0x3d0338)[_0xe6d2('0x1a')](function(_0x4d879c){logger[_0xe6d2('0x10')]('entityFound:',_0x4d879c[_0xe6d2('0x16')]);emit(util[_0xe6d2('0x30')](_0xe6d2('0x34'),_0x4d879c[_0xe6d2('0x16')]),_0xe6d2('0x3e'),{'sessionId':_0x2ae7a6});return _0x41552a[_0xe6d2('0x18')](0xc8)[_0xe6d2('0x2b')]({'error':![],'message':_0xe6d2('0x3f')});})[_0xe6d2('0x1e')](handleError(_0x41552a));};exports[_0xe6d2('0x40')]=function(_0x5558b3,_0x3d6499){logger['info'](_0xe6d2('0x41'),_0x3d6499['body']);var _0x271c1e=callsValidation[_0xe6d2('0xb')](_0x5558b3[_0xe6d2('0x2a')]);if(_0x271c1e[_0xe6d2('0x26')]>0x0){return _0x3d6499['status'](0x190)['json'](_0x271c1e);}var _0xa98cc2=_0x5558b3[_0xe6d2('0x2a')][_0xe6d2('0x2c')];var _0x1c2191=respondWithRpcPromise(_0xe6d2('0x21'));var _0x389beb=getAgent(_0xa98cc2);return Promise[_0xe6d2('0x22')]([_0x1c2191,_0x389beb])[_0xe6d2('0x1a')](function(_0x47748a){var _0x2e4518=_0x47748a[0x0];var _0x4f1a9b=_0x47748a[0x1];var _0x3d0d50=_[_0xe6d2('0x23')](_0x2e4518['rows'],function(_0xb9d96a){return _0xb9d96a[_0xe6d2('0x42')]==_0x4f1a9b['id'];});return _0x3d6499[_0xe6d2('0x18')](0xc8)['json']({'count':_0x3d0d50[_0xe6d2('0x26')],'rows':_0x3d0d50});})[_0xe6d2('0x1e')](handleError(_0x3d6499));};exports['conference']=function(_0x51c939,_0x32dd6b){logger[_0xe6d2('0x10')](_0xe6d2('0x43'),_0x51c939[_0xe6d2('0x2a')]);var _0x40f0f4=conferenceValidation[_0xe6d2('0xb')](_0x51c939[_0xe6d2('0x2a')]);if(_0x40f0f4[_0xe6d2('0x26')]>0x0){return _0x32dd6b[_0xe6d2('0x18')](0x190)[_0xe6d2('0x2b')](_0x40f0f4);}var _0x500bf2=_0x51c939['body'][_0xe6d2('0x2c')];return getAgent(_0x500bf2)[_0xe6d2('0x1a')](function(_0x4c3f99){logger['info']('entityFound:',_0x4c3f99[_0xe6d2('0x16')]);emit(util[_0xe6d2('0x30')]('user:%s',_0x4c3f99[_0xe6d2('0x16')]),_0xe6d2('0x44'));return _0x32dd6b[_0xe6d2('0x18')](0xc8)[_0xe6d2('0x2b')]({'error':![],'message':'conference\x20executed!'});})[_0xe6d2('0x1e')](handleError(_0x32dd6b));};exports[_0xe6d2('0x45')]=function(_0x2cf7cd,_0x54adc7){logger[_0xe6d2('0x10')]('transfer\x20fired:',_0x2cf7cd['body']);var _0x1a4c82=transferValidation[_0xe6d2('0xb')](_0x2cf7cd['body']);if(_0x1a4c82[_0xe6d2('0x26')]>0x0){return _0x54adc7[_0xe6d2('0x18')](0x190)[_0xe6d2('0x2b')](_0x1a4c82);}var _0xc4800e=_0x2cf7cd[_0xe6d2('0x2a')][_0xe6d2('0x2c')];var _0x4de025=_0x2cf7cd[_0xe6d2('0x2a')][_0xe6d2('0x25')];var _0x152bca=_0x2cf7cd['body']['transferNumber'];return getAgent(_0xc4800e)[_0xe6d2('0x1a')](function(_0x2af1fc){logger[_0xe6d2('0x10')](_0xe6d2('0x2f'),_0x2af1fc[_0xe6d2('0x16')]);emit(util[_0xe6d2('0x30')](_0xe6d2('0x34'),_0x2af1fc[_0xe6d2('0x16')]),_0xe6d2('0x46'),{'sessionId':_0x4de025,'transferNumber':_0x152bca});return _0x54adc7[_0xe6d2('0x18')](0xc8)['json']({'error':![],'message':_0xe6d2('0x47')});})['catch'](handleError(_0x54adc7));};