039cddf87f052b9c5bed868fd6dfddd9e633b141
[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 _0x6183=['info','body','length','json','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup\x20fired:','hangup\x20executed!','answer','answer\x20fired:','userId','webbar:answer','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','conference','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','transferNumber\x20is\x20required','stringify','emit','log','error','stack','name','status','send','NotFound','code','catch','findOne','agent','then','VoiceChannels','all','filter','rows','UserId','sessionId','sessionId\x20'];(function(_0x334884,_0x55835a){var _0x923ee3=function(_0x120431){while(--_0x120431){_0x334884['push'](_0x334884['shift']());}};_0x923ee3(++_0x55835a);}(_0x6183,0x1e2));var _0x3618=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x6183[_0x22b68a];return _0x1ac67a;};'use strict';var path=require(_0x3618('0x0'));var fs=require('fs');var _=require(_0x3618('0x1'));var db=require(_0x3618('0x2'))['db'];var config=require(_0x3618('0x3'));var util=require(_0x3618('0x4'));var BPromise=require(_0x3618('0x5'));var jayson=require(_0x3618('0x6'));var amiClient=jayson[_0x3618('0x7')][_0x3618('0x8')]({'port':0x232a});var logger=require(_0x3618('0x9'))(_0x3618('0xa'));var Redis=require(_0x3618('0xb'));config[_0x3618('0xc')]=_[_0x3618('0xd')](config['redis'],{'host':_0x3618('0xe'),'port':0x18eb});var io=require(_0x3618('0xf'))(new Redis(config['redis']));var Schema=require(_0x3618('0x10'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3618('0x11')]},'callNumber':{'type':_0x3618('0x12'),'required':[!![],_0x3618('0x13')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x3618('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0x3618('0x14'),'required':[!![],_0x3618('0x11')]},'sessionId':{'type':_0x3618('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3618('0x11')]},'sessionId':{'type':_0x3618('0x12'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x3618('0x14'),'required':[!![],_0x3618('0x11')]},'sessionId':{'type':_0x3618('0x12'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x3618('0x12'),'required':[!![],_0x3618('0x15')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3618('0x11')]},'sessionId':{'type':_0x3618('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3618('0x11')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x3618('0x14'),'required':[!![],_0x3618('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0x3618('0x14'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x4c3be8,_0x493bda,_0x3c1777){logger['info'](_0x4c3be8,_0x493bda,JSON[_0x3618('0x16')](_0x3c1777));io['to'](_0x4c3be8)[_0x3618('0x17')](_0x493bda,_0x3c1777);}function handleError(_0x5a3dcf){return function(_0x37f707){console[_0x3618('0x18')]('handleError:',_0x37f707,_0x37f707 instanceof RangeError);logger[_0x3618('0x19')](_0x37f707[_0x3618('0x1a')]);if(_0x37f707 instanceof RangeError){if(_0x37f707[_0x3618('0x1b')]){delete _0x37f707['name'];}_0x5a3dcf[_0x3618('0x1c')](0x194)[_0x3618('0x1d')](_0x37f707);}else{if(_0x37f707[_0x3618('0x1b')]){delete _0x37f707[_0x3618('0x1b')];}_0x5a3dcf[_0x3618('0x1c')](0x1f4)['send'](_0x37f707);}};}function checkError(){return function(_0x5e8344){if(!_0x5e8344){throw new RangeError(_0x3618('0x1e'));}return _0x5e8344;};}function respondWithRpcPromise(_0x215c14,_0x339b92){return new BPromise(function(_0x2a0683,_0x182ea6){var _0x1dd3d7=amiClient;return _0x1dd3d7['request'](_0x215c14,_0x339b92)['then'](function(_0x5a5e02){if(_0x5a5e02[_0x3618('0x19')]){if(_0x5a5e02['error'][_0x3618('0x1f')]===0x1f4){return _0x182ea6(_0x5a5e02[_0x3618('0x19')]['message']);}return _0x2a0683(_0x5a5e02[_0x3618('0x19')]['message']);}else{_0x2a0683(_0x5a5e02['result']);}})[_0x3618('0x20')](function(_0x25977b){_0x182ea6(_0x25977b);});});}function getAgent(_0x56ee75){return db['User'][_0x3618('0x21')]({'where':{'id':_0x56ee75,'role':_0x3618('0x22')}})[_0x3618('0x23')](checkError());}function getAgentCheckSession(_0x52ea30,_0x37d7ca){return new BPromise(function(_0xa13dca,_0x537838){var _0x32d4ae=respondWithRpcPromise(_0x3618('0x24'));var _0x3ab734=getAgent(_0x52ea30);Promise[_0x3618('0x25')]([_0x32d4ae,_0x3ab734])[_0x3618('0x23')](function(_0x1343bf){var _0x405731=_0x1343bf[0x0];var _0x353a30=_0x1343bf[0x1];var _0x33eaed=_[_0x3618('0x26')](_0x405731[_0x3618('0x27')],function(_0xfaf738){return _0xfaf738[_0x3618('0x28')]==_0x353a30['id']&&_0xfaf738[_0x3618('0x29')]==_0x37d7ca;});if(_0x33eaed['length']==0x1){_0xa13dca(_0x353a30);}else{_0x537838(new RangeError(_0x3618('0x2a')+_0x37d7ca+'\x20not\x20found!'));}});});}exports['originate']=function(_0x3b0625,_0x240ee1){logger[_0x3618('0x2b')]('originate\x20fired:',_0x3b0625['body']);var _0x143677=originateValidation['validate'](_0x3b0625[_0x3618('0x2c')]);if(_0x143677[_0x3618('0x2d')]>0x0){return _0x240ee1[_0x3618('0x1c')](0x190)[_0x3618('0x2e')](_0x143677);}var _0x55b123=_0x3b0625[_0x3618('0x2c')]['userId'];var _0x47abe1=_0x3b0625[_0x3618('0x2c')][_0x3618('0x2f')];var _0x42c64e=_0x3b0625['body'][_0x3618('0x30')];var _0x454217=_0x3b0625[_0x3618('0x2c')][_0x3618('0x31')];return getAgent(_0x55b123)[_0x3618('0x23')](function(_0x27ce29){logger['info'](_0x3618('0x32'),_0x27ce29['name']);emit(util[_0x3618('0x33')](_0x3618('0x34'),_0x27ce29[_0x3618('0x1b')]),_0x3618('0x35'),{'callNumber':_0x47abe1,'callerId':_0x42c64e,'callbackUrl':_0x454217});return _0x240ee1[_0x3618('0x1c')](0xc8)[_0x3618('0x2e')]({'error':![],'message':_0x3618('0x36')});})[_0x3618('0x20')](handleError(_0x240ee1));};exports['hangup']=function(_0xdecf51,_0x344dd9){logger[_0x3618('0x2b')](_0x3618('0x37'),_0xdecf51[_0x3618('0x2c')]);var _0x43f943=hangupValidation[_0x3618('0x10')](_0xdecf51['body']);if(_0x43f943['length']>0x0){return _0x344dd9[_0x3618('0x1c')](0x190)[_0x3618('0x2e')](_0x43f943);}var _0x4aefb3=_0xdecf51[_0x3618('0x2c')]['userId'];var _0x3184d5=_0xdecf51[_0x3618('0x2c')][_0x3618('0x29')];return getAgent(_0x4aefb3)[_0x3618('0x23')](function(_0x4c4a09){logger['info']('entityFound:',_0x4c4a09[_0x3618('0x1b')]);emit(util[_0x3618('0x33')]('user:%s',_0x4c4a09[_0x3618('0x1b')]),'webbar:hangup',{'sessionId':_0x3184d5});return _0x344dd9[_0x3618('0x1c')](0xc8)[_0x3618('0x2e')]({'error':![],'message':_0x3618('0x38')});})[_0x3618('0x20')](handleError(_0x344dd9));};exports[_0x3618('0x39')]=function(_0x146698,_0x1ba861){logger['info'](_0x3618('0x3a'),_0x146698['body']);var _0x3fde78=answerValidation[_0x3618('0x10')](_0x146698['body']);if(_0x3fde78[_0x3618('0x2d')]>0x0){return _0x1ba861[_0x3618('0x1c')](0x190)[_0x3618('0x2e')](_0x3fde78);}var _0x50be2f=_0x146698[_0x3618('0x2c')][_0x3618('0x3b')];var _0x2c7833=_0x146698[_0x3618('0x2c')][_0x3618('0x29')];return getAgent(_0x50be2f)['then'](function(_0x463124){logger['info']('entityFound:',_0x463124[_0x3618('0x1b')]);emit(util[_0x3618('0x33')](_0x3618('0x34'),_0x463124[_0x3618('0x1b')]),_0x3618('0x3c'),{'sessionId':_0x2c7833});return _0x1ba861[_0x3618('0x1c')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0x3618('0x20')](handleError(_0x1ba861));};exports['hold']=function(_0x1da847,_0x54e806){logger[_0x3618('0x2b')](_0x3618('0x3d'),_0x1da847['body']);var _0x355216=holdValidation[_0x3618('0x10')](_0x1da847[_0x3618('0x2c')]);if(_0x355216['length']>0x0){return _0x54e806[_0x3618('0x1c')](0x190)[_0x3618('0x2e')](_0x355216);}var _0x5a9d2e=_0x1da847[_0x3618('0x2c')][_0x3618('0x3b')];var _0x19c784=_0x1da847[_0x3618('0x2c')][_0x3618('0x29')];return getAgent(_0x5a9d2e)[_0x3618('0x23')](function(_0x223b4b){logger['info'](_0x3618('0x32'),_0x223b4b['name']);emit(util[_0x3618('0x33')](_0x3618('0x34'),_0x223b4b[_0x3618('0x1b')]),_0x3618('0x3e'),{'sessionId':_0x19c784});return _0x54e806[_0x3618('0x1c')](0xc8)[_0x3618('0x2e')]({'error':![],'message':_0x3618('0x3f')});})[_0x3618('0x20')](handleError(_0x54e806));};exports[_0x3618('0x40')]=function(_0x509835,_0x26469d){logger['info'](_0x3618('0x41'),_0x509835['body']);var _0x48bbd5=unholdValidation['validate'](_0x509835[_0x3618('0x2c')]);if(_0x48bbd5[_0x3618('0x2d')]>0x0){return _0x26469d[_0x3618('0x1c')](0x190)[_0x3618('0x2e')](_0x48bbd5);}var _0x4231c1=_0x509835[_0x3618('0x2c')][_0x3618('0x3b')];var _0x5de2fb=_0x509835[_0x3618('0x2c')][_0x3618('0x29')];return getAgent(_0x4231c1)[_0x3618('0x23')](function(_0xea4abd){logger['info'](_0x3618('0x32'),_0xea4abd[_0x3618('0x1b')]);emit(util[_0x3618('0x33')](_0x3618('0x34'),_0xea4abd['name']),_0x3618('0x42'),{'sessionId':_0x5de2fb});return _0x26469d['status'](0xc8)[_0x3618('0x2e')]({'error':![],'message':_0x3618('0x43')});})[_0x3618('0x20')](handleError(_0x26469d));};exports['calls']=function(_0x47a488,_0x2ebb8c){logger[_0x3618('0x2b')]('calls\x20fired:',_0x2ebb8c[_0x3618('0x2c')]);var _0x3998a3=callsValidation['validate'](_0x47a488[_0x3618('0x2c')]);if(_0x3998a3[_0x3618('0x2d')]>0x0){return _0x2ebb8c['status'](0x190)[_0x3618('0x2e')](_0x3998a3);}var _0x404262=_0x47a488['body'][_0x3618('0x3b')];var _0x1c3069=respondWithRpcPromise(_0x3618('0x24'));var _0x224565=getAgent(_0x404262);return Promise['all']([_0x1c3069,_0x224565])['then'](function(_0xf74e3d){var _0x52c20d=_0xf74e3d[0x0];var _0x368ba0=_0xf74e3d[0x1];var _0x122b52=_[_0x3618('0x26')](_0x52c20d[_0x3618('0x27')],function(_0x3b4f64){return _0x3b4f64['UserId']==_0x368ba0['id'];});return _0x2ebb8c[_0x3618('0x1c')](0xc8)[_0x3618('0x2e')]({'count':_0x122b52[_0x3618('0x2d')],'rows':_0x122b52});})[_0x3618('0x20')](handleError(_0x2ebb8c));};exports[_0x3618('0x44')]=function(_0x25935a,_0x3a304e){logger[_0x3618('0x2b')]('conference\x20fired:',_0x25935a[_0x3618('0x2c')]);var _0x67e9d4=conferenceValidation[_0x3618('0x10')](_0x25935a['body']);if(_0x67e9d4[_0x3618('0x2d')]>0x0){return _0x3a304e[_0x3618('0x1c')](0x190)['json'](_0x67e9d4);}var _0x572afc=_0x25935a[_0x3618('0x2c')][_0x3618('0x3b')];return getAgent(_0x572afc)['then'](function(_0x5a55fb){logger['info'](_0x3618('0x32'),_0x5a55fb['name']);emit(util[_0x3618('0x33')]('user:%s',_0x5a55fb[_0x3618('0x1b')]),_0x3618('0x45'));return _0x3a304e[_0x3618('0x1c')](0xc8)[_0x3618('0x2e')]({'error':![],'message':_0x3618('0x46')});})['catch'](handleError(_0x3a304e));};exports[_0x3618('0x47')]=function(_0x27dc6c,_0x5dd15a){logger[_0x3618('0x2b')](_0x3618('0x48'),_0x27dc6c[_0x3618('0x2c')]);var _0x1c72a5=transferValidation[_0x3618('0x10')](_0x27dc6c['body']);if(_0x1c72a5['length']>0x0){return _0x5dd15a[_0x3618('0x1c')](0x190)[_0x3618('0x2e')](_0x1c72a5);}var _0x453114=_0x27dc6c[_0x3618('0x2c')]['userId'];var _0x34430a=_0x27dc6c[_0x3618('0x2c')]['sessionId'];var _0x234d5e=_0x27dc6c[_0x3618('0x2c')][_0x3618('0x49')];return getAgent(_0x453114)['then'](function(_0x55309e){logger[_0x3618('0x2b')](_0x3618('0x32'),_0x55309e[_0x3618('0x1b')]);emit(util[_0x3618('0x33')](_0x3618('0x34'),_0x55309e['name']),_0x3618('0x4a'),{'sessionId':_0x34430a,'transferNumber':_0x234d5e});return _0x5dd15a[_0x3618('0x1c')](0xc8)[_0x3618('0x2e')]({'error':![],'message':'transfer\x20executed!'});})[_0x3618('0x20')](handleError(_0x5dd15a));};