Built motion from commit 19a84241.|2.5.34
[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 _0xe130=['jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','transferNumber\x20is\x20required','info','emit','handleError:','stack','name','status','send','NotFound','request','error','code','message','result','catch','User','findOne','agent','then','all','filter','rows','UserId','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','format','user:%s','webbar:originate','hangup','webbar:hangup','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','entityFound:','webbar:hold','hold\x20executed!','unhold','webbar:unhold','calls','VoiceChannels','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird'];(function(_0x149cc,_0x3e0c19){var _0x2de064=function(_0x5e0e2b){while(--_0x5e0e2b){_0x149cc['push'](_0x149cc['shift']());}};_0x2de064(++_0x3e0c19);}(_0xe130,0x127));var _0x0e13=function(_0x2ae9e4,_0x164b6e){_0x2ae9e4=_0x2ae9e4-0x0;var _0x3fca9f=_0xe130[_0x2ae9e4];return _0x3fca9f;};'use strict';var path=require(_0x0e13('0x0'));var fs=require('fs');var _=require(_0x0e13('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x0e13('0x2'));var util=require(_0x0e13('0x3'));var BPromise=require(_0x0e13('0x4'));var jayson=require(_0x0e13('0x5'));var amiClient=jayson[_0x0e13('0x6')]['http']({'port':0x232a});var logger=require(_0x0e13('0x7'))(_0x0e13('0x8'));var Redis=require(_0x0e13('0x9'));config[_0x0e13('0xa')]=_['defaults'](config[_0x0e13('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0x0e13('0xb'));var originateValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x0e13('0xd')]},'callerId':{'type':_0x0e13('0xe')},'callbackUrl':{'type':_0x0e13('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],_0x0e13('0xf')]},'sessionId':{'type':_0x0e13('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x0e13('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x0e13('0xe'),'required':[!![],_0x0e13('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],_0x0e13('0xf')]},'sessionId':{'type':_0x0e13('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],_0x0e13('0xf')]},'sessionId':{'type':_0x0e13('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x0e13('0xc'),'required':[!![],_0x0e13('0xf')]}});function emit(_0x2057fe,_0x433965,_0x38bfb3){logger[_0x0e13('0x11')](_0x2057fe,_0x433965,JSON['stringify'](_0x38bfb3));io['to'](_0x2057fe)[_0x0e13('0x12')](_0x433965,_0x38bfb3);}function handleError(_0x2964d3){return function(_0x510a2b){console['log'](_0x0e13('0x13'),_0x510a2b,_0x510a2b instanceof RangeError);logger['error'](_0x510a2b[_0x0e13('0x14')]);if(_0x510a2b instanceof RangeError){if(_0x510a2b['name']){delete _0x510a2b[_0x0e13('0x15')];}_0x2964d3[_0x0e13('0x16')](0x194)[_0x0e13('0x17')](_0x510a2b);}else{if(_0x510a2b[_0x0e13('0x15')]){delete _0x510a2b[_0x0e13('0x15')];}_0x2964d3['status'](0x1f4)['send'](_0x510a2b);}};}function checkError(){return function(_0x580d43){if(!_0x580d43){throw new RangeError(_0x0e13('0x18'));}return _0x580d43;};}function respondWithRpcPromise(_0x141c84,_0x505d53){return new BPromise(function(_0x515222,_0x295eb0){var _0x296ed3=amiClient;return _0x296ed3[_0x0e13('0x19')](_0x141c84,_0x505d53)['then'](function(_0x400e87){if(_0x400e87[_0x0e13('0x1a')]){if(_0x400e87[_0x0e13('0x1a')][_0x0e13('0x1b')]===0x1f4){return _0x295eb0(_0x400e87[_0x0e13('0x1a')][_0x0e13('0x1c')]);}return _0x515222(_0x400e87[_0x0e13('0x1a')][_0x0e13('0x1c')]);}else{_0x515222(_0x400e87[_0x0e13('0x1d')]);}})[_0x0e13('0x1e')](function(_0x9621e2){_0x295eb0(_0x9621e2);});});}function getAgent(_0x443a85){return db[_0x0e13('0x1f')][_0x0e13('0x20')]({'where':{'id':_0x443a85,'role':_0x0e13('0x21')}})[_0x0e13('0x22')](checkError());}function getAgentCheckSession(_0x1edc48,_0x59ae33){return new BPromise(function(_0x37fe42,_0x3e8c13){var _0x3684bb=respondWithRpcPromise('VoiceChannels');var _0x2182ae=getAgent(_0x1edc48);Promise[_0x0e13('0x23')]([_0x3684bb,_0x2182ae])[_0x0e13('0x22')](function(_0x4606de){var _0x5d41c3=_0x4606de[0x0];var _0xe9151f=_0x4606de[0x1];var _0x3867d5=_[_0x0e13('0x24')](_0x5d41c3[_0x0e13('0x25')],function(_0x2e65e2){return _0x2e65e2[_0x0e13('0x26')]==_0xe9151f['id']&&_0x2e65e2[_0x0e13('0x27')]==_0x59ae33;});if(_0x3867d5[_0x0e13('0x28')]==0x1){_0x37fe42(_0xe9151f);}else{_0x3e8c13(new RangeError('sessionId\x20'+_0x59ae33+_0x0e13('0x29')));}});});}exports[_0x0e13('0x2a')]=function(_0x325003,_0x53ef0a){logger[_0x0e13('0x11')](_0x0e13('0x2b'),_0x325003[_0x0e13('0x2c')]);var _0x4311da=originateValidation[_0x0e13('0xb')](_0x325003[_0x0e13('0x2c')]);if(_0x4311da[_0x0e13('0x28')]>0x0){return _0x53ef0a[_0x0e13('0x16')](0x190)[_0x0e13('0x2d')](_0x4311da);}var _0x4a5cc1=_0x325003[_0x0e13('0x2c')][_0x0e13('0x2e')];var _0x29e017=_0x325003['body'][_0x0e13('0x2f')];var _0x560bee=_0x325003[_0x0e13('0x2c')][_0x0e13('0x30')];var _0x33d819=_0x325003[_0x0e13('0x2c')][_0x0e13('0x31')];return getAgent(_0x4a5cc1)[_0x0e13('0x22')](function(_0x110b37){logger['info']('entityFound:',_0x110b37[_0x0e13('0x15')]);emit(util[_0x0e13('0x32')](_0x0e13('0x33'),_0x110b37[_0x0e13('0x15')]),_0x0e13('0x34'),{'callNumber':_0x29e017,'callerId':_0x560bee,'callbackUrl':_0x33d819});return _0x53ef0a[_0x0e13('0x16')](0xc8)[_0x0e13('0x2d')]({'error':![],'message':'originate\x20executed!'});})[_0x0e13('0x1e')](handleError(_0x53ef0a));};exports[_0x0e13('0x35')]=function(_0x476c6e,_0x4729da){logger[_0x0e13('0x11')]('hangup\x20fired:',_0x476c6e[_0x0e13('0x2c')]);var _0x2dd946=hangupValidation[_0x0e13('0xb')](_0x476c6e['body']);if(_0x2dd946[_0x0e13('0x28')]>0x0){return _0x4729da['status'](0x190)[_0x0e13('0x2d')](_0x2dd946);}var _0x5557e6=_0x476c6e[_0x0e13('0x2c')]['userId'];var _0x411b44=_0x476c6e[_0x0e13('0x2c')][_0x0e13('0x27')];return getAgent(_0x5557e6)[_0x0e13('0x22')](function(_0x11e209){logger[_0x0e13('0x11')]('entityFound:',_0x11e209[_0x0e13('0x15')]);emit(util[_0x0e13('0x32')](_0x0e13('0x33'),_0x11e209[_0x0e13('0x15')]),_0x0e13('0x36'),{'sessionId':_0x411b44});return _0x4729da[_0x0e13('0x16')](0xc8)[_0x0e13('0x2d')]({'error':![],'message':'hangup\x20executed!'});})[_0x0e13('0x1e')](handleError(_0x4729da));};exports['answer']=function(_0x54da3f,_0x4ba4ec){logger[_0x0e13('0x11')](_0x0e13('0x37'),_0x54da3f[_0x0e13('0x2c')]);var _0x14ab2a=answerValidation[_0x0e13('0xb')](_0x54da3f[_0x0e13('0x2c')]);if(_0x14ab2a[_0x0e13('0x28')]>0x0){return _0x4ba4ec['status'](0x190)[_0x0e13('0x2d')](_0x14ab2a);}var _0x4f9f28=_0x54da3f['body'][_0x0e13('0x2e')];var _0x3bacaf=_0x54da3f[_0x0e13('0x2c')][_0x0e13('0x27')];return getAgent(_0x4f9f28)['then'](function(_0xa8f369){logger[_0x0e13('0x11')]('entityFound:',_0xa8f369[_0x0e13('0x15')]);emit(util[_0x0e13('0x32')](_0x0e13('0x33'),_0xa8f369[_0x0e13('0x15')]),_0x0e13('0x38'),{'sessionId':_0x3bacaf});return _0x4ba4ec[_0x0e13('0x16')](0xc8)[_0x0e13('0x2d')]({'error':![],'message':_0x0e13('0x39')});})[_0x0e13('0x1e')](handleError(_0x4ba4ec));};exports[_0x0e13('0x3a')]=function(_0x4b2a3b,_0x514b1d){logger[_0x0e13('0x11')](_0x0e13('0x3b'),_0x4b2a3b[_0x0e13('0x2c')]);var _0x18bc94=holdValidation[_0x0e13('0xb')](_0x4b2a3b['body']);if(_0x18bc94[_0x0e13('0x28')]>0x0){return _0x514b1d[_0x0e13('0x16')](0x190)[_0x0e13('0x2d')](_0x18bc94);}var _0x548259=_0x4b2a3b[_0x0e13('0x2c')]['userId'];var _0x17b5c4=_0x4b2a3b[_0x0e13('0x2c')][_0x0e13('0x27')];return getAgent(_0x548259)[_0x0e13('0x22')](function(_0x35249c){logger['info'](_0x0e13('0x3c'),_0x35249c['name']);emit(util[_0x0e13('0x32')](_0x0e13('0x33'),_0x35249c['name']),_0x0e13('0x3d'),{'sessionId':_0x17b5c4});return _0x514b1d[_0x0e13('0x16')](0xc8)[_0x0e13('0x2d')]({'error':![],'message':_0x0e13('0x3e')});})['catch'](handleError(_0x514b1d));};exports[_0x0e13('0x3f')]=function(_0x359de5,_0x4d9afd){logger[_0x0e13('0x11')]('unhold\x20fired:',_0x359de5['body']);var _0x56b589=unholdValidation[_0x0e13('0xb')](_0x359de5['body']);if(_0x56b589[_0x0e13('0x28')]>0x0){return _0x4d9afd[_0x0e13('0x16')](0x190)[_0x0e13('0x2d')](_0x56b589);}var _0x417a31=_0x359de5[_0x0e13('0x2c')]['userId'];var _0x39cdc8=_0x359de5[_0x0e13('0x2c')][_0x0e13('0x27')];return getAgent(_0x417a31)[_0x0e13('0x22')](function(_0x4539f6){logger[_0x0e13('0x11')](_0x0e13('0x3c'),_0x4539f6[_0x0e13('0x15')]);emit(util[_0x0e13('0x32')](_0x0e13('0x33'),_0x4539f6[_0x0e13('0x15')]),_0x0e13('0x40'),{'sessionId':_0x39cdc8});return _0x4d9afd['status'](0xc8)[_0x0e13('0x2d')]({'error':![],'message':'unhold\x20executed!'});})[_0x0e13('0x1e')](handleError(_0x4d9afd));};exports[_0x0e13('0x41')]=function(_0x509c31,_0x10799f){logger[_0x0e13('0x11')]('calls\x20fired:',_0x10799f[_0x0e13('0x2c')]);var _0x65111c=callsValidation[_0x0e13('0xb')](_0x509c31[_0x0e13('0x2c')]);if(_0x65111c['length']>0x0){return _0x10799f[_0x0e13('0x16')](0x190)[_0x0e13('0x2d')](_0x65111c);}var _0x348ea5=_0x509c31[_0x0e13('0x2c')][_0x0e13('0x2e')];var _0x27df87=respondWithRpcPromise(_0x0e13('0x42'));var _0x1132ac=getAgent(_0x348ea5);return Promise[_0x0e13('0x23')]([_0x27df87,_0x1132ac])['then'](function(_0x3d5c20){var _0xa3db49=_0x3d5c20[0x0];var _0x15ad8f=_0x3d5c20[0x1];var _0x1d670f=_[_0x0e13('0x24')](_0xa3db49[_0x0e13('0x25')],function(_0x17f680){return _0x17f680[_0x0e13('0x26')]==_0x15ad8f['id'];});return _0x10799f[_0x0e13('0x16')](0xc8)[_0x0e13('0x2d')]({'count':_0x1d670f[_0x0e13('0x28')],'rows':_0x1d670f});})['catch'](handleError(_0x10799f));};exports[_0x0e13('0x43')]=function(_0x15ddfa,_0x35b1ea){logger[_0x0e13('0x11')](_0x0e13('0x44'),_0x15ddfa[_0x0e13('0x2c')]);var _0x2e17e7=conferenceValidation['validate'](_0x15ddfa[_0x0e13('0x2c')]);if(_0x2e17e7[_0x0e13('0x28')]>0x0){return _0x35b1ea[_0x0e13('0x16')](0x190)[_0x0e13('0x2d')](_0x2e17e7);}var _0x36b553=_0x15ddfa[_0x0e13('0x2c')][_0x0e13('0x2e')];return getAgent(_0x36b553)['then'](function(_0x49774c){logger[_0x0e13('0x11')](_0x0e13('0x3c'),_0x49774c[_0x0e13('0x15')]);emit(util[_0x0e13('0x32')](_0x0e13('0x33'),_0x49774c[_0x0e13('0x15')]),_0x0e13('0x45'));return _0x35b1ea[_0x0e13('0x16')](0xc8)[_0x0e13('0x2d')]({'error':![],'message':_0x0e13('0x46')});})[_0x0e13('0x1e')](handleError(_0x35b1ea));};exports[_0x0e13('0x47')]=function(_0x4d3468,_0x378649){logger[_0x0e13('0x11')]('transfer\x20fired:',_0x4d3468['body']);var _0x343275=transferValidation['validate'](_0x4d3468[_0x0e13('0x2c')]);if(_0x343275[_0x0e13('0x28')]>0x0){return _0x378649['status'](0x190)[_0x0e13('0x2d')](_0x343275);}var _0x882e6b=_0x4d3468['body'][_0x0e13('0x2e')];var _0x24329f=_0x4d3468[_0x0e13('0x2c')][_0x0e13('0x27')];var _0xc9d498=_0x4d3468['body'][_0x0e13('0x48')];return getAgent(_0x882e6b)[_0x0e13('0x22')](function(_0x37252e){logger[_0x0e13('0x11')](_0x0e13('0x3c'),_0x37252e[_0x0e13('0x15')]);emit(util[_0x0e13('0x32')]('user:%s',_0x37252e[_0x0e13('0x15')]),_0x0e13('0x49'),{'sessionId':_0x24329f,'transferNumber':_0xc9d498});return _0x378649[_0x0e13('0x16')](0xc8)[_0x0e13('0x2d')]({'error':![],'message':_0x0e13('0x4a')});})[_0x0e13('0x1e')](handleError(_0x378649));};