14cb7d25e4c76912b1933de2edb6741c09187d30
[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 _0x7846=['originate\x20executed!','hangup\x20fired:','sessionId','entityFound:','format','webbar:hangup','answer','answer\x20fired:','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','all','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transferNumber','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','http','../../config/logger','webbarapi','ioredis','redis','defaults','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','handleError:','error','stack','name','send','status','NotFound','request','then','message','catch','findOne','VoiceChannels','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','info','user:%s','json'];(function(_0x5f3995,_0x507d8e){var _0x3d1481=function(_0x28746c){while(--_0x28746c){_0x5f3995['push'](_0x5f3995['shift']());}};_0x3d1481(++_0x507d8e);}(_0x7846,0xf4));var _0x6784=function(_0x4dae00,_0x15b194){_0x4dae00=_0x4dae00-0x0;var _0x16bf42=_0x7846[_0x4dae00];return _0x16bf42;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x6784('0x0'));var db=require(_0x6784('0x1'))['db'];var config=require(_0x6784('0x2'));var util=require(_0x6784('0x3'));var BPromise=require(_0x6784('0x4'));var jayson=require(_0x6784('0x5'));var amiClient=jayson['client'][_0x6784('0x6')]({'port':0x232a});var logger=require(_0x6784('0x7'))(_0x6784('0x8'));var Redis=require(_0x6784('0x9'));config[_0x6784('0xa')]=_[_0x6784('0xb')](config[_0x6784('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6784('0xa')]));var Schema=require(_0x6784('0xc'));var originateValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],_0x6784('0xe')]},'callNumber':{'type':_0x6784('0xf'),'required':[!![],_0x6784('0x10')]},'callerId':{'type':_0x6784('0xf')},'callbackUrl':{'type':_0x6784('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],_0x6784('0xe')]},'sessionId':{'type':_0x6784('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],_0x6784('0xe')]},'sessionId':{'type':_0x6784('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],_0x6784('0xe')]},'sessionId':{'type':'string','required':[!![],_0x6784('0x11')]},'transferNumber':{'type':_0x6784('0xf'),'required':[!![],_0x6784('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x6784('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],_0x6784('0xe')]},'sessionId':{'type':_0x6784('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],_0x6784('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0x6784('0xd'),'required':[!![],_0x6784('0xe')]}});function emit(_0x1db6be,_0x32c7a0,_0x3db21a){logger['info'](_0x1db6be,_0x32c7a0,JSON[_0x6784('0x13')](_0x3db21a));io['to'](_0x1db6be)[_0x6784('0x14')](_0x32c7a0,_0x3db21a);}function handleError(_0x2be16f){return function(_0x2fd8a2){console['log'](_0x6784('0x15'),_0x2fd8a2,_0x2fd8a2 instanceof RangeError);logger[_0x6784('0x16')](_0x2fd8a2[_0x6784('0x17')]);if(_0x2fd8a2 instanceof RangeError){if(_0x2fd8a2[_0x6784('0x18')]){delete _0x2fd8a2[_0x6784('0x18')];}_0x2be16f['status'](0x194)[_0x6784('0x19')](_0x2fd8a2);}else{if(_0x2fd8a2[_0x6784('0x18')]){delete _0x2fd8a2['name'];}_0x2be16f[_0x6784('0x1a')](0x1f4)[_0x6784('0x19')](_0x2fd8a2);}};}function checkError(){return function(_0x26356a){if(!_0x26356a){throw new RangeError(_0x6784('0x1b'));}return _0x26356a;};}function respondWithRpcPromise(_0x505954,_0x26e6c2){return new BPromise(function(_0x225a9e,_0x581690){var _0x37aea3=amiClient;return _0x37aea3[_0x6784('0x1c')](_0x505954,_0x26e6c2)[_0x6784('0x1d')](function(_0x305d64){if(_0x305d64[_0x6784('0x16')]){if(_0x305d64[_0x6784('0x16')]['code']===0x1f4){return _0x581690(_0x305d64[_0x6784('0x16')][_0x6784('0x1e')]);}return _0x225a9e(_0x305d64[_0x6784('0x16')][_0x6784('0x1e')]);}else{_0x225a9e(_0x305d64['result']);}})[_0x6784('0x1f')](function(_0x4a1b2b){_0x581690(_0x4a1b2b);});});}function getAgent(_0x52716e){return db['User'][_0x6784('0x20')]({'where':{'id':_0x52716e,'role':'agent'}})['then'](checkError());}function getAgentCheckSession(_0x51cbe4,_0x2dc02c){return new BPromise(function(_0x17346b,_0x28012f){var _0x202a0e=respondWithRpcPromise(_0x6784('0x21'));var _0x280b56=getAgent(_0x51cbe4);Promise['all']([_0x202a0e,_0x280b56])[_0x6784('0x1d')](function(_0x4b296b){var _0x569e31=_0x4b296b[0x0];var _0x5b5048=_0x4b296b[0x1];var _0x2d9c04=_[_0x6784('0x22')](_0x569e31[_0x6784('0x23')],function(_0x2036d6){return _0x2036d6[_0x6784('0x24')]==_0x5b5048['id']&&_0x2036d6['sessionId']==_0x2dc02c;});if(_0x2d9c04[_0x6784('0x25')]==0x1){_0x17346b(_0x5b5048);}else{_0x28012f(new RangeError(_0x6784('0x26')+_0x2dc02c+_0x6784('0x27')));}});});}exports[_0x6784('0x28')]=function(_0x3a57c6,_0xd9de69){logger['info'](_0x6784('0x29'),_0x3a57c6['body']);var _0x590cce=originateValidation[_0x6784('0xc')](_0x3a57c6[_0x6784('0x2a')]);if(_0x590cce[_0x6784('0x25')]>0x0){return _0xd9de69[_0x6784('0x1a')](0x190)['json'](_0x590cce);}var _0x3370f7=_0x3a57c6[_0x6784('0x2a')][_0x6784('0x2b')];var _0x15ef7f=_0x3a57c6[_0x6784('0x2a')][_0x6784('0x2c')];var _0x1e7ab1=_0x3a57c6[_0x6784('0x2a')]['callerId'];var _0x5238c3=_0x3a57c6[_0x6784('0x2a')]['callbackUrl'];return getAgent(_0x3370f7)[_0x6784('0x1d')](function(_0x5b8051){logger[_0x6784('0x2d')]('entityFound:',_0x5b8051[_0x6784('0x18')]);emit(util['format'](_0x6784('0x2e'),_0x5b8051[_0x6784('0x18')]),'webbar:originate',{'callNumber':_0x15ef7f,'callerId':_0x1e7ab1,'callbackUrl':_0x5238c3});return _0xd9de69['status'](0xc8)[_0x6784('0x2f')]({'error':![],'message':_0x6784('0x30')});})[_0x6784('0x1f')](handleError(_0xd9de69));};exports['hangup']=function(_0x51762a,_0x488135){logger[_0x6784('0x2d')](_0x6784('0x31'),_0x51762a[_0x6784('0x2a')]);var _0x223207=hangupValidation[_0x6784('0xc')](_0x51762a['body']);if(_0x223207[_0x6784('0x25')]>0x0){return _0x488135[_0x6784('0x1a')](0x190)[_0x6784('0x2f')](_0x223207);}var _0xc323df=_0x51762a[_0x6784('0x2a')][_0x6784('0x2b')];var _0x5f4248=_0x51762a[_0x6784('0x2a')][_0x6784('0x32')];return getAgent(_0xc323df)[_0x6784('0x1d')](function(_0x5f65a9){logger[_0x6784('0x2d')](_0x6784('0x33'),_0x5f65a9[_0x6784('0x18')]);emit(util[_0x6784('0x34')](_0x6784('0x2e'),_0x5f65a9[_0x6784('0x18')]),_0x6784('0x35'),{'sessionId':_0x5f4248});return _0x488135[_0x6784('0x1a')](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})[_0x6784('0x1f')](handleError(_0x488135));};exports[_0x6784('0x36')]=function(_0x49d6bf,_0x208fa4){logger[_0x6784('0x2d')](_0x6784('0x37'),_0x49d6bf[_0x6784('0x2a')]);var _0xc8532a=answerValidation[_0x6784('0xc')](_0x49d6bf['body']);if(_0xc8532a['length']>0x0){return _0x208fa4[_0x6784('0x1a')](0x190)['json'](_0xc8532a);}var _0x14cbd8=_0x49d6bf[_0x6784('0x2a')][_0x6784('0x2b')];var _0x549dfb=_0x49d6bf[_0x6784('0x2a')][_0x6784('0x32')];return getAgent(_0x14cbd8)[_0x6784('0x1d')](function(_0x40fff3){logger['info'](_0x6784('0x33'),_0x40fff3['name']);emit(util['format'](_0x6784('0x2e'),_0x40fff3[_0x6784('0x18')]),'webbar:answer',{'sessionId':_0x549dfb});return _0x208fa4['status'](0xc8)[_0x6784('0x2f')]({'error':![],'message':_0x6784('0x38')});})[_0x6784('0x1f')](handleError(_0x208fa4));};exports['hold']=function(_0x19ecca,_0x7b973f){logger['info'](_0x6784('0x39'),_0x19ecca[_0x6784('0x2a')]);var _0x3faa36=holdValidation['validate'](_0x19ecca[_0x6784('0x2a')]);if(_0x3faa36[_0x6784('0x25')]>0x0){return _0x7b973f[_0x6784('0x1a')](0x190)[_0x6784('0x2f')](_0x3faa36);}var _0x104967=_0x19ecca[_0x6784('0x2a')][_0x6784('0x2b')];var _0x244557=_0x19ecca[_0x6784('0x2a')][_0x6784('0x32')];return getAgent(_0x104967)['then'](function(_0x4c332e){logger[_0x6784('0x2d')](_0x6784('0x33'),_0x4c332e[_0x6784('0x18')]);emit(util['format'](_0x6784('0x2e'),_0x4c332e['name']),_0x6784('0x3a'),{'sessionId':_0x244557});return _0x7b973f[_0x6784('0x1a')](0xc8)['json']({'error':![],'message':_0x6784('0x3b')});})['catch'](handleError(_0x7b973f));};exports['unhold']=function(_0x3f3715,_0x504f0f){logger[_0x6784('0x2d')](_0x6784('0x3c'),_0x3f3715['body']);var _0x4c886d=unholdValidation[_0x6784('0xc')](_0x3f3715[_0x6784('0x2a')]);if(_0x4c886d['length']>0x0){return _0x504f0f[_0x6784('0x1a')](0x190)[_0x6784('0x2f')](_0x4c886d);}var _0x12310c=_0x3f3715[_0x6784('0x2a')][_0x6784('0x2b')];var _0x449ae0=_0x3f3715[_0x6784('0x2a')][_0x6784('0x32')];return getAgent(_0x12310c)[_0x6784('0x1d')](function(_0x1b3317){logger[_0x6784('0x2d')]('entityFound:',_0x1b3317[_0x6784('0x18')]);emit(util[_0x6784('0x34')](_0x6784('0x2e'),_0x1b3317[_0x6784('0x18')]),_0x6784('0x3d'),{'sessionId':_0x449ae0});return _0x504f0f[_0x6784('0x1a')](0xc8)[_0x6784('0x2f')]({'error':![],'message':_0x6784('0x3e')});})['catch'](handleError(_0x504f0f));};exports[_0x6784('0x3f')]=function(_0x1b1bd4,_0x45544a){logger[_0x6784('0x2d')](_0x6784('0x40'),_0x45544a[_0x6784('0x2a')]);var _0xbed6df=callsValidation[_0x6784('0xc')](_0x1b1bd4[_0x6784('0x2a')]);if(_0xbed6df[_0x6784('0x25')]>0x0){return _0x45544a[_0x6784('0x1a')](0x190)[_0x6784('0x2f')](_0xbed6df);}var _0x1be4f2=_0x1b1bd4[_0x6784('0x2a')][_0x6784('0x2b')];var _0x43cf9c=respondWithRpcPromise(_0x6784('0x21'));var _0x244916=getAgent(_0x1be4f2);return Promise[_0x6784('0x41')]([_0x43cf9c,_0x244916])['then'](function(_0x48e7b8){var _0x5634b0=_0x48e7b8[0x0];var _0x2f65a1=_0x48e7b8[0x1];var _0x2bf541=_[_0x6784('0x22')](_0x5634b0[_0x6784('0x23')],function(_0x15819a){return _0x15819a[_0x6784('0x24')]==_0x2f65a1['id'];});return _0x45544a[_0x6784('0x1a')](0xc8)[_0x6784('0x2f')]({'count':_0x2bf541[_0x6784('0x25')],'rows':_0x2bf541});})[_0x6784('0x1f')](handleError(_0x45544a));};exports[_0x6784('0x42')]=function(_0xd8a537,_0x4cd72d){logger['info'](_0x6784('0x43'),_0xd8a537['body']);var _0x1c314d=conferenceValidation[_0x6784('0xc')](_0xd8a537[_0x6784('0x2a')]);if(_0x1c314d['length']>0x0){return _0x4cd72d[_0x6784('0x1a')](0x190)['json'](_0x1c314d);}var _0x164bc9=_0xd8a537[_0x6784('0x2a')][_0x6784('0x2b')];return getAgent(_0x164bc9)['then'](function(_0x4af224){logger[_0x6784('0x2d')](_0x6784('0x33'),_0x4af224[_0x6784('0x18')]);emit(util['format'](_0x6784('0x2e'),_0x4af224[_0x6784('0x18')]),_0x6784('0x44'));return _0x4cd72d[_0x6784('0x1a')](0xc8)[_0x6784('0x2f')]({'error':![],'message':_0x6784('0x45')});})[_0x6784('0x1f')](handleError(_0x4cd72d));};exports['transfer']=function(_0x191b5e,_0x1e7e25){logger[_0x6784('0x2d')]('transfer\x20fired:',_0x191b5e['body']);var _0x57dabc=transferValidation[_0x6784('0xc')](_0x191b5e[_0x6784('0x2a')]);if(_0x57dabc[_0x6784('0x25')]>0x0){return _0x1e7e25[_0x6784('0x1a')](0x190)[_0x6784('0x2f')](_0x57dabc);}var _0x1ac848=_0x191b5e[_0x6784('0x2a')][_0x6784('0x2b')];var _0x34b8d2=_0x191b5e[_0x6784('0x2a')][_0x6784('0x32')];var _0x5d98b1=_0x191b5e[_0x6784('0x2a')][_0x6784('0x46')];return getAgent(_0x1ac848)[_0x6784('0x1d')](function(_0x52d565){logger[_0x6784('0x2d')](_0x6784('0x33'),_0x52d565[_0x6784('0x18')]);emit(util[_0x6784('0x34')](_0x6784('0x2e'),_0x52d565[_0x6784('0x18')]),_0x6784('0x47'),{'sessionId':_0x34b8d2,'transferNumber':_0x5d98b1});return _0x1e7e25[_0x6784('0x1a')](0xc8)[_0x6784('0x2f')]({'error':![],'message':_0x6784('0x48')});})[_0x6784('0x1f')](handleError(_0x1e7e25));};