Built motion from commit (unavailable).|2.5.17
[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 _0x4fef=['client','http','../../config/logger','webbarapi','ioredis','redis','localhost','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','emit','handleError:','error','stack','name','status','send','NotFound','then','code','message','catch','User','findOne','agent','UserId','length','sessionId\x20','\x20not\x20found!','originate','info','originate\x20fired:','body','json','userId','callNumber','callerId','entityFound:','format','user:%s','originate\x20executed!','hangup','hangup\x20executed!','sessionId','answer\x20executed!','hold','webbar:hold','hold\x20executed!','unhold','webbar:unhold','calls\x20fired:','filter','rows','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../config/environment','bluebird','jayson/promise'];(function(_0x5b5ffc,_0xbbddea){var _0x1fca64=function(_0x31df40){while(--_0x31df40){_0x5b5ffc['push'](_0x5b5ffc['shift']());}};_0x1fca64(++_0xbbddea);}(_0x4fef,0x10f));var _0xf4fe=function(_0x3296a4,_0x27acfc){_0x3296a4=_0x3296a4-0x0;var _0x7857cf=_0x4fef[_0x3296a4];return _0x7857cf;};'use strict';var path=require(_0xf4fe('0x0'));var fs=require('fs');var _=require(_0xf4fe('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xf4fe('0x2'));var util=require('util');var BPromise=require(_0xf4fe('0x3'));var jayson=require(_0xf4fe('0x4'));var amiClient=jayson[_0xf4fe('0x5')][_0xf4fe('0x6')]({'port':0x232a});var logger=require(_0xf4fe('0x7'))(_0xf4fe('0x8'));var Redis=require(_0xf4fe('0x9'));config[_0xf4fe('0xa')]=_['defaults'](config[_0xf4fe('0xa')],{'host':_0xf4fe('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf4fe('0xa')]));var Schema=require(_0xf4fe('0xc'));var originateValidation=new Schema({'userId':{'type':_0xf4fe('0xd'),'required':[!![],_0xf4fe('0xe')]},'callNumber':{'type':_0xf4fe('0xf'),'required':[!![],_0xf4fe('0x10')]},'callerId':{'type':_0xf4fe('0xf')},'callbackUrl':{'type':_0xf4fe('0xf')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf4fe('0xe')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xf4fe('0xd'),'required':[!![],_0xf4fe('0xe')]},'sessionId':{'type':_0xf4fe('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xf4fe('0xd'),'required':[!![],_0xf4fe('0xe')]},'sessionId':{'type':'string','required':[!![],_0xf4fe('0x11')]},'transferNumber':{'type':_0xf4fe('0xf'),'required':[!![],_0xf4fe('0x12')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf4fe('0xe')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xf4fe('0xd'),'required':[!![],_0xf4fe('0xe')]},'sessionId':{'type':_0xf4fe('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf4fe('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0xf4fe('0xd'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x2a00ea,_0x362e4d,_0x3493cd){logger['info'](_0x2a00ea,_0x362e4d,JSON['stringify'](_0x3493cd));io['to'](_0x2a00ea)[_0xf4fe('0x13')](_0x362e4d,_0x3493cd);}function handleError(_0x225eee){return function(_0x5ad86c){console['log'](_0xf4fe('0x14'),_0x5ad86c,_0x5ad86c instanceof RangeError);logger[_0xf4fe('0x15')](_0x5ad86c[_0xf4fe('0x16')]);if(_0x5ad86c instanceof RangeError){if(_0x5ad86c[_0xf4fe('0x17')]){delete _0x5ad86c[_0xf4fe('0x17')];}_0x225eee[_0xf4fe('0x18')](0x194)[_0xf4fe('0x19')](_0x5ad86c);}else{if(_0x5ad86c[_0xf4fe('0x17')]){delete _0x5ad86c[_0xf4fe('0x17')];}_0x225eee[_0xf4fe('0x18')](0x1f4)[_0xf4fe('0x19')](_0x5ad86c);}};}function checkError(){return function(_0x3c09d0){if(!_0x3c09d0){throw new RangeError(_0xf4fe('0x1a'));}return _0x3c09d0;};}function respondWithRpcPromise(_0xe2b5cc,_0x554eae){return new BPromise(function(_0x3e1d03,_0x5e8e18){var _0x502b3c=amiClient;return _0x502b3c['request'](_0xe2b5cc,_0x554eae)[_0xf4fe('0x1b')](function(_0x518d0d){if(_0x518d0d['error']){if(_0x518d0d[_0xf4fe('0x15')][_0xf4fe('0x1c')]===0x1f4){return _0x5e8e18(_0x518d0d[_0xf4fe('0x15')][_0xf4fe('0x1d')]);}return _0x3e1d03(_0x518d0d[_0xf4fe('0x15')][_0xf4fe('0x1d')]);}else{_0x3e1d03(_0x518d0d['result']);}})[_0xf4fe('0x1e')](function(_0x5ca51d){_0x5e8e18(_0x5ca51d);});});}function getAgent(_0x186ef0){return db[_0xf4fe('0x1f')][_0xf4fe('0x20')]({'where':{'id':_0x186ef0,'role':_0xf4fe('0x21')}})[_0xf4fe('0x1b')](checkError());}function getAgentCheckSession(_0x5790f9,_0x35ae34){return new BPromise(function(_0x112b80,_0x1c455a){var _0x5c3f68=respondWithRpcPromise('VoiceChannels');var _0x2c94c9=getAgent(_0x5790f9);Promise['all']([_0x5c3f68,_0x2c94c9])['then'](function(_0x3d5133){var _0xcfc7b5=_0x3d5133[0x0];var _0x461367=_0x3d5133[0x1];var _0x1ffadb=_['filter'](_0xcfc7b5['rows'],function(_0x4b4832){return _0x4b4832[_0xf4fe('0x22')]==_0x461367['id']&&_0x4b4832['sessionId']==_0x35ae34;});if(_0x1ffadb[_0xf4fe('0x23')]==0x1){_0x112b80(_0x461367);}else{_0x1c455a(new RangeError(_0xf4fe('0x24')+_0x35ae34+_0xf4fe('0x25')));}});});}exports[_0xf4fe('0x26')]=function(_0x171f83,_0x3a0109){logger[_0xf4fe('0x27')](_0xf4fe('0x28'),_0x171f83[_0xf4fe('0x29')]);var _0x1d65c6=originateValidation[_0xf4fe('0xc')](_0x171f83[_0xf4fe('0x29')]);if(_0x1d65c6[_0xf4fe('0x23')]>0x0){return _0x3a0109['status'](0x190)[_0xf4fe('0x2a')](_0x1d65c6);}var _0x13de6a=_0x171f83['body'][_0xf4fe('0x2b')];var _0x3019ff=_0x171f83['body'][_0xf4fe('0x2c')];var _0x1cfa98=_0x171f83[_0xf4fe('0x29')][_0xf4fe('0x2d')];var _0x1270de=_0x171f83[_0xf4fe('0x29')]['callbackUrl'];return getAgent(_0x13de6a)[_0xf4fe('0x1b')](function(_0x10f729){logger['info'](_0xf4fe('0x2e'),_0x10f729[_0xf4fe('0x17')]);emit(util[_0xf4fe('0x2f')](_0xf4fe('0x30'),_0x10f729[_0xf4fe('0x17')]),'webbar:originate',{'callNumber':_0x3019ff,'callerId':_0x1cfa98,'callbackUrl':_0x1270de});return _0x3a0109[_0xf4fe('0x18')](0xc8)[_0xf4fe('0x2a')]({'error':![],'message':_0xf4fe('0x31')});})['catch'](handleError(_0x3a0109));};exports[_0xf4fe('0x32')]=function(_0x19945f,_0x4ea16a){logger[_0xf4fe('0x27')]('hangup\x20fired:',_0x19945f['body']);var _0x392729=hangupValidation[_0xf4fe('0xc')](_0x19945f[_0xf4fe('0x29')]);if(_0x392729['length']>0x0){return _0x4ea16a[_0xf4fe('0x18')](0x190)[_0xf4fe('0x2a')](_0x392729);}var _0x29396a=_0x19945f[_0xf4fe('0x29')][_0xf4fe('0x2b')];var _0x532784=_0x19945f[_0xf4fe('0x29')]['sessionId'];return getAgent(_0x29396a)['then'](function(_0x3e806c){logger[_0xf4fe('0x27')](_0xf4fe('0x2e'),_0x3e806c[_0xf4fe('0x17')]);emit(util['format'](_0xf4fe('0x30'),_0x3e806c[_0xf4fe('0x17')]),'webbar:hangup',{'sessionId':_0x532784});return _0x4ea16a[_0xf4fe('0x18')](0xc8)[_0xf4fe('0x2a')]({'error':![],'message':_0xf4fe('0x33')});})[_0xf4fe('0x1e')](handleError(_0x4ea16a));};exports['answer']=function(_0xb25f9e,_0x1fe567){logger[_0xf4fe('0x27')]('answer\x20fired:',_0xb25f9e[_0xf4fe('0x29')]);var _0x25c098=answerValidation[_0xf4fe('0xc')](_0xb25f9e[_0xf4fe('0x29')]);if(_0x25c098['length']>0x0){return _0x1fe567[_0xf4fe('0x18')](0x190)[_0xf4fe('0x2a')](_0x25c098);}var _0x3ecd8b=_0xb25f9e[_0xf4fe('0x29')][_0xf4fe('0x2b')];var _0x5effba=_0xb25f9e[_0xf4fe('0x29')][_0xf4fe('0x34')];return getAgent(_0x3ecd8b)[_0xf4fe('0x1b')](function(_0x3d76a8){logger[_0xf4fe('0x27')](_0xf4fe('0x2e'),_0x3d76a8[_0xf4fe('0x17')]);emit(util[_0xf4fe('0x2f')]('user:%s',_0x3d76a8[_0xf4fe('0x17')]),'webbar:answer',{'sessionId':_0x5effba});return _0x1fe567[_0xf4fe('0x18')](0xc8)[_0xf4fe('0x2a')]({'error':![],'message':_0xf4fe('0x35')});})['catch'](handleError(_0x1fe567));};exports[_0xf4fe('0x36')]=function(_0xaf567c,_0xbcfd5){logger[_0xf4fe('0x27')]('hold\x20fired:',_0xaf567c[_0xf4fe('0x29')]);var _0x4b3184=holdValidation[_0xf4fe('0xc')](_0xaf567c[_0xf4fe('0x29')]);if(_0x4b3184[_0xf4fe('0x23')]>0x0){return _0xbcfd5[_0xf4fe('0x18')](0x190)[_0xf4fe('0x2a')](_0x4b3184);}var _0x4a0cf0=_0xaf567c[_0xf4fe('0x29')]['userId'];var _0x6c5690=_0xaf567c[_0xf4fe('0x29')][_0xf4fe('0x34')];return getAgent(_0x4a0cf0)['then'](function(_0x59de95){logger['info'](_0xf4fe('0x2e'),_0x59de95[_0xf4fe('0x17')]);emit(util[_0xf4fe('0x2f')](_0xf4fe('0x30'),_0x59de95[_0xf4fe('0x17')]),_0xf4fe('0x37'),{'sessionId':_0x6c5690});return _0xbcfd5[_0xf4fe('0x18')](0xc8)['json']({'error':![],'message':_0xf4fe('0x38')});})[_0xf4fe('0x1e')](handleError(_0xbcfd5));};exports[_0xf4fe('0x39')]=function(_0x4bf5d7,_0x8b8fd9){logger[_0xf4fe('0x27')]('unhold\x20fired:',_0x4bf5d7[_0xf4fe('0x29')]);var _0x17f367=unholdValidation[_0xf4fe('0xc')](_0x4bf5d7['body']);if(_0x17f367['length']>0x0){return _0x8b8fd9[_0xf4fe('0x18')](0x190)[_0xf4fe('0x2a')](_0x17f367);}var _0x3f3385=_0x4bf5d7[_0xf4fe('0x29')]['userId'];var _0xdaeaa3=_0x4bf5d7[_0xf4fe('0x29')][_0xf4fe('0x34')];return getAgent(_0x3f3385)[_0xf4fe('0x1b')](function(_0x3acba3){logger[_0xf4fe('0x27')]('entityFound:',_0x3acba3[_0xf4fe('0x17')]);emit(util[_0xf4fe('0x2f')]('user:%s',_0x3acba3[_0xf4fe('0x17')]),_0xf4fe('0x3a'),{'sessionId':_0xdaeaa3});return _0x8b8fd9[_0xf4fe('0x18')](0xc8)[_0xf4fe('0x2a')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x8b8fd9));};exports['calls']=function(_0x681557,_0x2ce7de){logger['info'](_0xf4fe('0x3b'),_0x2ce7de[_0xf4fe('0x29')]);var _0x1f21a4=callsValidation[_0xf4fe('0xc')](_0x681557[_0xf4fe('0x29')]);if(_0x1f21a4[_0xf4fe('0x23')]>0x0){return _0x2ce7de[_0xf4fe('0x18')](0x190)['json'](_0x1f21a4);}var _0x3a1cae=_0x681557[_0xf4fe('0x29')]['userId'];var _0x385d17=respondWithRpcPromise('VoiceChannels');var _0x427fef=getAgent(_0x3a1cae);return Promise['all']([_0x385d17,_0x427fef])[_0xf4fe('0x1b')](function(_0x453e83){var _0x36f2bc=_0x453e83[0x0];var _0x45f666=_0x453e83[0x1];var _0x28e559=_[_0xf4fe('0x3c')](_0x36f2bc[_0xf4fe('0x3d')],function(_0x335b0f){return _0x335b0f[_0xf4fe('0x22')]==_0x45f666['id'];});return _0x2ce7de['status'](0xc8)['json']({'count':_0x28e559[_0xf4fe('0x23')],'rows':_0x28e559});})[_0xf4fe('0x1e')](handleError(_0x2ce7de));};exports[_0xf4fe('0x3e')]=function(_0x525375,_0x21331d){logger[_0xf4fe('0x27')](_0xf4fe('0x3f'),_0x525375[_0xf4fe('0x29')]);var _0x4e345d=conferenceValidation[_0xf4fe('0xc')](_0x525375[_0xf4fe('0x29')]);if(_0x4e345d[_0xf4fe('0x23')]>0x0){return _0x21331d['status'](0x190)['json'](_0x4e345d);}var _0x1c3b42=_0x525375[_0xf4fe('0x29')][_0xf4fe('0x2b')];return getAgent(_0x1c3b42)['then'](function(_0x5b73e1){logger[_0xf4fe('0x27')](_0xf4fe('0x2e'),_0x5b73e1[_0xf4fe('0x17')]);emit(util[_0xf4fe('0x2f')](_0xf4fe('0x30'),_0x5b73e1[_0xf4fe('0x17')]),_0xf4fe('0x40'));return _0x21331d[_0xf4fe('0x18')](0xc8)['json']({'error':![],'message':_0xf4fe('0x41')});})[_0xf4fe('0x1e')](handleError(_0x21331d));};exports['transfer']=function(_0x48435d,_0x366ef1){logger[_0xf4fe('0x27')](_0xf4fe('0x42'),_0x48435d[_0xf4fe('0x29')]);var _0x5af151=transferValidation[_0xf4fe('0xc')](_0x48435d['body']);if(_0x5af151[_0xf4fe('0x23')]>0x0){return _0x366ef1[_0xf4fe('0x18')](0x190)[_0xf4fe('0x2a')](_0x5af151);}var _0x4b0f3d=_0x48435d['body']['userId'];var _0x2e625e=_0x48435d[_0xf4fe('0x29')][_0xf4fe('0x34')];var _0x4d770f=_0x48435d[_0xf4fe('0x29')][_0xf4fe('0x43')];return getAgent(_0x4b0f3d)[_0xf4fe('0x1b')](function(_0x3cb883){logger[_0xf4fe('0x27')](_0xf4fe('0x2e'),_0x3cb883['name']);emit(util[_0xf4fe('0x2f')](_0xf4fe('0x30'),_0x3cb883['name']),'webbar:transfer',{'sessionId':_0x2e625e,'transferNumber':_0x4d770f});return _0x366ef1['status'](0xc8)[_0xf4fe('0x2a')]({'error':![],'message':_0xf4fe('0x44')});})[_0xf4fe('0x1e')](handleError(_0x366ef1));};