Built motion from commit (unavailable).|2.5.18
[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 _0x97da=['log','handleError:','error','name','status','send','NotFound','request','then','code','message','result','User','VoiceChannels','filter','sessionId','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','length','json','userId','callerId','callbackUrl','info','entityFound:','user:%s','originate\x20executed!','catch','hangup','format','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','hold\x20executed!','unhold','unhold\x20executed!','calls','calls\x20fired:','all','rows','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','path','../../mysqldb','../../config/environment','bluebird','client','http','../../config/logger','defaults','redis','localhost','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit'];(function(_0x48ddf9,_0xf961ec){var _0x30262b=function(_0x37ddff){while(--_0x37ddff){_0x48ddf9['push'](_0x48ddf9['shift']());}};_0x30262b(++_0xf961ec);}(_0x97da,0x164));var _0xa97d=function(_0x5a2e6f,_0xfc9828){_0x5a2e6f=_0x5a2e6f-0x0;var _0x364848=_0x97da[_0x5a2e6f];return _0x364848;};'use strict';var path=require(_0xa97d('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0xa97d('0x1'))['db'];var config=require(_0xa97d('0x2'));var util=require('util');var BPromise=require(_0xa97d('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0xa97d('0x4')][_0xa97d('0x5')]({'port':0x232a});var logger=require(_0xa97d('0x6'))('webbarapi');var Redis=require('ioredis');config['redis']=_[_0xa97d('0x7')](config[_0xa97d('0x8')],{'host':_0xa97d('0x9'),'port':0x18eb});var io=require(_0xa97d('0xa'))(new Redis(config[_0xa97d('0x8')]));var Schema=require(_0xa97d('0xb'));var originateValidation=new Schema({'userId':{'type':_0xa97d('0xc'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xa97d('0xd'),'required':[!![],_0xa97d('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xa97d('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xa97d('0xc'),'required':[!![],_0xa97d('0xf')]},'sessionId':{'type':_0xa97d('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xa97d('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xa97d('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xa97d('0xc'),'required':[!![],_0xa97d('0xf')]},'sessionId':{'type':_0xa97d('0xd'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xa97d('0xd'),'required':[!![],_0xa97d('0x10')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xa97d('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xa97d('0xf')]},'sessionId':{'type':_0xa97d('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xa97d('0xc'),'required':[!![],_0xa97d('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':_0xa97d('0xc'),'required':[!![],_0xa97d('0xf')]}});function emit(_0xbe54ea,_0x168288,_0x1a261e){logger['info'](_0xbe54ea,_0x168288,JSON[_0xa97d('0x11')](_0x1a261e));io['to'](_0xbe54ea)[_0xa97d('0x12')](_0x168288,_0x1a261e);}function handleError(_0xd3ade6){return function(_0x393229){console[_0xa97d('0x13')](_0xa97d('0x14'),_0x393229,_0x393229 instanceof RangeError);logger[_0xa97d('0x15')](_0x393229['stack']);if(_0x393229 instanceof RangeError){if(_0x393229[_0xa97d('0x16')]){delete _0x393229[_0xa97d('0x16')];}_0xd3ade6[_0xa97d('0x17')](0x194)[_0xa97d('0x18')](_0x393229);}else{if(_0x393229['name']){delete _0x393229[_0xa97d('0x16')];}_0xd3ade6[_0xa97d('0x17')](0x1f4)[_0xa97d('0x18')](_0x393229);}};}function checkError(){return function(_0x61da7c){if(!_0x61da7c){throw new RangeError(_0xa97d('0x19'));}return _0x61da7c;};}function respondWithRpcPromise(_0x2919f2,_0x16d68c){return new BPromise(function(_0x296dba,_0x3cf96f){var _0x24970f=amiClient;return _0x24970f[_0xa97d('0x1a')](_0x2919f2,_0x16d68c)[_0xa97d('0x1b')](function(_0x347811){if(_0x347811[_0xa97d('0x15')]){if(_0x347811[_0xa97d('0x15')][_0xa97d('0x1c')]===0x1f4){return _0x3cf96f(_0x347811[_0xa97d('0x15')][_0xa97d('0x1d')]);}return _0x296dba(_0x347811[_0xa97d('0x15')]['message']);}else{_0x296dba(_0x347811[_0xa97d('0x1e')]);}})['catch'](function(_0x37a495){_0x3cf96f(_0x37a495);});});}function getAgent(_0x32ca5c){return db[_0xa97d('0x1f')]['findOne']({'where':{'id':_0x32ca5c,'role':'agent'}})[_0xa97d('0x1b')](checkError());}function getAgentCheckSession(_0x282b00,_0x583ba5){return new BPromise(function(_0x17f16b,_0x583f71){var _0x11816b=respondWithRpcPromise(_0xa97d('0x20'));var _0x38ffcf=getAgent(_0x282b00);Promise['all']([_0x11816b,_0x38ffcf])[_0xa97d('0x1b')](function(_0x49d67b){var _0xac5f0e=_0x49d67b[0x0];var _0x351a98=_0x49d67b[0x1];var _0x22e56d=_[_0xa97d('0x21')](_0xac5f0e['rows'],function(_0x17e483){return _0x17e483['UserId']==_0x351a98['id']&&_0x17e483[_0xa97d('0x22')]==_0x583ba5;});if(_0x22e56d['length']==0x1){_0x17f16b(_0x351a98);}else{_0x583f71(new RangeError(_0xa97d('0x23')+_0x583ba5+_0xa97d('0x24')));}});});}exports[_0xa97d('0x25')]=function(_0x2efe0f,_0xd63e8e){logger['info'](_0xa97d('0x26'),_0x2efe0f['body']);var _0x31fefe=originateValidation['validate'](_0x2efe0f[_0xa97d('0x27')]);if(_0x31fefe[_0xa97d('0x28')]>0x0){return _0xd63e8e['status'](0x190)[_0xa97d('0x29')](_0x31fefe);}var _0x3689fd=_0x2efe0f[_0xa97d('0x27')][_0xa97d('0x2a')];var _0x5e8046=_0x2efe0f[_0xa97d('0x27')]['callNumber'];var _0x38eb8e=_0x2efe0f[_0xa97d('0x27')][_0xa97d('0x2b')];var _0x5ca730=_0x2efe0f[_0xa97d('0x27')][_0xa97d('0x2c')];return getAgent(_0x3689fd)[_0xa97d('0x1b')](function(_0x1b905e){logger[_0xa97d('0x2d')](_0xa97d('0x2e'),_0x1b905e['name']);emit(util['format'](_0xa97d('0x2f'),_0x1b905e['name']),'webbar:originate',{'callNumber':_0x5e8046,'callerId':_0x38eb8e,'callbackUrl':_0x5ca730});return _0xd63e8e[_0xa97d('0x17')](0xc8)[_0xa97d('0x29')]({'error':![],'message':_0xa97d('0x30')});})[_0xa97d('0x31')](handleError(_0xd63e8e));};exports[_0xa97d('0x32')]=function(_0x207f30,_0x48e517){logger[_0xa97d('0x2d')]('hangup\x20fired:',_0x207f30['body']);var _0x3efaf4=hangupValidation['validate'](_0x207f30[_0xa97d('0x27')]);if(_0x3efaf4['length']>0x0){return _0x48e517['status'](0x190)[_0xa97d('0x29')](_0x3efaf4);}var _0x40845e=_0x207f30['body'][_0xa97d('0x2a')];var _0x1c8216=_0x207f30['body'][_0xa97d('0x22')];return getAgent(_0x40845e)['then'](function(_0x2b2a64){logger[_0xa97d('0x2d')](_0xa97d('0x2e'),_0x2b2a64['name']);emit(util[_0xa97d('0x33')]('user:%s',_0x2b2a64[_0xa97d('0x16')]),_0xa97d('0x34'),{'sessionId':_0x1c8216});return _0x48e517[_0xa97d('0x17')](0xc8)['json']({'error':![],'message':_0xa97d('0x35')});})[_0xa97d('0x31')](handleError(_0x48e517));};exports[_0xa97d('0x36')]=function(_0x527a52,_0x2d0b68){logger[_0xa97d('0x2d')](_0xa97d('0x37'),_0x527a52[_0xa97d('0x27')]);var _0x56afea=answerValidation[_0xa97d('0xb')](_0x527a52[_0xa97d('0x27')]);if(_0x56afea[_0xa97d('0x28')]>0x0){return _0x2d0b68[_0xa97d('0x17')](0x190)[_0xa97d('0x29')](_0x56afea);}var _0x3e9c2c=_0x527a52['body'][_0xa97d('0x2a')];var _0x5ec6e9=_0x527a52['body']['sessionId'];return getAgent(_0x3e9c2c)[_0xa97d('0x1b')](function(_0x3b47f5){logger['info'](_0xa97d('0x2e'),_0x3b47f5[_0xa97d('0x16')]);emit(util['format'](_0xa97d('0x2f'),_0x3b47f5['name']),_0xa97d('0x38'),{'sessionId':_0x5ec6e9});return _0x2d0b68[_0xa97d('0x17')](0xc8)[_0xa97d('0x29')]({'error':![],'message':_0xa97d('0x39')});})[_0xa97d('0x31')](handleError(_0x2d0b68));};exports[_0xa97d('0x3a')]=function(_0x2a1422,_0x548b23){logger[_0xa97d('0x2d')](_0xa97d('0x3b'),_0x2a1422[_0xa97d('0x27')]);var _0x274deb=holdValidation[_0xa97d('0xb')](_0x2a1422[_0xa97d('0x27')]);if(_0x274deb[_0xa97d('0x28')]>0x0){return _0x548b23[_0xa97d('0x17')](0x190)[_0xa97d('0x29')](_0x274deb);}var _0x4365d1=_0x2a1422[_0xa97d('0x27')][_0xa97d('0x2a')];var _0x51faf7=_0x2a1422[_0xa97d('0x27')]['sessionId'];return getAgent(_0x4365d1)[_0xa97d('0x1b')](function(_0xbed933){logger[_0xa97d('0x2d')](_0xa97d('0x2e'),_0xbed933['name']);emit(util['format']('user:%s',_0xbed933['name']),'webbar:hold',{'sessionId':_0x51faf7});return _0x548b23[_0xa97d('0x17')](0xc8)[_0xa97d('0x29')]({'error':![],'message':_0xa97d('0x3c')});})[_0xa97d('0x31')](handleError(_0x548b23));};exports[_0xa97d('0x3d')]=function(_0x4770f0,_0x4abe97){logger['info']('unhold\x20fired:',_0x4770f0[_0xa97d('0x27')]);var _0x79724b=unholdValidation[_0xa97d('0xb')](_0x4770f0[_0xa97d('0x27')]);if(_0x79724b[_0xa97d('0x28')]>0x0){return _0x4abe97['status'](0x190)[_0xa97d('0x29')](_0x79724b);}var _0x5f5cc7=_0x4770f0[_0xa97d('0x27')]['userId'];var _0x4852b9=_0x4770f0[_0xa97d('0x27')][_0xa97d('0x22')];return getAgent(_0x5f5cc7)['then'](function(_0x418f44){logger[_0xa97d('0x2d')]('entityFound:',_0x418f44[_0xa97d('0x16')]);emit(util[_0xa97d('0x33')](_0xa97d('0x2f'),_0x418f44[_0xa97d('0x16')]),'webbar:unhold',{'sessionId':_0x4852b9});return _0x4abe97[_0xa97d('0x17')](0xc8)[_0xa97d('0x29')]({'error':![],'message':_0xa97d('0x3e')});})[_0xa97d('0x31')](handleError(_0x4abe97));};exports[_0xa97d('0x3f')]=function(_0x1c2f53,_0x35fc17){logger[_0xa97d('0x2d')](_0xa97d('0x40'),_0x35fc17['body']);var _0x366c33=callsValidation['validate'](_0x1c2f53[_0xa97d('0x27')]);if(_0x366c33[_0xa97d('0x28')]>0x0){return _0x35fc17[_0xa97d('0x17')](0x190)[_0xa97d('0x29')](_0x366c33);}var _0x59dc85=_0x1c2f53[_0xa97d('0x27')][_0xa97d('0x2a')];var _0x18f278=respondWithRpcPromise(_0xa97d('0x20'));var _0x293b96=getAgent(_0x59dc85);return Promise[_0xa97d('0x41')]([_0x18f278,_0x293b96])[_0xa97d('0x1b')](function(_0x146e6b){var _0x123b77=_0x146e6b[0x0];var _0x23d2b5=_0x146e6b[0x1];var _0x3dab35=_[_0xa97d('0x21')](_0x123b77[_0xa97d('0x42')],function(_0x224f97){return _0x224f97[_0xa97d('0x43')]==_0x23d2b5['id'];});return _0x35fc17[_0xa97d('0x17')](0xc8)[_0xa97d('0x29')]({'count':_0x3dab35[_0xa97d('0x28')],'rows':_0x3dab35});})[_0xa97d('0x31')](handleError(_0x35fc17));};exports[_0xa97d('0x44')]=function(_0x592350,_0x52fa0d){logger[_0xa97d('0x2d')](_0xa97d('0x45'),_0x592350[_0xa97d('0x27')]);var _0xbeb690=conferenceValidation[_0xa97d('0xb')](_0x592350[_0xa97d('0x27')]);if(_0xbeb690['length']>0x0){return _0x52fa0d[_0xa97d('0x17')](0x190)[_0xa97d('0x29')](_0xbeb690);}var _0x3833c4=_0x592350['body'][_0xa97d('0x2a')];return getAgent(_0x3833c4)[_0xa97d('0x1b')](function(_0x59e8e2){logger[_0xa97d('0x2d')]('entityFound:',_0x59e8e2[_0xa97d('0x16')]);emit(util[_0xa97d('0x33')]('user:%s',_0x59e8e2['name']),_0xa97d('0x46'));return _0x52fa0d[_0xa97d('0x17')](0xc8)[_0xa97d('0x29')]({'error':![],'message':_0xa97d('0x47')});})['catch'](handleError(_0x52fa0d));};exports[_0xa97d('0x48')]=function(_0x352356,_0x5ce470){logger['info']('transfer\x20fired:',_0x352356[_0xa97d('0x27')]);var _0xa6f234=transferValidation['validate'](_0x352356['body']);if(_0xa6f234['length']>0x0){return _0x5ce470[_0xa97d('0x17')](0x190)[_0xa97d('0x29')](_0xa6f234);}var _0x455a57=_0x352356[_0xa97d('0x27')][_0xa97d('0x2a')];var _0x2e8d9b=_0x352356[_0xa97d('0x27')][_0xa97d('0x22')];var _0x29152c=_0x352356[_0xa97d('0x27')][_0xa97d('0x49')];return getAgent(_0x455a57)[_0xa97d('0x1b')](function(_0x453274){logger[_0xa97d('0x2d')](_0xa97d('0x2e'),_0x453274[_0xa97d('0x16')]);emit(util[_0xa97d('0x33')](_0xa97d('0x2f'),_0x453274[_0xa97d('0x16')]),_0xa97d('0x4a'),{'sessionId':_0x2e8d9b,'transferNumber':_0x29152c});return _0x5ce470[_0xa97d('0x17')](0xc8)[_0xa97d('0x29')]({'error':![],'message':'transfer\x20executed!'});})[_0xa97d('0x31')](handleError(_0x5ce470));};