8dd7c281aebfb5cf3c003ce7b5a65c9c630e0e55
[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 _0xda65=['number','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','log','error','stack','name','send','status','NotFound','request','then','code','message','result','User','findOne','agent','VoiceChannels','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','info','originate\x20fired:','body','json','userId','callNumber','callerId','entityFound:','user:%s','webbar:originate','originate\x20executed!','catch','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','format','webbar:answer','answer\x20executed!','hold','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','all','conference','conference\x20fired:','webbar:conference','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','util','bluebird','jayson/promise','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','validate','userId\x20is\x20required','string','callNumber\x20is\x20required'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda65,0x1d0));var _0x5da6=function(_0x3d6489,_0x3382f9){_0x3d6489=_0x3d6489-0x0;var _0x59a3b1=_0xda65[_0x3d6489];return _0x59a3b1;};'use strict';var path=require(_0x5da6('0x0'));var fs=require('fs');var _=require(_0x5da6('0x1'));var db=require(_0x5da6('0x2'))['db'];var config=require('../../config/environment');var util=require(_0x5da6('0x3'));var BPromise=require(_0x5da6('0x4'));var jayson=require(_0x5da6('0x5'));var amiClient=jayson['client']['http']({'port':0x232a});var logger=require(_0x5da6('0x6'))(_0x5da6('0x7'));var Redis=require(_0x5da6('0x8'));config[_0x5da6('0x9')]=_[_0x5da6('0xa')](config['redis'],{'host':_0x5da6('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0x5da6('0xc'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5da6('0xd')]},'callNumber':{'type':_0x5da6('0xe'),'required':[!![],_0x5da6('0xf')]},'callerId':{'type':_0x5da6('0xe')},'callbackUrl':{'type':_0x5da6('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0x5da6('0x10'),'required':[!![],_0x5da6('0xd')]},'sessionId':{'type':_0x5da6('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5da6('0xd')]},'sessionId':{'type':_0x5da6('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x5da6('0x10'),'required':[!![],_0x5da6('0xd')]},'sessionId':{'type':_0x5da6('0xe'),'required':[!![],_0x5da6('0x11')]},'transferNumber':{'type':_0x5da6('0xe'),'required':[!![],_0x5da6('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x5da6('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x5da6('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x5da6('0x10'),'required':[!![],_0x5da6('0xd')]},'sessionId':{'type':_0x5da6('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x5da6('0x10'),'required':[!![],_0x5da6('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x5da6('0x10'),'required':[!![],_0x5da6('0xd')]}});function emit(_0x4f594e,_0x272b50,_0x478ce5){logger['info'](_0x4f594e,_0x272b50,JSON[_0x5da6('0x13')](_0x478ce5));io['to'](_0x4f594e)[_0x5da6('0x14')](_0x272b50,_0x478ce5);}function handleError(_0x41534d){return function(_0x4c3b2d){console[_0x5da6('0x15')]('handleError:',_0x4c3b2d,_0x4c3b2d instanceof RangeError);logger[_0x5da6('0x16')](_0x4c3b2d[_0x5da6('0x17')]);if(_0x4c3b2d instanceof RangeError){if(_0x4c3b2d[_0x5da6('0x18')]){delete _0x4c3b2d[_0x5da6('0x18')];}_0x41534d['status'](0x194)[_0x5da6('0x19')](_0x4c3b2d);}else{if(_0x4c3b2d[_0x5da6('0x18')]){delete _0x4c3b2d[_0x5da6('0x18')];}_0x41534d[_0x5da6('0x1a')](0x1f4)[_0x5da6('0x19')](_0x4c3b2d);}};}function checkError(){return function(_0x4107e4){if(!_0x4107e4){throw new RangeError(_0x5da6('0x1b'));}return _0x4107e4;};}function respondWithRpcPromise(_0xabbd18,_0x4eca61){return new BPromise(function(_0x317cdb,_0x5ad81b){var _0x92171e=amiClient;return _0x92171e[_0x5da6('0x1c')](_0xabbd18,_0x4eca61)[_0x5da6('0x1d')](function(_0xdbaece){if(_0xdbaece[_0x5da6('0x16')]){if(_0xdbaece[_0x5da6('0x16')][_0x5da6('0x1e')]===0x1f4){return _0x5ad81b(_0xdbaece[_0x5da6('0x16')]['message']);}return _0x317cdb(_0xdbaece['error'][_0x5da6('0x1f')]);}else{_0x317cdb(_0xdbaece[_0x5da6('0x20')]);}})['catch'](function(_0x559855){_0x5ad81b(_0x559855);});});}function getAgent(_0x2db51e){return db[_0x5da6('0x21')][_0x5da6('0x22')]({'where':{'id':_0x2db51e,'role':_0x5da6('0x23')}})[_0x5da6('0x1d')](checkError());}function getAgentCheckSession(_0x495138,_0x471873){return new BPromise(function(_0x1bc214,_0x42aa03){var _0x573b0c=respondWithRpcPromise(_0x5da6('0x24'));var _0x2b3be1=getAgent(_0x495138);Promise['all']([_0x573b0c,_0x2b3be1])[_0x5da6('0x1d')](function(_0x34545f){var _0x440895=_0x34545f[0x0];var _0x10432a=_0x34545f[0x1];var _0x2be5ac=_[_0x5da6('0x25')](_0x440895[_0x5da6('0x26')],function(_0x25e8ae){return _0x25e8ae[_0x5da6('0x27')]==_0x10432a['id']&&_0x25e8ae[_0x5da6('0x28')]==_0x471873;});if(_0x2be5ac[_0x5da6('0x29')]==0x1){_0x1bc214(_0x10432a);}else{_0x42aa03(new RangeError(_0x5da6('0x2a')+_0x471873+_0x5da6('0x2b')));}});});}exports[_0x5da6('0x2c')]=function(_0x5d6b39,_0x42af0d){logger[_0x5da6('0x2d')](_0x5da6('0x2e'),_0x5d6b39['body']);var _0x1a1fb6=originateValidation[_0x5da6('0xc')](_0x5d6b39[_0x5da6('0x2f')]);if(_0x1a1fb6[_0x5da6('0x29')]>0x0){return _0x42af0d[_0x5da6('0x1a')](0x190)[_0x5da6('0x30')](_0x1a1fb6);}var _0x2d7bd2=_0x5d6b39[_0x5da6('0x2f')][_0x5da6('0x31')];var _0x4f8544=_0x5d6b39['body'][_0x5da6('0x32')];var _0x5bbe10=_0x5d6b39['body'][_0x5da6('0x33')];var _0x150b1d=_0x5d6b39['body']['callbackUrl'];return getAgent(_0x2d7bd2)[_0x5da6('0x1d')](function(_0x57e8c2){logger['info'](_0x5da6('0x34'),_0x57e8c2[_0x5da6('0x18')]);emit(util['format'](_0x5da6('0x35'),_0x57e8c2[_0x5da6('0x18')]),_0x5da6('0x36'),{'callNumber':_0x4f8544,'callerId':_0x5bbe10,'callbackUrl':_0x150b1d});return _0x42af0d[_0x5da6('0x1a')](0xc8)['json']({'error':![],'message':_0x5da6('0x37')});})[_0x5da6('0x38')](handleError(_0x42af0d));};exports[_0x5da6('0x39')]=function(_0x4aab18,_0x44c3a2){logger[_0x5da6('0x2d')](_0x5da6('0x3a'),_0x4aab18[_0x5da6('0x2f')]);var _0x17dd2f=hangupValidation[_0x5da6('0xc')](_0x4aab18['body']);if(_0x17dd2f[_0x5da6('0x29')]>0x0){return _0x44c3a2[_0x5da6('0x1a')](0x190)[_0x5da6('0x30')](_0x17dd2f);}var _0x4bc07d=_0x4aab18['body']['userId'];var _0x36e215=_0x4aab18['body'][_0x5da6('0x28')];return getAgent(_0x4bc07d)['then'](function(_0x2afd1e){logger['info'](_0x5da6('0x34'),_0x2afd1e[_0x5da6('0x18')]);emit(util['format'](_0x5da6('0x35'),_0x2afd1e[_0x5da6('0x18')]),_0x5da6('0x3b'),{'sessionId':_0x36e215});return _0x44c3a2[_0x5da6('0x1a')](0xc8)[_0x5da6('0x30')]({'error':![],'message':_0x5da6('0x3c')});})[_0x5da6('0x38')](handleError(_0x44c3a2));};exports[_0x5da6('0x3d')]=function(_0x1b1a5d,_0x3071ed){logger[_0x5da6('0x2d')](_0x5da6('0x3e'),_0x1b1a5d[_0x5da6('0x2f')]);var _0x2ba795=answerValidation[_0x5da6('0xc')](_0x1b1a5d[_0x5da6('0x2f')]);if(_0x2ba795[_0x5da6('0x29')]>0x0){return _0x3071ed['status'](0x190)[_0x5da6('0x30')](_0x2ba795);}var _0x313a24=_0x1b1a5d[_0x5da6('0x2f')][_0x5da6('0x31')];var _0x5e01d2=_0x1b1a5d[_0x5da6('0x2f')][_0x5da6('0x28')];return getAgent(_0x313a24)[_0x5da6('0x1d')](function(_0x297007){logger['info'](_0x5da6('0x34'),_0x297007[_0x5da6('0x18')]);emit(util[_0x5da6('0x3f')](_0x5da6('0x35'),_0x297007[_0x5da6('0x18')]),_0x5da6('0x40'),{'sessionId':_0x5e01d2});return _0x3071ed[_0x5da6('0x1a')](0xc8)[_0x5da6('0x30')]({'error':![],'message':_0x5da6('0x41')});})['catch'](handleError(_0x3071ed));};exports[_0x5da6('0x42')]=function(_0x351848,_0x4583f4){logger['info']('hold\x20fired:',_0x351848[_0x5da6('0x2f')]);var _0x369ad5=holdValidation[_0x5da6('0xc')](_0x351848[_0x5da6('0x2f')]);if(_0x369ad5[_0x5da6('0x29')]>0x0){return _0x4583f4['status'](0x190)['json'](_0x369ad5);}var _0x4dd635=_0x351848[_0x5da6('0x2f')][_0x5da6('0x31')];var _0x3ce7b5=_0x351848[_0x5da6('0x2f')][_0x5da6('0x28')];return getAgent(_0x4dd635)[_0x5da6('0x1d')](function(_0x4a8da1){logger[_0x5da6('0x2d')](_0x5da6('0x34'),_0x4a8da1[_0x5da6('0x18')]);emit(util['format']('user:%s',_0x4a8da1[_0x5da6('0x18')]),_0x5da6('0x43'),{'sessionId':_0x3ce7b5});return _0x4583f4['status'](0xc8)[_0x5da6('0x30')]({'error':![],'message':_0x5da6('0x44')});})[_0x5da6('0x38')](handleError(_0x4583f4));};exports['unhold']=function(_0x2c90e2,_0x57de51){logger[_0x5da6('0x2d')](_0x5da6('0x45'),_0x2c90e2[_0x5da6('0x2f')]);var _0x33bea1=unholdValidation[_0x5da6('0xc')](_0x2c90e2[_0x5da6('0x2f')]);if(_0x33bea1[_0x5da6('0x29')]>0x0){return _0x57de51[_0x5da6('0x1a')](0x190)[_0x5da6('0x30')](_0x33bea1);}var _0x2e5ab7=_0x2c90e2[_0x5da6('0x2f')][_0x5da6('0x31')];var _0x50744d=_0x2c90e2[_0x5da6('0x2f')][_0x5da6('0x28')];return getAgent(_0x2e5ab7)['then'](function(_0xee8548){logger[_0x5da6('0x2d')](_0x5da6('0x34'),_0xee8548[_0x5da6('0x18')]);emit(util['format']('user:%s',_0xee8548['name']),_0x5da6('0x46'),{'sessionId':_0x50744d});return _0x57de51[_0x5da6('0x1a')](0xc8)[_0x5da6('0x30')]({'error':![],'message':'unhold\x20executed!'});})[_0x5da6('0x38')](handleError(_0x57de51));};exports[_0x5da6('0x47')]=function(_0x3a07d7,_0x2d3e76){logger[_0x5da6('0x2d')](_0x5da6('0x48'),_0x2d3e76['body']);var _0x23fe40=callsValidation[_0x5da6('0xc')](_0x3a07d7[_0x5da6('0x2f')]);if(_0x23fe40[_0x5da6('0x29')]>0x0){return _0x2d3e76[_0x5da6('0x1a')](0x190)[_0x5da6('0x30')](_0x23fe40);}var _0x25145a=_0x3a07d7[_0x5da6('0x2f')][_0x5da6('0x31')];var _0x4cf66d=respondWithRpcPromise('VoiceChannels');var _0x1a6014=getAgent(_0x25145a);return Promise[_0x5da6('0x49')]([_0x4cf66d,_0x1a6014])['then'](function(_0x298970){var _0x2eca9f=_0x298970[0x0];var _0x16840a=_0x298970[0x1];var _0x33b059=_[_0x5da6('0x25')](_0x2eca9f['rows'],function(_0x5d2189){return _0x5d2189[_0x5da6('0x27')]==_0x16840a['id'];});return _0x2d3e76[_0x5da6('0x1a')](0xc8)[_0x5da6('0x30')]({'count':_0x33b059[_0x5da6('0x29')],'rows':_0x33b059});})[_0x5da6('0x38')](handleError(_0x2d3e76));};exports[_0x5da6('0x4a')]=function(_0x298dc4,_0x1bbe3a){logger[_0x5da6('0x2d')](_0x5da6('0x4b'),_0x298dc4[_0x5da6('0x2f')]);var _0x5ed4a7=conferenceValidation['validate'](_0x298dc4[_0x5da6('0x2f')]);if(_0x5ed4a7[_0x5da6('0x29')]>0x0){return _0x1bbe3a[_0x5da6('0x1a')](0x190)[_0x5da6('0x30')](_0x5ed4a7);}var _0x1f8360=_0x298dc4[_0x5da6('0x2f')][_0x5da6('0x31')];return getAgent(_0x1f8360)[_0x5da6('0x1d')](function(_0x5a1891){logger['info'](_0x5da6('0x34'),_0x5a1891[_0x5da6('0x18')]);emit(util['format'](_0x5da6('0x35'),_0x5a1891[_0x5da6('0x18')]),_0x5da6('0x4c'));return _0x1bbe3a[_0x5da6('0x1a')](0xc8)[_0x5da6('0x30')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x1bbe3a));};exports['transfer']=function(_0x77db56,_0x4d3dc4){logger['info'](_0x5da6('0x4d'),_0x77db56[_0x5da6('0x2f')]);var _0x42e7b7=transferValidation[_0x5da6('0xc')](_0x77db56[_0x5da6('0x2f')]);if(_0x42e7b7[_0x5da6('0x29')]>0x0){return _0x4d3dc4[_0x5da6('0x1a')](0x190)[_0x5da6('0x30')](_0x42e7b7);}var _0x4fbe0a=_0x77db56[_0x5da6('0x2f')]['userId'];var _0x6103b9=_0x77db56[_0x5da6('0x2f')][_0x5da6('0x28')];var _0x34c096=_0x77db56['body'][_0x5da6('0x4e')];return getAgent(_0x4fbe0a)[_0x5da6('0x1d')](function(_0x47aaaf){logger['info']('entityFound:',_0x47aaaf['name']);emit(util[_0x5da6('0x3f')]('user:%s',_0x47aaaf['name']),'webbar:transfer',{'sessionId':_0x6103b9,'transferNumber':_0x34c096});return _0x4d3dc4[_0x5da6('0x1a')](0xc8)[_0x5da6('0x30')]({'error':![],'message':_0x5da6('0x4f')});})[_0x5da6('0x38')](handleError(_0x4d3dc4));};