Built motion from commit (unavailable).|2.5.2
[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 _0xa1f1=['NotFound','request','then','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup\x20fired:','json','webbar:hangup','hangup\x20executed!','answer','user:%s','hold','hold\x20fired:','sessionId','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','webbar:conference','conference\x20executed!','transfer','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','handleError:','error','name','status','send'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0xa1f1,0x7b));var _0x1a1f=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0xa1f1[_0x2283dc];return _0x16db90;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x1a1f('0x0'));var db=require(_0x1a1f('0x1'))['db'];var config=require(_0x1a1f('0x2'));var util=require('util');var BPromise=require('bluebird');var jayson=require(_0x1a1f('0x3'));var amiClient=jayson[_0x1a1f('0x4')][_0x1a1f('0x5')]({'port':0x232a});var logger=require(_0x1a1f('0x6'))(_0x1a1f('0x7'));var Redis=require(_0x1a1f('0x8'));config[_0x1a1f('0x9')]=_[_0x1a1f('0xa')](config[_0x1a1f('0x9')],{'host':_0x1a1f('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1a1f('0x9')]));var Schema=require(_0x1a1f('0xc'));var originateValidation=new Schema({'userId':{'type':_0x1a1f('0xd'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0x1a1f('0xe'),'required':[!![],_0x1a1f('0xf')]},'callerId':{'type':_0x1a1f('0xe')},'callbackUrl':{'type':_0x1a1f('0xe')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x1a1f('0x10')]},'sessionId':{'type':_0x1a1f('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1a1f('0xd'),'required':[!![],_0x1a1f('0x10')]},'sessionId':{'type':_0x1a1f('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x1a1f('0xd'),'required':[!![],_0x1a1f('0x10')]},'sessionId':{'type':'string','required':[!![],_0x1a1f('0x11')]},'transferNumber':{'type':_0x1a1f('0xe'),'required':[!![],_0x1a1f('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x1a1f('0xd'),'required':[!![],_0x1a1f('0x10')]},'sessionId':{'type':_0x1a1f('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x1a1f('0xd'),'required':[!![],_0x1a1f('0x10')]},'sessionId':{'type':_0x1a1f('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x1a1f('0xd'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x1a1f('0xd'),'required':[!![],_0x1a1f('0x10')]}});function emit(_0x4edb94,_0x4307d8,_0x24fe40){logger[_0x1a1f('0x13')](_0x4edb94,_0x4307d8,JSON['stringify'](_0x24fe40));io['to'](_0x4edb94)['emit'](_0x4307d8,_0x24fe40);}function handleError(_0x323f15){return function(_0x44d4b8){console['log'](_0x1a1f('0x14'),_0x44d4b8,_0x44d4b8 instanceof RangeError);logger[_0x1a1f('0x15')](_0x44d4b8['stack']);if(_0x44d4b8 instanceof RangeError){if(_0x44d4b8['name']){delete _0x44d4b8[_0x1a1f('0x16')];}_0x323f15[_0x1a1f('0x17')](0x194)[_0x1a1f('0x18')](_0x44d4b8);}else{if(_0x44d4b8[_0x1a1f('0x16')]){delete _0x44d4b8['name'];}_0x323f15[_0x1a1f('0x17')](0x1f4)[_0x1a1f('0x18')](_0x44d4b8);}};}function checkError(){return function(_0x3d114f){if(!_0x3d114f){throw new RangeError(_0x1a1f('0x19'));}return _0x3d114f;};}function respondWithRpcPromise(_0x53c1b7,_0x3b56b3){return new BPromise(function(_0x24e4eb,_0x52e524){var _0xe77dcf=amiClient;return _0xe77dcf[_0x1a1f('0x1a')](_0x53c1b7,_0x3b56b3)[_0x1a1f('0x1b')](function(_0x1dedb2){if(_0x1dedb2['error']){if(_0x1dedb2[_0x1a1f('0x15')]['code']===0x1f4){return _0x52e524(_0x1dedb2[_0x1a1f('0x15')][_0x1a1f('0x1c')]);}return _0x24e4eb(_0x1dedb2[_0x1a1f('0x15')][_0x1a1f('0x1c')]);}else{_0x24e4eb(_0x1dedb2[_0x1a1f('0x1d')]);}})[_0x1a1f('0x1e')](function(_0x4870e2){_0x52e524(_0x4870e2);});});}function getAgent(_0x418e71){return db[_0x1a1f('0x1f')][_0x1a1f('0x20')]({'where':{'id':_0x418e71,'role':_0x1a1f('0x21')}})[_0x1a1f('0x1b')](checkError());}function getAgentCheckSession(_0x1b1db8,_0x5bccfe){return new BPromise(function(_0x48e156,_0x3ec9a6){var _0x3711db=respondWithRpcPromise(_0x1a1f('0x22'));var _0x4e1012=getAgent(_0x1b1db8);Promise[_0x1a1f('0x23')]([_0x3711db,_0x4e1012])[_0x1a1f('0x1b')](function(_0x4b46ff){var _0x5a0d96=_0x4b46ff[0x0];var _0x49ac8=_0x4b46ff[0x1];var _0x1dd470=_[_0x1a1f('0x24')](_0x5a0d96[_0x1a1f('0x25')],function(_0x46f627){return _0x46f627[_0x1a1f('0x26')]==_0x49ac8['id']&&_0x46f627['sessionId']==_0x5bccfe;});if(_0x1dd470[_0x1a1f('0x27')]==0x1){_0x48e156(_0x49ac8);}else{_0x3ec9a6(new RangeError(_0x1a1f('0x28')+_0x5bccfe+_0x1a1f('0x29')));}});});}exports[_0x1a1f('0x2a')]=function(_0x5ea720,_0x4b58f3){logger['info'](_0x1a1f('0x2b'),_0x5ea720[_0x1a1f('0x2c')]);var _0x873fa6=originateValidation[_0x1a1f('0xc')](_0x5ea720[_0x1a1f('0x2c')]);if(_0x873fa6[_0x1a1f('0x27')]>0x0){return _0x4b58f3['status'](0x190)['json'](_0x873fa6);}var _0x19c91e=_0x5ea720[_0x1a1f('0x2c')][_0x1a1f('0x2d')];var _0x4ede29=_0x5ea720[_0x1a1f('0x2c')][_0x1a1f('0x2e')];var _0x59921e=_0x5ea720['body'][_0x1a1f('0x2f')];var _0x27851d=_0x5ea720[_0x1a1f('0x2c')][_0x1a1f('0x30')];return getAgent(_0x19c91e)[_0x1a1f('0x1b')](function(_0x504797){logger[_0x1a1f('0x13')](_0x1a1f('0x31'),_0x504797[_0x1a1f('0x16')]);emit(util[_0x1a1f('0x32')]('user:%s',_0x504797['name']),_0x1a1f('0x33'),{'callNumber':_0x4ede29,'callerId':_0x59921e,'callbackUrl':_0x27851d});return _0x4b58f3[_0x1a1f('0x17')](0xc8)['json']({'error':![],'message':_0x1a1f('0x34')});})['catch'](handleError(_0x4b58f3));};exports['hangup']=function(_0x1a858f,_0x20fa3a){logger[_0x1a1f('0x13')](_0x1a1f('0x35'),_0x1a858f[_0x1a1f('0x2c')]);var _0x47bcce=hangupValidation[_0x1a1f('0xc')](_0x1a858f[_0x1a1f('0x2c')]);if(_0x47bcce[_0x1a1f('0x27')]>0x0){return _0x20fa3a['status'](0x190)[_0x1a1f('0x36')](_0x47bcce);}var _0x3d7586=_0x1a858f[_0x1a1f('0x2c')][_0x1a1f('0x2d')];var _0x279d37=_0x1a858f[_0x1a1f('0x2c')]['sessionId'];return getAgent(_0x3d7586)[_0x1a1f('0x1b')](function(_0x2af0c6){logger[_0x1a1f('0x13')](_0x1a1f('0x31'),_0x2af0c6[_0x1a1f('0x16')]);emit(util[_0x1a1f('0x32')]('user:%s',_0x2af0c6[_0x1a1f('0x16')]),_0x1a1f('0x37'),{'sessionId':_0x279d37});return _0x20fa3a['status'](0xc8)[_0x1a1f('0x36')]({'error':![],'message':_0x1a1f('0x38')});})[_0x1a1f('0x1e')](handleError(_0x20fa3a));};exports[_0x1a1f('0x39')]=function(_0x41ebee,_0x1a7f05){logger['info']('answer\x20fired:',_0x41ebee[_0x1a1f('0x2c')]);var _0x4eaa29=answerValidation['validate'](_0x41ebee[_0x1a1f('0x2c')]);if(_0x4eaa29[_0x1a1f('0x27')]>0x0){return _0x1a7f05[_0x1a1f('0x17')](0x190)[_0x1a1f('0x36')](_0x4eaa29);}var _0x40bcc3=_0x41ebee[_0x1a1f('0x2c')]['userId'];var _0x5f9d1f=_0x41ebee[_0x1a1f('0x2c')]['sessionId'];return getAgent(_0x40bcc3)['then'](function(_0x3d4d82){logger[_0x1a1f('0x13')](_0x1a1f('0x31'),_0x3d4d82[_0x1a1f('0x16')]);emit(util[_0x1a1f('0x32')](_0x1a1f('0x3a'),_0x3d4d82[_0x1a1f('0x16')]),'webbar:answer',{'sessionId':_0x5f9d1f});return _0x1a7f05['status'](0xc8)[_0x1a1f('0x36')]({'error':![],'message':'answer\x20executed!'});})[_0x1a1f('0x1e')](handleError(_0x1a7f05));};exports[_0x1a1f('0x3b')]=function(_0x11143d,_0x529b6d){logger[_0x1a1f('0x13')](_0x1a1f('0x3c'),_0x11143d[_0x1a1f('0x2c')]);var _0x305114=holdValidation['validate'](_0x11143d[_0x1a1f('0x2c')]);if(_0x305114[_0x1a1f('0x27')]>0x0){return _0x529b6d[_0x1a1f('0x17')](0x190)[_0x1a1f('0x36')](_0x305114);}var _0x506405=_0x11143d[_0x1a1f('0x2c')]['userId'];var _0x235a88=_0x11143d[_0x1a1f('0x2c')][_0x1a1f('0x3d')];return getAgent(_0x506405)[_0x1a1f('0x1b')](function(_0x450c2f){logger['info'](_0x1a1f('0x31'),_0x450c2f[_0x1a1f('0x16')]);emit(util['format']('user:%s',_0x450c2f[_0x1a1f('0x16')]),'webbar:hold',{'sessionId':_0x235a88});return _0x529b6d[_0x1a1f('0x17')](0xc8)[_0x1a1f('0x36')]({'error':![],'message':'hold\x20executed!'});})[_0x1a1f('0x1e')](handleError(_0x529b6d));};exports[_0x1a1f('0x3e')]=function(_0x1b3fb1,_0xf221ad){logger['info'](_0x1a1f('0x3f'),_0x1b3fb1[_0x1a1f('0x2c')]);var _0x1f7d12=unholdValidation[_0x1a1f('0xc')](_0x1b3fb1[_0x1a1f('0x2c')]);if(_0x1f7d12[_0x1a1f('0x27')]>0x0){return _0xf221ad[_0x1a1f('0x17')](0x190)['json'](_0x1f7d12);}var _0x2fd133=_0x1b3fb1[_0x1a1f('0x2c')][_0x1a1f('0x2d')];var _0x1e36b1=_0x1b3fb1[_0x1a1f('0x2c')][_0x1a1f('0x3d')];return getAgent(_0x2fd133)[_0x1a1f('0x1b')](function(_0x3fa30e){logger['info']('entityFound:',_0x3fa30e[_0x1a1f('0x16')]);emit(util['format'](_0x1a1f('0x3a'),_0x3fa30e[_0x1a1f('0x16')]),_0x1a1f('0x40'),{'sessionId':_0x1e36b1});return _0xf221ad['status'](0xc8)['json']({'error':![],'message':_0x1a1f('0x41')});})[_0x1a1f('0x1e')](handleError(_0xf221ad));};exports[_0x1a1f('0x42')]=function(_0x17c011,_0x4b6988){logger[_0x1a1f('0x13')](_0x1a1f('0x43'),_0x4b6988['body']);var _0x3e9f4c=callsValidation[_0x1a1f('0xc')](_0x17c011[_0x1a1f('0x2c')]);if(_0x3e9f4c[_0x1a1f('0x27')]>0x0){return _0x4b6988[_0x1a1f('0x17')](0x190)[_0x1a1f('0x36')](_0x3e9f4c);}var _0x3e6632=_0x17c011[_0x1a1f('0x2c')]['userId'];var _0xa6212e=respondWithRpcPromise('VoiceChannels');var _0x18d0c6=getAgent(_0x3e6632);return Promise[_0x1a1f('0x23')]([_0xa6212e,_0x18d0c6])[_0x1a1f('0x1b')](function(_0x5f0ece){var _0x1a8846=_0x5f0ece[0x0];var _0x45824e=_0x5f0ece[0x1];var _0xf562fe=_[_0x1a1f('0x24')](_0x1a8846['rows'],function(_0x738e1e){return _0x738e1e['UserId']==_0x45824e['id'];});return _0x4b6988[_0x1a1f('0x17')](0xc8)[_0x1a1f('0x36')]({'count':_0xf562fe[_0x1a1f('0x27')],'rows':_0xf562fe});})[_0x1a1f('0x1e')](handleError(_0x4b6988));};exports[_0x1a1f('0x44')]=function(_0x3afd5a,_0x587c43){logger['info']('conference\x20fired:',_0x3afd5a[_0x1a1f('0x2c')]);var _0x3dbb6b=conferenceValidation[_0x1a1f('0xc')](_0x3afd5a[_0x1a1f('0x2c')]);if(_0x3dbb6b[_0x1a1f('0x27')]>0x0){return _0x587c43[_0x1a1f('0x17')](0x190)[_0x1a1f('0x36')](_0x3dbb6b);}var _0x15d4ff=_0x3afd5a[_0x1a1f('0x2c')]['userId'];return getAgent(_0x15d4ff)['then'](function(_0x1c9c8c){logger[_0x1a1f('0x13')](_0x1a1f('0x31'),_0x1c9c8c[_0x1a1f('0x16')]);emit(util[_0x1a1f('0x32')]('user:%s',_0x1c9c8c['name']),_0x1a1f('0x45'));return _0x587c43[_0x1a1f('0x17')](0xc8)[_0x1a1f('0x36')]({'error':![],'message':_0x1a1f('0x46')});})[_0x1a1f('0x1e')](handleError(_0x587c43));};exports[_0x1a1f('0x47')]=function(_0x53fd0e,_0x3cd372){logger['info']('transfer\x20fired:',_0x53fd0e[_0x1a1f('0x2c')]);var _0x1574e1=transferValidation[_0x1a1f('0xc')](_0x53fd0e[_0x1a1f('0x2c')]);if(_0x1574e1[_0x1a1f('0x27')]>0x0){return _0x3cd372['status'](0x190)[_0x1a1f('0x36')](_0x1574e1);}var _0x1755ff=_0x53fd0e[_0x1a1f('0x2c')][_0x1a1f('0x2d')];var _0x1349b9=_0x53fd0e[_0x1a1f('0x2c')][_0x1a1f('0x3d')];var _0x2bd41c=_0x53fd0e[_0x1a1f('0x2c')]['transferNumber'];return getAgent(_0x1755ff)[_0x1a1f('0x1b')](function(_0x5bd8d8){logger[_0x1a1f('0x13')](_0x1a1f('0x31'),_0x5bd8d8[_0x1a1f('0x16')]);emit(util[_0x1a1f('0x32')]('user:%s',_0x5bd8d8[_0x1a1f('0x16')]),_0x1a1f('0x48'),{'sessionId':_0x1349b9,'transferNumber':_0x2bd41c});return _0x3cd372[_0x1a1f('0x17')](0xc8)[_0x1a1f('0x36')]({'error':![],'message':_0x1a1f('0x49')});})[_0x1a1f('0x1e')](handleError(_0x3cd372));};