Built motion from commit 06eb8eb0.|2.6.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 _0xe284=['originate\x20executed!','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','rows','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','handleError:','stack','name','status','send','NotFound','request','then','error','code','message','result','catch','User','findOne','agent','VoiceChannels','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate'];(function(_0x5d2f52,_0x56463d){var _0xf1022a=function(_0x36c40a){while(--_0x36c40a){_0x5d2f52['push'](_0x5d2f52['shift']());}};_0xf1022a(++_0x56463d);}(_0xe284,0x1c8));var _0x4e28=function(_0x1e1943,_0x1a6d54){_0x1e1943=_0x1e1943-0x0;var _0x4989a9=_0xe284[_0x1e1943];return _0x4989a9;};'use strict';var path=require(_0x4e28('0x0'));var fs=require('fs');var _=require(_0x4e28('0x1'));var db=require(_0x4e28('0x2'))['db'];var config=require(_0x4e28('0x3'));var util=require(_0x4e28('0x4'));var BPromise=require(_0x4e28('0x5'));var jayson=require(_0x4e28('0x6'));var amiClient=jayson[_0x4e28('0x7')]['http']({'port':0x232a});var logger=require(_0x4e28('0x8'))(_0x4e28('0x9'));var Redis=require(_0x4e28('0xa'));config[_0x4e28('0xb')]=_[_0x4e28('0xc')](config[_0x4e28('0xb')],{'host':_0x4e28('0xd'),'port':0x18eb});var io=require(_0x4e28('0xe'))(new Redis(config[_0x4e28('0xb')]));var Schema=require(_0x4e28('0xf'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4e28('0x10')]},'callNumber':{'type':_0x4e28('0x11'),'required':[!![],_0x4e28('0x12')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x4e28('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x4e28('0x13'),'required':[!![],_0x4e28('0x10')]},'sessionId':{'type':_0x4e28('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x4e28('0x13'),'required':[!![],_0x4e28('0x10')]},'sessionId':{'type':_0x4e28('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x4e28('0x13'),'required':[!![],_0x4e28('0x10')]},'sessionId':{'type':'string','required':[!![],_0x4e28('0x14')]},'transferNumber':{'type':_0x4e28('0x11'),'required':[!![],_0x4e28('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x4e28('0x13'),'required':[!![],_0x4e28('0x10')]},'sessionId':{'type':_0x4e28('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x4e28('0x13'),'required':[!![],_0x4e28('0x10')]},'sessionId':{'type':_0x4e28('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x4e28('0x13'),'required':[!![],_0x4e28('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x4e28('0x13'),'required':[!![],_0x4e28('0x10')]}});function emit(_0xfa59b4,_0x4f442f,_0x1950e9){logger[_0x4e28('0x16')](_0xfa59b4,_0x4f442f,JSON[_0x4e28('0x17')](_0x1950e9));io['to'](_0xfa59b4)[_0x4e28('0x18')](_0x4f442f,_0x1950e9);}function handleError(_0x2ba6e7){return function(_0x308889){console['log'](_0x4e28('0x19'),_0x308889,_0x308889 instanceof RangeError);logger['error'](_0x308889[_0x4e28('0x1a')]);if(_0x308889 instanceof RangeError){if(_0x308889['name']){delete _0x308889[_0x4e28('0x1b')];}_0x2ba6e7[_0x4e28('0x1c')](0x194)[_0x4e28('0x1d')](_0x308889);}else{if(_0x308889[_0x4e28('0x1b')]){delete _0x308889[_0x4e28('0x1b')];}_0x2ba6e7[_0x4e28('0x1c')](0x1f4)[_0x4e28('0x1d')](_0x308889);}};}function checkError(){return function(_0x592ae9){if(!_0x592ae9){throw new RangeError(_0x4e28('0x1e'));}return _0x592ae9;};}function respondWithRpcPromise(_0x496b9f,_0x4435e9){return new BPromise(function(_0x1c1a56,_0x4c4eb2){var _0xda53ff=amiClient;return _0xda53ff[_0x4e28('0x1f')](_0x496b9f,_0x4435e9)[_0x4e28('0x20')](function(_0x415a84){if(_0x415a84[_0x4e28('0x21')]){if(_0x415a84['error'][_0x4e28('0x22')]===0x1f4){return _0x4c4eb2(_0x415a84[_0x4e28('0x21')][_0x4e28('0x23')]);}return _0x1c1a56(_0x415a84['error'][_0x4e28('0x23')]);}else{_0x1c1a56(_0x415a84[_0x4e28('0x24')]);}})[_0x4e28('0x25')](function(_0x7390b3){_0x4c4eb2(_0x7390b3);});});}function getAgent(_0x2f4502){return db[_0x4e28('0x26')][_0x4e28('0x27')]({'where':{'id':_0x2f4502,'role':_0x4e28('0x28')}})['then'](checkError());}function getAgentCheckSession(_0x25f1a1,_0x47a3b2){return new BPromise(function(_0x247e63,_0x1555af){var _0x4fa9c1=respondWithRpcPromise(_0x4e28('0x29'));var _0x3283b6=getAgent(_0x25f1a1);Promise['all']([_0x4fa9c1,_0x3283b6])[_0x4e28('0x20')](function(_0x12c46f){var _0x47a21c=_0x12c46f[0x0];var _0x2ee4e4=_0x12c46f[0x1];var _0x1f12d9=_[_0x4e28('0x2a')](_0x47a21c['rows'],function(_0x33847d){return _0x33847d[_0x4e28('0x2b')]==_0x2ee4e4['id']&&_0x33847d[_0x4e28('0x2c')]==_0x47a3b2;});if(_0x1f12d9[_0x4e28('0x2d')]==0x1){_0x247e63(_0x2ee4e4);}else{_0x1555af(new RangeError(_0x4e28('0x2e')+_0x47a3b2+_0x4e28('0x2f')));}});});}exports[_0x4e28('0x30')]=function(_0x306b64,_0x256db9){logger['info'](_0x4e28('0x31'),_0x306b64[_0x4e28('0x32')]);var _0x300062=originateValidation[_0x4e28('0xf')](_0x306b64[_0x4e28('0x32')]);if(_0x300062[_0x4e28('0x2d')]>0x0){return _0x256db9[_0x4e28('0x1c')](0x190)[_0x4e28('0x33')](_0x300062);}var _0x16dccb=_0x306b64[_0x4e28('0x32')][_0x4e28('0x34')];var _0x3d297e=_0x306b64[_0x4e28('0x32')][_0x4e28('0x35')];var _0x3a2d9f=_0x306b64['body'][_0x4e28('0x36')];var _0x3167c3=_0x306b64[_0x4e28('0x32')][_0x4e28('0x37')];return getAgent(_0x16dccb)[_0x4e28('0x20')](function(_0x4b042d){logger[_0x4e28('0x16')](_0x4e28('0x38'),_0x4b042d['name']);emit(util[_0x4e28('0x39')](_0x4e28('0x3a'),_0x4b042d['name']),_0x4e28('0x3b'),{'callNumber':_0x3d297e,'callerId':_0x3a2d9f,'callbackUrl':_0x3167c3});return _0x256db9[_0x4e28('0x1c')](0xc8)[_0x4e28('0x33')]({'error':![],'message':_0x4e28('0x3c')});})[_0x4e28('0x25')](handleError(_0x256db9));};exports[_0x4e28('0x3d')]=function(_0x1822d4,_0x28dd5a){logger[_0x4e28('0x16')](_0x4e28('0x3e'),_0x1822d4[_0x4e28('0x32')]);var _0x5b752d=hangupValidation[_0x4e28('0xf')](_0x1822d4['body']);if(_0x5b752d[_0x4e28('0x2d')]>0x0){return _0x28dd5a[_0x4e28('0x1c')](0x190)[_0x4e28('0x33')](_0x5b752d);}var _0x16fc02=_0x1822d4[_0x4e28('0x32')][_0x4e28('0x34')];var _0x55aac0=_0x1822d4['body'][_0x4e28('0x2c')];return getAgent(_0x16fc02)[_0x4e28('0x20')](function(_0x49cbf9){logger[_0x4e28('0x16')]('entityFound:',_0x49cbf9[_0x4e28('0x1b')]);emit(util[_0x4e28('0x39')](_0x4e28('0x3a'),_0x49cbf9[_0x4e28('0x1b')]),_0x4e28('0x3f'),{'sessionId':_0x55aac0});return _0x28dd5a[_0x4e28('0x1c')](0xc8)[_0x4e28('0x33')]({'error':![],'message':_0x4e28('0x40')});})[_0x4e28('0x25')](handleError(_0x28dd5a));};exports[_0x4e28('0x41')]=function(_0xddf2ec,_0x2796d8){logger[_0x4e28('0x16')](_0x4e28('0x42'),_0xddf2ec[_0x4e28('0x32')]);var _0x29ddab=answerValidation['validate'](_0xddf2ec[_0x4e28('0x32')]);if(_0x29ddab[_0x4e28('0x2d')]>0x0){return _0x2796d8[_0x4e28('0x1c')](0x190)[_0x4e28('0x33')](_0x29ddab);}var _0x3fb833=_0xddf2ec['body'][_0x4e28('0x34')];var _0x1e788f=_0xddf2ec[_0x4e28('0x32')]['sessionId'];return getAgent(_0x3fb833)[_0x4e28('0x20')](function(_0x4bfae6){logger[_0x4e28('0x16')](_0x4e28('0x38'),_0x4bfae6['name']);emit(util[_0x4e28('0x39')]('user:%s',_0x4bfae6[_0x4e28('0x1b')]),_0x4e28('0x43'),{'sessionId':_0x1e788f});return _0x2796d8[_0x4e28('0x1c')](0xc8)[_0x4e28('0x33')]({'error':![],'message':_0x4e28('0x44')});})[_0x4e28('0x25')](handleError(_0x2796d8));};exports[_0x4e28('0x45')]=function(_0x4169d6,_0x376f76){logger[_0x4e28('0x16')](_0x4e28('0x46'),_0x4169d6['body']);var _0x28f5de=holdValidation[_0x4e28('0xf')](_0x4169d6[_0x4e28('0x32')]);if(_0x28f5de[_0x4e28('0x2d')]>0x0){return _0x376f76['status'](0x190)[_0x4e28('0x33')](_0x28f5de);}var _0x18cd16=_0x4169d6['body'][_0x4e28('0x34')];var _0x517e31=_0x4169d6[_0x4e28('0x32')][_0x4e28('0x2c')];return getAgent(_0x18cd16)[_0x4e28('0x20')](function(_0x2a178f){logger['info'](_0x4e28('0x38'),_0x2a178f[_0x4e28('0x1b')]);emit(util[_0x4e28('0x39')]('user:%s',_0x2a178f[_0x4e28('0x1b')]),_0x4e28('0x47'),{'sessionId':_0x517e31});return _0x376f76[_0x4e28('0x1c')](0xc8)[_0x4e28('0x33')]({'error':![],'message':_0x4e28('0x48')});})[_0x4e28('0x25')](handleError(_0x376f76));};exports[_0x4e28('0x49')]=function(_0x44e978,_0x35c507){logger['info']('unhold\x20fired:',_0x44e978[_0x4e28('0x32')]);var _0x892cb1=unholdValidation[_0x4e28('0xf')](_0x44e978[_0x4e28('0x32')]);if(_0x892cb1[_0x4e28('0x2d')]>0x0){return _0x35c507[_0x4e28('0x1c')](0x190)['json'](_0x892cb1);}var _0x12fa57=_0x44e978[_0x4e28('0x32')]['userId'];var _0x106db1=_0x44e978[_0x4e28('0x32')]['sessionId'];return getAgent(_0x12fa57)[_0x4e28('0x20')](function(_0x32c036){logger['info']('entityFound:',_0x32c036['name']);emit(util[_0x4e28('0x39')](_0x4e28('0x3a'),_0x32c036['name']),_0x4e28('0x4a'),{'sessionId':_0x106db1});return _0x35c507[_0x4e28('0x1c')](0xc8)[_0x4e28('0x33')]({'error':![],'message':_0x4e28('0x4b')});})[_0x4e28('0x25')](handleError(_0x35c507));};exports[_0x4e28('0x4c')]=function(_0x5239ab,_0x499c45){logger[_0x4e28('0x16')](_0x4e28('0x4d'),_0x499c45['body']);var _0x27b071=callsValidation[_0x4e28('0xf')](_0x5239ab[_0x4e28('0x32')]);if(_0x27b071['length']>0x0){return _0x499c45[_0x4e28('0x1c')](0x190)[_0x4e28('0x33')](_0x27b071);}var _0x4d268d=_0x5239ab['body']['userId'];var _0x3e4533=respondWithRpcPromise('VoiceChannels');var _0x2a6301=getAgent(_0x4d268d);return Promise['all']([_0x3e4533,_0x2a6301])[_0x4e28('0x20')](function(_0x5523aa){var _0x2011f0=_0x5523aa[0x0];var _0x511b9d=_0x5523aa[0x1];var _0x2482e5=_[_0x4e28('0x2a')](_0x2011f0[_0x4e28('0x4e')],function(_0x47d8ad){return _0x47d8ad[_0x4e28('0x2b')]==_0x511b9d['id'];});return _0x499c45[_0x4e28('0x1c')](0xc8)[_0x4e28('0x33')]({'count':_0x2482e5['length'],'rows':_0x2482e5});})[_0x4e28('0x25')](handleError(_0x499c45));};exports['conference']=function(_0x58f015,_0xe16cc6){logger[_0x4e28('0x16')](_0x4e28('0x4f'),_0x58f015[_0x4e28('0x32')]);var _0x387b66=conferenceValidation[_0x4e28('0xf')](_0x58f015['body']);if(_0x387b66['length']>0x0){return _0xe16cc6['status'](0x190)[_0x4e28('0x33')](_0x387b66);}var _0x3fe20d=_0x58f015['body'][_0x4e28('0x34')];return getAgent(_0x3fe20d)['then'](function(_0x3430d4){logger['info'](_0x4e28('0x38'),_0x3430d4[_0x4e28('0x1b')]);emit(util[_0x4e28('0x39')](_0x4e28('0x3a'),_0x3430d4[_0x4e28('0x1b')]),_0x4e28('0x50'));return _0xe16cc6[_0x4e28('0x1c')](0xc8)['json']({'error':![],'message':_0x4e28('0x51')});})[_0x4e28('0x25')](handleError(_0xe16cc6));};exports['transfer']=function(_0x1e99ba,_0x107a17){logger[_0x4e28('0x16')](_0x4e28('0x52'),_0x1e99ba[_0x4e28('0x32')]);var _0x1cd285=transferValidation['validate'](_0x1e99ba['body']);if(_0x1cd285[_0x4e28('0x2d')]>0x0){return _0x107a17['status'](0x190)[_0x4e28('0x33')](_0x1cd285);}var _0x27a848=_0x1e99ba['body'][_0x4e28('0x34')];var _0x5045e7=_0x1e99ba[_0x4e28('0x32')][_0x4e28('0x2c')];var _0x395b1f=_0x1e99ba[_0x4e28('0x32')][_0x4e28('0x53')];return getAgent(_0x27a848)['then'](function(_0x243a8f){logger[_0x4e28('0x16')](_0x4e28('0x38'),_0x243a8f[_0x4e28('0x1b')]);emit(util[_0x4e28('0x39')](_0x4e28('0x3a'),_0x243a8f['name']),_0x4e28('0x54'),{'sessionId':_0x5045e7,'transferNumber':_0x395b1f});return _0x107a17[_0x4e28('0x1c')](0xc8)[_0x4e28('0x33')]({'error':![],'message':_0x4e28('0x55')});})[_0x4e28('0x25')](handleError(_0x107a17));};