dce0d45a2ee35786a9ea5401b73863210d7bc107
[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 _0x03cf=['entityFound:','format','user:%s','webbar:originate','originate\x20executed!','catch','hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','webbar:hold','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','rows','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transfer\x20executed!','lodash','../../mysqldb','bluebird','client','../../config/logger','webbarapi','ioredis','defaults','redis','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','log','error','stack','name','send','status','NotFound','message','result','User','findOne','agent','then','VoiceChannels','all','filter','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate','info','originate\x20fired:','body','length','json','userId','callNumber'];(function(_0x570c85,_0x18d065){var _0x2055e5=function(_0xf49b21){while(--_0xf49b21){_0x570c85['push'](_0x570c85['shift']());}};_0x2055e5(++_0x18d065);}(_0x03cf,0x64));var _0xf03c=function(_0x262e6b,_0x2bd4c7){_0x262e6b=_0x262e6b-0x0;var _0x3c5fea=_0x03cf[_0x262e6b];return _0x3c5fea;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xf03c('0x0'));var db=require(_0xf03c('0x1'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0xf03c('0x2'));var jayson=require('jayson/promise');var amiClient=jayson[_0xf03c('0x3')]['http']({'port':0x232a});var logger=require(_0xf03c('0x4'))(_0xf03c('0x5'));var Redis=require(_0xf03c('0x6'));config['redis']=_[_0xf03c('0x7')](config[_0xf03c('0x8')],{'host':_0xf03c('0x9'),'port':0x18eb});var io=require(_0xf03c('0xa'))(new Redis(config[_0xf03c('0x8')]));var Schema=require(_0xf03c('0xb'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf03c('0xc')]},'callNumber':{'type':_0xf03c('0xd'),'required':[!![],_0xf03c('0xe')]},'callerId':{'type':_0xf03c('0xd')},'callbackUrl':{'type':_0xf03c('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xf03c('0xf'),'required':[!![],_0xf03c('0xc')]},'sessionId':{'type':_0xf03c('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xf03c('0xf'),'required':[!![],_0xf03c('0xc')]},'sessionId':{'type':_0xf03c('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xf03c('0xf'),'required':[!![],_0xf03c('0xc')]},'sessionId':{'type':'string','required':[!![],_0xf03c('0x10')]},'transferNumber':{'type':_0xf03c('0xd'),'required':[!![],_0xf03c('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xf03c('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xf03c('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xf03c('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xf03c('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xf03c('0xf'),'required':[!![],_0xf03c('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf03c('0xc')]}});function emit(_0x4d0994,_0x30c66e,_0x10545f){logger['info'](_0x4d0994,_0x30c66e,JSON['stringify'](_0x10545f));io['to'](_0x4d0994)['emit'](_0x30c66e,_0x10545f);}function handleError(_0x30de55){return function(_0x1fafb3){console[_0xf03c('0x12')]('handleError:',_0x1fafb3,_0x1fafb3 instanceof RangeError);logger[_0xf03c('0x13')](_0x1fafb3[_0xf03c('0x14')]);if(_0x1fafb3 instanceof RangeError){if(_0x1fafb3[_0xf03c('0x15')]){delete _0x1fafb3[_0xf03c('0x15')];}_0x30de55['status'](0x194)[_0xf03c('0x16')](_0x1fafb3);}else{if(_0x1fafb3[_0xf03c('0x15')]){delete _0x1fafb3[_0xf03c('0x15')];}_0x30de55[_0xf03c('0x17')](0x1f4)[_0xf03c('0x16')](_0x1fafb3);}};}function checkError(){return function(_0x48007b){if(!_0x48007b){throw new RangeError(_0xf03c('0x18'));}return _0x48007b;};}function respondWithRpcPromise(_0x418e5c,_0x57b153){return new BPromise(function(_0x5953bb,_0x22e4b6){var _0x2474da=amiClient;return _0x2474da['request'](_0x418e5c,_0x57b153)['then'](function(_0x5e76f4){if(_0x5e76f4['error']){if(_0x5e76f4[_0xf03c('0x13')]['code']===0x1f4){return _0x22e4b6(_0x5e76f4[_0xf03c('0x13')][_0xf03c('0x19')]);}return _0x5953bb(_0x5e76f4[_0xf03c('0x13')][_0xf03c('0x19')]);}else{_0x5953bb(_0x5e76f4[_0xf03c('0x1a')]);}})['catch'](function(_0x272408){_0x22e4b6(_0x272408);});});}function getAgent(_0x44da09){return db[_0xf03c('0x1b')][_0xf03c('0x1c')]({'where':{'id':_0x44da09,'role':_0xf03c('0x1d')}})[_0xf03c('0x1e')](checkError());}function getAgentCheckSession(_0x4ae35d,_0x5ba510){return new BPromise(function(_0xb671e2,_0x4671e3){var _0x44795c=respondWithRpcPromise(_0xf03c('0x1f'));var _0x343222=getAgent(_0x4ae35d);Promise[_0xf03c('0x20')]([_0x44795c,_0x343222])[_0xf03c('0x1e')](function(_0x4353b0){var _0x2a6885=_0x4353b0[0x0];var _0x5b2d59=_0x4353b0[0x1];var _0x1df90f=_[_0xf03c('0x21')](_0x2a6885['rows'],function(_0x258e37){return _0x258e37[_0xf03c('0x22')]==_0x5b2d59['id']&&_0x258e37[_0xf03c('0x23')]==_0x5ba510;});if(_0x1df90f['length']==0x1){_0xb671e2(_0x5b2d59);}else{_0x4671e3(new RangeError(_0xf03c('0x24')+_0x5ba510+_0xf03c('0x25')));}});});}exports[_0xf03c('0x26')]=function(_0x53d5ae,_0x306511){logger[_0xf03c('0x27')](_0xf03c('0x28'),_0x53d5ae['body']);var _0x5dda04=originateValidation[_0xf03c('0xb')](_0x53d5ae[_0xf03c('0x29')]);if(_0x5dda04[_0xf03c('0x2a')]>0x0){return _0x306511[_0xf03c('0x17')](0x190)[_0xf03c('0x2b')](_0x5dda04);}var _0x1e4076=_0x53d5ae['body'][_0xf03c('0x2c')];var _0xb155e0=_0x53d5ae['body'][_0xf03c('0x2d')];var _0xd095dc=_0x53d5ae[_0xf03c('0x29')]['callerId'];var _0x57bd41=_0x53d5ae[_0xf03c('0x29')]['callbackUrl'];return getAgent(_0x1e4076)[_0xf03c('0x1e')](function(_0x4465f7){logger[_0xf03c('0x27')](_0xf03c('0x2e'),_0x4465f7[_0xf03c('0x15')]);emit(util[_0xf03c('0x2f')](_0xf03c('0x30'),_0x4465f7['name']),_0xf03c('0x31'),{'callNumber':_0xb155e0,'callerId':_0xd095dc,'callbackUrl':_0x57bd41});return _0x306511[_0xf03c('0x17')](0xc8)[_0xf03c('0x2b')]({'error':![],'message':_0xf03c('0x32')});})[_0xf03c('0x33')](handleError(_0x306511));};exports[_0xf03c('0x34')]=function(_0x2cec14,_0x4dadbc){logger[_0xf03c('0x27')]('hangup\x20fired:',_0x2cec14[_0xf03c('0x29')]);var _0x2bc026=hangupValidation[_0xf03c('0xb')](_0x2cec14['body']);if(_0x2bc026[_0xf03c('0x2a')]>0x0){return _0x4dadbc[_0xf03c('0x17')](0x190)[_0xf03c('0x2b')](_0x2bc026);}var _0x2cfcd8=_0x2cec14['body'][_0xf03c('0x2c')];var _0x3f0817=_0x2cec14[_0xf03c('0x29')][_0xf03c('0x23')];return getAgent(_0x2cfcd8)[_0xf03c('0x1e')](function(_0x5c7f89){logger['info']('entityFound:',_0x5c7f89['name']);emit(util[_0xf03c('0x2f')](_0xf03c('0x30'),_0x5c7f89[_0xf03c('0x15')]),'webbar:hangup',{'sessionId':_0x3f0817});return _0x4dadbc[_0xf03c('0x17')](0xc8)[_0xf03c('0x2b')]({'error':![],'message':_0xf03c('0x35')});})[_0xf03c('0x33')](handleError(_0x4dadbc));};exports[_0xf03c('0x36')]=function(_0x8054d,_0x256742){logger['info'](_0xf03c('0x37'),_0x8054d[_0xf03c('0x29')]);var _0x3669aa=answerValidation[_0xf03c('0xb')](_0x8054d[_0xf03c('0x29')]);if(_0x3669aa[_0xf03c('0x2a')]>0x0){return _0x256742[_0xf03c('0x17')](0x190)['json'](_0x3669aa);}var _0x2603c8=_0x8054d[_0xf03c('0x29')][_0xf03c('0x2c')];var _0x246a5e=_0x8054d['body'][_0xf03c('0x23')];return getAgent(_0x2603c8)[_0xf03c('0x1e')](function(_0xf84b26){logger[_0xf03c('0x27')](_0xf03c('0x2e'),_0xf84b26[_0xf03c('0x15')]);emit(util[_0xf03c('0x2f')](_0xf03c('0x30'),_0xf84b26[_0xf03c('0x15')]),_0xf03c('0x38'),{'sessionId':_0x246a5e});return _0x256742[_0xf03c('0x17')](0xc8)[_0xf03c('0x2b')]({'error':![],'message':_0xf03c('0x39')});})[_0xf03c('0x33')](handleError(_0x256742));};exports[_0xf03c('0x3a')]=function(_0x11342d,_0x15356c){logger['info']('hold\x20fired:',_0x11342d[_0xf03c('0x29')]);var _0x4ebc52=holdValidation['validate'](_0x11342d[_0xf03c('0x29')]);if(_0x4ebc52['length']>0x0){return _0x15356c[_0xf03c('0x17')](0x190)['json'](_0x4ebc52);}var _0x1bd628=_0x11342d['body'][_0xf03c('0x2c')];var _0x38af6f=_0x11342d[_0xf03c('0x29')][_0xf03c('0x23')];return getAgent(_0x1bd628)[_0xf03c('0x1e')](function(_0x47eb40){logger[_0xf03c('0x27')](_0xf03c('0x2e'),_0x47eb40[_0xf03c('0x15')]);emit(util[_0xf03c('0x2f')]('user:%s',_0x47eb40[_0xf03c('0x15')]),_0xf03c('0x3b'),{'sessionId':_0x38af6f});return _0x15356c['status'](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})[_0xf03c('0x33')](handleError(_0x15356c));};exports[_0xf03c('0x3c')]=function(_0x144d3a,_0x68047a){logger[_0xf03c('0x27')](_0xf03c('0x3d'),_0x144d3a[_0xf03c('0x29')]);var _0x22695c=unholdValidation[_0xf03c('0xb')](_0x144d3a[_0xf03c('0x29')]);if(_0x22695c[_0xf03c('0x2a')]>0x0){return _0x68047a['status'](0x190)[_0xf03c('0x2b')](_0x22695c);}var _0x45e707=_0x144d3a['body']['userId'];var _0x16c2d2=_0x144d3a[_0xf03c('0x29')][_0xf03c('0x23')];return getAgent(_0x45e707)['then'](function(_0xea7430){logger[_0xf03c('0x27')]('entityFound:',_0xea7430[_0xf03c('0x15')]);emit(util[_0xf03c('0x2f')](_0xf03c('0x30'),_0xea7430[_0xf03c('0x15')]),'webbar:unhold',{'sessionId':_0x16c2d2});return _0x68047a[_0xf03c('0x17')](0xc8)[_0xf03c('0x2b')]({'error':![],'message':_0xf03c('0x3e')});})['catch'](handleError(_0x68047a));};exports[_0xf03c('0x3f')]=function(_0x356c16,_0x1c9226){logger[_0xf03c('0x27')](_0xf03c('0x40'),_0x1c9226['body']);var _0x3766e3=callsValidation[_0xf03c('0xb')](_0x356c16['body']);if(_0x3766e3[_0xf03c('0x2a')]>0x0){return _0x1c9226[_0xf03c('0x17')](0x190)[_0xf03c('0x2b')](_0x3766e3);}var _0x3c3d6e=_0x356c16[_0xf03c('0x29')]['userId'];var _0x29b325=respondWithRpcPromise(_0xf03c('0x1f'));var _0x1429fa=getAgent(_0x3c3d6e);return Promise[_0xf03c('0x20')]([_0x29b325,_0x1429fa])[_0xf03c('0x1e')](function(_0x529171){var _0x25da2d=_0x529171[0x0];var _0x578c4e=_0x529171[0x1];var _0x26f339=_[_0xf03c('0x21')](_0x25da2d[_0xf03c('0x41')],function(_0x388a7e){return _0x388a7e[_0xf03c('0x22')]==_0x578c4e['id'];});return _0x1c9226[_0xf03c('0x17')](0xc8)[_0xf03c('0x2b')]({'count':_0x26f339['length'],'rows':_0x26f339});})[_0xf03c('0x33')](handleError(_0x1c9226));};exports[_0xf03c('0x42')]=function(_0x74d560,_0x2b3083){logger[_0xf03c('0x27')](_0xf03c('0x43'),_0x74d560[_0xf03c('0x29')]);var _0x59f165=conferenceValidation['validate'](_0x74d560[_0xf03c('0x29')]);if(_0x59f165[_0xf03c('0x2a')]>0x0){return _0x2b3083[_0xf03c('0x17')](0x190)[_0xf03c('0x2b')](_0x59f165);}var _0x41ed5b=_0x74d560[_0xf03c('0x29')][_0xf03c('0x2c')];return getAgent(_0x41ed5b)[_0xf03c('0x1e')](function(_0x19acd5){logger[_0xf03c('0x27')](_0xf03c('0x2e'),_0x19acd5[_0xf03c('0x15')]);emit(util[_0xf03c('0x2f')](_0xf03c('0x30'),_0x19acd5['name']),_0xf03c('0x44'));return _0x2b3083[_0xf03c('0x17')](0xc8)[_0xf03c('0x2b')]({'error':![],'message':_0xf03c('0x45')});})[_0xf03c('0x33')](handleError(_0x2b3083));};exports[_0xf03c('0x46')]=function(_0x4b9bbd,_0x5d38b2){logger[_0xf03c('0x27')](_0xf03c('0x47'),_0x4b9bbd[_0xf03c('0x29')]);var _0x5162a2=transferValidation[_0xf03c('0xb')](_0x4b9bbd[_0xf03c('0x29')]);if(_0x5162a2[_0xf03c('0x2a')]>0x0){return _0x5d38b2[_0xf03c('0x17')](0x190)[_0xf03c('0x2b')](_0x5162a2);}var _0x1954d3=_0x4b9bbd[_0xf03c('0x29')][_0xf03c('0x2c')];var _0x3e143a=_0x4b9bbd[_0xf03c('0x29')][_0xf03c('0x23')];var _0x553abd=_0x4b9bbd[_0xf03c('0x29')]['transferNumber'];return getAgent(_0x1954d3)['then'](function(_0x478869){logger[_0xf03c('0x27')](_0xf03c('0x2e'),_0x478869[_0xf03c('0x15')]);emit(util[_0xf03c('0x2f')](_0xf03c('0x30'),_0x478869[_0xf03c('0x15')]),'webbar:transfer',{'sessionId':_0x3e143a,'transferNumber':_0x553abd});return _0x5d38b2[_0xf03c('0x17')](0xc8)['json']({'error':![],'message':_0xf03c('0x48')});})[_0xf03c('0x33')](handleError(_0x5d38b2));};