d1730c657cf0cd7aa08167a2a8cd69f36e012181
[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 _0x0b5d=['userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','log','handleError:','stack','name','status','send','request','then','error','message','result','catch','findOne','VoiceChannels','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callerId','entityFound:','user:%s','webbar:originate','format','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold\x20fired:','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','rows','conference','conference\x20executed!','transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','http','../../config/logger','webbarapi','ioredis','redis','localhost','validate','number','string','callNumber\x20is\x20required'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x0b5d,0x136));var _0xd0b5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0b5d[_0x3dd15e];return _0x231fd0;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xd0b5('0x0'));var db=require(_0xd0b5('0x1'))['db'];var config=require(_0xd0b5('0x2'));var util=require(_0xd0b5('0x3'));var BPromise=require(_0xd0b5('0x4'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0xd0b5('0x5')]({'port':0x232a});var logger=require(_0xd0b5('0x6'))(_0xd0b5('0x7'));var Redis=require(_0xd0b5('0x8'));config['redis']=_['defaults'](config[_0xd0b5('0x9')],{'host':_0xd0b5('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd0b5('0x9')]));var Schema=require(_0xd0b5('0xb'));var originateValidation=new Schema({'userId':{'type':_0xd0b5('0xc'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xd0b5('0xd'),'required':[!![],_0xd0b5('0xe')]},'callerId':{'type':_0xd0b5('0xd')},'callbackUrl':{'type':_0xd0b5('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xd0b5('0xc'),'required':[!![],_0xd0b5('0xf')]},'sessionId':{'type':_0xd0b5('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xd0b5('0xf')]},'sessionId':{'type':_0xd0b5('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xd0b5('0xf')]},'sessionId':{'type':_0xd0b5('0xd'),'required':[!![],_0xd0b5('0x10')]},'transferNumber':{'type':_0xd0b5('0xd'),'required':[!![],_0xd0b5('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xd0b5('0xc'),'required':[!![],_0xd0b5('0xf')]},'sessionId':{'type':_0xd0b5('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xd0b5('0xc'),'required':[!![],_0xd0b5('0xf')]},'sessionId':{'type':_0xd0b5('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xd0b5('0xc'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0xd0b5('0xc'),'required':[!![],_0xd0b5('0xf')]}});function emit(_0x259391,_0x52f5e3,_0x3e7885){logger[_0xd0b5('0x12')](_0x259391,_0x52f5e3,JSON[_0xd0b5('0x13')](_0x3e7885));io['to'](_0x259391)['emit'](_0x52f5e3,_0x3e7885);}function handleError(_0x528fb2){return function(_0x21c9c3){console[_0xd0b5('0x14')](_0xd0b5('0x15'),_0x21c9c3,_0x21c9c3 instanceof RangeError);logger['error'](_0x21c9c3[_0xd0b5('0x16')]);if(_0x21c9c3 instanceof RangeError){if(_0x21c9c3[_0xd0b5('0x17')]){delete _0x21c9c3[_0xd0b5('0x17')];}_0x528fb2[_0xd0b5('0x18')](0x194)[_0xd0b5('0x19')](_0x21c9c3);}else{if(_0x21c9c3[_0xd0b5('0x17')]){delete _0x21c9c3['name'];}_0x528fb2[_0xd0b5('0x18')](0x1f4)['send'](_0x21c9c3);}};}function checkError(){return function(_0x59cd6d){if(!_0x59cd6d){throw new RangeError('NotFound');}return _0x59cd6d;};}function respondWithRpcPromise(_0x401642,_0x323af2){return new BPromise(function(_0x1bd89a,_0x4ccf79){var _0x300fda=amiClient;return _0x300fda[_0xd0b5('0x1a')](_0x401642,_0x323af2)[_0xd0b5('0x1b')](function(_0x18545e){if(_0x18545e[_0xd0b5('0x1c')]){if(_0x18545e[_0xd0b5('0x1c')]['code']===0x1f4){return _0x4ccf79(_0x18545e[_0xd0b5('0x1c')]['message']);}return _0x1bd89a(_0x18545e['error'][_0xd0b5('0x1d')]);}else{_0x1bd89a(_0x18545e[_0xd0b5('0x1e')]);}})[_0xd0b5('0x1f')](function(_0x53ffbb){_0x4ccf79(_0x53ffbb);});});}function getAgent(_0x1a6456){return db['User'][_0xd0b5('0x20')]({'where':{'id':_0x1a6456,'role':'agent'}})[_0xd0b5('0x1b')](checkError());}function getAgentCheckSession(_0xf8f14a,_0x4f5bea){return new BPromise(function(_0x246c78,_0xdebed4){var _0x5a0386=respondWithRpcPromise(_0xd0b5('0x21'));var _0x11e38b=getAgent(_0xf8f14a);Promise['all']([_0x5a0386,_0x11e38b])[_0xd0b5('0x1b')](function(_0x48ec2c){var _0x531440=_0x48ec2c[0x0];var _0x897435=_0x48ec2c[0x1];var _0xa94fe6=_[_0xd0b5('0x22')](_0x531440['rows'],function(_0x1ed37d){return _0x1ed37d[_0xd0b5('0x23')]==_0x897435['id']&&_0x1ed37d[_0xd0b5('0x24')]==_0x4f5bea;});if(_0xa94fe6[_0xd0b5('0x25')]==0x1){_0x246c78(_0x897435);}else{_0xdebed4(new RangeError(_0xd0b5('0x26')+_0x4f5bea+_0xd0b5('0x27')));}});});}exports[_0xd0b5('0x28')]=function(_0x7f92f5,_0x5425ff){logger[_0xd0b5('0x12')](_0xd0b5('0x29'),_0x7f92f5[_0xd0b5('0x2a')]);var _0x2a84a5=originateValidation[_0xd0b5('0xb')](_0x7f92f5[_0xd0b5('0x2a')]);if(_0x2a84a5[_0xd0b5('0x25')]>0x0){return _0x5425ff['status'](0x190)[_0xd0b5('0x2b')](_0x2a84a5);}var _0x2d442e=_0x7f92f5['body'][_0xd0b5('0x2c')];var _0x5b9110=_0x7f92f5[_0xd0b5('0x2a')]['callNumber'];var _0x1f9703=_0x7f92f5['body'][_0xd0b5('0x2d')];var _0x16d62d=_0x7f92f5[_0xd0b5('0x2a')]['callbackUrl'];return getAgent(_0x2d442e)[_0xd0b5('0x1b')](function(_0x3f07ab){logger['info'](_0xd0b5('0x2e'),_0x3f07ab[_0xd0b5('0x17')]);emit(util['format'](_0xd0b5('0x2f'),_0x3f07ab[_0xd0b5('0x17')]),_0xd0b5('0x30'),{'callNumber':_0x5b9110,'callerId':_0x1f9703,'callbackUrl':_0x16d62d});return _0x5425ff['status'](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})[_0xd0b5('0x1f')](handleError(_0x5425ff));};exports['hangup']=function(_0x3da566,_0xa9fdd6){logger['info']('hangup\x20fired:',_0x3da566[_0xd0b5('0x2a')]);var _0x4c6e83=hangupValidation[_0xd0b5('0xb')](_0x3da566['body']);if(_0x4c6e83[_0xd0b5('0x25')]>0x0){return _0xa9fdd6[_0xd0b5('0x18')](0x190)[_0xd0b5('0x2b')](_0x4c6e83);}var _0x5bc1b7=_0x3da566[_0xd0b5('0x2a')][_0xd0b5('0x2c')];var _0x509d40=_0x3da566['body'][_0xd0b5('0x24')];return getAgent(_0x5bc1b7)[_0xd0b5('0x1b')](function(_0x585647){logger[_0xd0b5('0x12')](_0xd0b5('0x2e'),_0x585647['name']);emit(util[_0xd0b5('0x31')](_0xd0b5('0x2f'),_0x585647[_0xd0b5('0x17')]),'webbar:hangup',{'sessionId':_0x509d40});return _0xa9fdd6[_0xd0b5('0x18')](0xc8)['json']({'error':![],'message':_0xd0b5('0x32')});})[_0xd0b5('0x1f')](handleError(_0xa9fdd6));};exports[_0xd0b5('0x33')]=function(_0x18d6e2,_0x4a6115){logger[_0xd0b5('0x12')](_0xd0b5('0x34'),_0x18d6e2[_0xd0b5('0x2a')]);var _0x3b273c=answerValidation[_0xd0b5('0xb')](_0x18d6e2[_0xd0b5('0x2a')]);if(_0x3b273c[_0xd0b5('0x25')]>0x0){return _0x4a6115[_0xd0b5('0x18')](0x190)[_0xd0b5('0x2b')](_0x3b273c);}var _0xbca630=_0x18d6e2[_0xd0b5('0x2a')]['userId'];var _0x17a469=_0x18d6e2[_0xd0b5('0x2a')]['sessionId'];return getAgent(_0xbca630)[_0xd0b5('0x1b')](function(_0x1273ae){logger[_0xd0b5('0x12')](_0xd0b5('0x2e'),_0x1273ae[_0xd0b5('0x17')]);emit(util[_0xd0b5('0x31')](_0xd0b5('0x2f'),_0x1273ae[_0xd0b5('0x17')]),_0xd0b5('0x35'),{'sessionId':_0x17a469});return _0x4a6115[_0xd0b5('0x18')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0xd0b5('0x1f')](handleError(_0x4a6115));};exports['hold']=function(_0x1ae2a5,_0x231e8e){logger[_0xd0b5('0x12')](_0xd0b5('0x36'),_0x1ae2a5[_0xd0b5('0x2a')]);var _0x3af078=holdValidation[_0xd0b5('0xb')](_0x1ae2a5[_0xd0b5('0x2a')]);if(_0x3af078[_0xd0b5('0x25')]>0x0){return _0x231e8e[_0xd0b5('0x18')](0x190)[_0xd0b5('0x2b')](_0x3af078);}var _0x3ce47f=_0x1ae2a5['body'][_0xd0b5('0x2c')];var _0x165386=_0x1ae2a5[_0xd0b5('0x2a')][_0xd0b5('0x24')];return getAgent(_0x3ce47f)[_0xd0b5('0x1b')](function(_0x35f93b){logger[_0xd0b5('0x12')](_0xd0b5('0x2e'),_0x35f93b['name']);emit(util[_0xd0b5('0x31')](_0xd0b5('0x2f'),_0x35f93b['name']),'webbar:hold',{'sessionId':_0x165386});return _0x231e8e[_0xd0b5('0x18')](0xc8)[_0xd0b5('0x2b')]({'error':![],'message':'hold\x20executed!'});})[_0xd0b5('0x1f')](handleError(_0x231e8e));};exports[_0xd0b5('0x37')]=function(_0x6e213f,_0x3c9f27){logger[_0xd0b5('0x12')](_0xd0b5('0x38'),_0x6e213f[_0xd0b5('0x2a')]);var _0x3e346e=unholdValidation['validate'](_0x6e213f['body']);if(_0x3e346e[_0xd0b5('0x25')]>0x0){return _0x3c9f27[_0xd0b5('0x18')](0x190)[_0xd0b5('0x2b')](_0x3e346e);}var _0x3b0504=_0x6e213f['body'][_0xd0b5('0x2c')];var _0x2aa0fc=_0x6e213f[_0xd0b5('0x2a')][_0xd0b5('0x24')];return getAgent(_0x3b0504)[_0xd0b5('0x1b')](function(_0x1bb295){logger[_0xd0b5('0x12')]('entityFound:',_0x1bb295[_0xd0b5('0x17')]);emit(util[_0xd0b5('0x31')](_0xd0b5('0x2f'),_0x1bb295[_0xd0b5('0x17')]),'webbar:unhold',{'sessionId':_0x2aa0fc});return _0x3c9f27[_0xd0b5('0x18')](0xc8)['json']({'error':![],'message':_0xd0b5('0x39')});})[_0xd0b5('0x1f')](handleError(_0x3c9f27));};exports[_0xd0b5('0x3a')]=function(_0x4e68ba,_0x528839){logger['info'](_0xd0b5('0x3b'),_0x528839[_0xd0b5('0x2a')]);var _0x3994b1=callsValidation[_0xd0b5('0xb')](_0x4e68ba[_0xd0b5('0x2a')]);if(_0x3994b1[_0xd0b5('0x25')]>0x0){return _0x528839[_0xd0b5('0x18')](0x190)['json'](_0x3994b1);}var _0x54e0ee=_0x4e68ba[_0xd0b5('0x2a')][_0xd0b5('0x2c')];var _0x4bb772=respondWithRpcPromise(_0xd0b5('0x21'));var _0x17753a=getAgent(_0x54e0ee);return Promise['all']([_0x4bb772,_0x17753a])[_0xd0b5('0x1b')](function(_0x2b92cd){var _0x5e8fea=_0x2b92cd[0x0];var _0x2d6f62=_0x2b92cd[0x1];var _0x2352aa=_[_0xd0b5('0x22')](_0x5e8fea[_0xd0b5('0x3c')],function(_0x10ebcb){return _0x10ebcb['UserId']==_0x2d6f62['id'];});return _0x528839[_0xd0b5('0x18')](0xc8)['json']({'count':_0x2352aa[_0xd0b5('0x25')],'rows':_0x2352aa});})[_0xd0b5('0x1f')](handleError(_0x528839));};exports[_0xd0b5('0x3d')]=function(_0x3385c6,_0x498c21){logger['info']('conference\x20fired:',_0x3385c6[_0xd0b5('0x2a')]);var _0x37c648=conferenceValidation[_0xd0b5('0xb')](_0x3385c6[_0xd0b5('0x2a')]);if(_0x37c648[_0xd0b5('0x25')]>0x0){return _0x498c21['status'](0x190)[_0xd0b5('0x2b')](_0x37c648);}var _0x333dbd=_0x3385c6['body'][_0xd0b5('0x2c')];return getAgent(_0x333dbd)['then'](function(_0xee4d4){logger[_0xd0b5('0x12')](_0xd0b5('0x2e'),_0xee4d4[_0xd0b5('0x17')]);emit(util[_0xd0b5('0x31')](_0xd0b5('0x2f'),_0xee4d4[_0xd0b5('0x17')]),'webbar:conference');return _0x498c21[_0xd0b5('0x18')](0xc8)[_0xd0b5('0x2b')]({'error':![],'message':_0xd0b5('0x3e')});})[_0xd0b5('0x1f')](handleError(_0x498c21));};exports[_0xd0b5('0x3f')]=function(_0x43cb09,_0x48f0da){logger['info']('transfer\x20fired:',_0x43cb09['body']);var _0x279391=transferValidation['validate'](_0x43cb09[_0xd0b5('0x2a')]);if(_0x279391[_0xd0b5('0x25')]>0x0){return _0x48f0da[_0xd0b5('0x18')](0x190)[_0xd0b5('0x2b')](_0x279391);}var _0x34e373=_0x43cb09[_0xd0b5('0x2a')][_0xd0b5('0x2c')];var _0x54f176=_0x43cb09[_0xd0b5('0x2a')][_0xd0b5('0x24')];var _0x3c9ca3=_0x43cb09['body']['transferNumber'];return getAgent(_0x34e373)['then'](function(_0x1e7e5d){logger[_0xd0b5('0x12')]('entityFound:',_0x1e7e5d[_0xd0b5('0x17')]);emit(util[_0xd0b5('0x31')](_0xd0b5('0x2f'),_0x1e7e5d[_0xd0b5('0x17')]),'webbar:transfer',{'sessionId':_0x54f176,'transferNumber':_0x3c9ca3});return _0x48f0da[_0xd0b5('0x18')](0xc8)[_0xd0b5('0x2b')]({'error':![],'message':_0xd0b5('0x40')});})[_0xd0b5('0x1f')](handleError(_0x48f0da));};