Built motion from commit (unavailable).|2.5.31
[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 _0x385b=['request','then','error','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','length','originate','originate\x20fired:','body','json','userId','callNumber','callerId','entityFound:','originate\x20executed!','hangup','hangup\x20fired:','sessionId','format','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','answer\x20executed!','hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','UserId','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','lodash','../../config/environment','util','bluebird','jayson/promise','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','info','stringify','emit','log','handleError:','stack','name','send','status','NotFound'];(function(_0x2a31af,_0x389bae){var _0x11a02e=function(_0x185609){while(--_0x185609){_0x2a31af['push'](_0x2a31af['shift']());}};_0x11a02e(++_0x389bae);}(_0x385b,0x1a7));var _0xb385=function(_0x5a0383,_0x312ffe){_0x5a0383=_0x5a0383-0x0;var _0x1adda7=_0x385b[_0x5a0383];return _0x1adda7;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xb385('0x0'));var db=require('../../mysqldb')['db'];var config=require(_0xb385('0x1'));var util=require(_0xb385('0x2'));var BPromise=require(_0xb385('0x3'));var jayson=require(_0xb385('0x4'));var amiClient=jayson['client'][_0xb385('0x5')]({'port':0x232a});var logger=require(_0xb385('0x6'))(_0xb385('0x7'));var Redis=require(_0xb385('0x8'));config[_0xb385('0x9')]=_[_0xb385('0xa')](config[_0xb385('0x9')],{'host':_0xb385('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb385('0x9')]));var Schema=require(_0xb385('0xc'));var originateValidation=new Schema({'userId':{'type':_0xb385('0xd'),'required':[!![],_0xb385('0xe')]},'callNumber':{'type':'string','required':[!![],_0xb385('0xf')]},'callerId':{'type':_0xb385('0x10')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xb385('0xd'),'required':[!![],_0xb385('0xe')]},'sessionId':{'type':_0xb385('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb385('0xd'),'required':[!![],_0xb385('0xe')]},'sessionId':{'type':_0xb385('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb385('0xe')]},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xb385('0x10'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0xb385('0xd'),'required':[!![],_0xb385('0xe')]},'sessionId':{'type':_0xb385('0x10'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb385('0xe')]},'sessionId':{'type':_0xb385('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xb385('0xd'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0xb385('0xd'),'required':[!![],_0xb385('0xe')]}});function emit(_0x604941,_0x5401ff,_0x32199e){logger[_0xb385('0x11')](_0x604941,_0x5401ff,JSON[_0xb385('0x12')](_0x32199e));io['to'](_0x604941)[_0xb385('0x13')](_0x5401ff,_0x32199e);}function handleError(_0x23438e){return function(_0x665f54){console[_0xb385('0x14')](_0xb385('0x15'),_0x665f54,_0x665f54 instanceof RangeError);logger['error'](_0x665f54[_0xb385('0x16')]);if(_0x665f54 instanceof RangeError){if(_0x665f54[_0xb385('0x17')]){delete _0x665f54[_0xb385('0x17')];}_0x23438e['status'](0x194)[_0xb385('0x18')](_0x665f54);}else{if(_0x665f54[_0xb385('0x17')]){delete _0x665f54[_0xb385('0x17')];}_0x23438e[_0xb385('0x19')](0x1f4)[_0xb385('0x18')](_0x665f54);}};}function checkError(){return function(_0x1500ee){if(!_0x1500ee){throw new RangeError(_0xb385('0x1a'));}return _0x1500ee;};}function respondWithRpcPromise(_0x506a3e,_0x249326){return new BPromise(function(_0x23ab26,_0x1848b2){var _0x510e2b=amiClient;return _0x510e2b[_0xb385('0x1b')](_0x506a3e,_0x249326)[_0xb385('0x1c')](function(_0x5778c4){if(_0x5778c4[_0xb385('0x1d')]){if(_0x5778c4['error']['code']===0x1f4){return _0x1848b2(_0x5778c4[_0xb385('0x1d')]['message']);}return _0x23ab26(_0x5778c4['error'][_0xb385('0x1e')]);}else{_0x23ab26(_0x5778c4[_0xb385('0x1f')]);}})[_0xb385('0x20')](function(_0x66100c){_0x1848b2(_0x66100c);});});}function getAgent(_0x2fcd73){return db[_0xb385('0x21')][_0xb385('0x22')]({'where':{'id':_0x2fcd73,'role':_0xb385('0x23')}})[_0xb385('0x1c')](checkError());}function getAgentCheckSession(_0x276a31,_0x5c8be2){return new BPromise(function(_0x46e644,_0x115e4c){var _0x5f1c00=respondWithRpcPromise(_0xb385('0x24'));var _0x13fdb9=getAgent(_0x276a31);Promise[_0xb385('0x25')]([_0x5f1c00,_0x13fdb9])['then'](function(_0x35b30b){var _0x1c9a03=_0x35b30b[0x0];var _0x2a0eb4=_0x35b30b[0x1];var _0x3a10ea=_[_0xb385('0x26')](_0x1c9a03[_0xb385('0x27')],function(_0x541557){return _0x541557['UserId']==_0x2a0eb4['id']&&_0x541557['sessionId']==_0x5c8be2;});if(_0x3a10ea[_0xb385('0x28')]==0x1){_0x46e644(_0x2a0eb4);}else{_0x115e4c(new RangeError('sessionId\x20'+_0x5c8be2+'\x20not\x20found!'));}});});}exports[_0xb385('0x29')]=function(_0x5992ca,_0x40bd39){logger[_0xb385('0x11')](_0xb385('0x2a'),_0x5992ca[_0xb385('0x2b')]);var _0x3954c3=originateValidation[_0xb385('0xc')](_0x5992ca[_0xb385('0x2b')]);if(_0x3954c3[_0xb385('0x28')]>0x0){return _0x40bd39[_0xb385('0x19')](0x190)[_0xb385('0x2c')](_0x3954c3);}var _0x7f357d=_0x5992ca[_0xb385('0x2b')][_0xb385('0x2d')];var _0x25e12=_0x5992ca[_0xb385('0x2b')][_0xb385('0x2e')];var _0x5d09b6=_0x5992ca[_0xb385('0x2b')][_0xb385('0x2f')];var _0x5f19be=_0x5992ca[_0xb385('0x2b')]['callbackUrl'];return getAgent(_0x7f357d)['then'](function(_0x479239){logger['info'](_0xb385('0x30'),_0x479239[_0xb385('0x17')]);emit(util['format']('user:%s',_0x479239['name']),'webbar:originate',{'callNumber':_0x25e12,'callerId':_0x5d09b6,'callbackUrl':_0x5f19be});return _0x40bd39[_0xb385('0x19')](0xc8)['json']({'error':![],'message':_0xb385('0x31')});})['catch'](handleError(_0x40bd39));};exports[_0xb385('0x32')]=function(_0x2be60c,_0x5a1081){logger[_0xb385('0x11')](_0xb385('0x33'),_0x2be60c[_0xb385('0x2b')]);var _0x30ff41=hangupValidation[_0xb385('0xc')](_0x2be60c[_0xb385('0x2b')]);if(_0x30ff41[_0xb385('0x28')]>0x0){return _0x5a1081[_0xb385('0x19')](0x190)['json'](_0x30ff41);}var _0x1008d6=_0x2be60c[_0xb385('0x2b')][_0xb385('0x2d')];var _0x5dd591=_0x2be60c[_0xb385('0x2b')][_0xb385('0x34')];return getAgent(_0x1008d6)[_0xb385('0x1c')](function(_0x1468e3){logger[_0xb385('0x11')](_0xb385('0x30'),_0x1468e3[_0xb385('0x17')]);emit(util[_0xb385('0x35')](_0xb385('0x36'),_0x1468e3[_0xb385('0x17')]),_0xb385('0x37'),{'sessionId':_0x5dd591});return _0x5a1081[_0xb385('0x19')](0xc8)[_0xb385('0x2c')]({'error':![],'message':_0xb385('0x38')});})[_0xb385('0x20')](handleError(_0x5a1081));};exports[_0xb385('0x39')]=function(_0x1448c6,_0x1181cc){logger[_0xb385('0x11')](_0xb385('0x3a'),_0x1448c6['body']);var _0x5c7f4e=answerValidation['validate'](_0x1448c6[_0xb385('0x2b')]);if(_0x5c7f4e['length']>0x0){return _0x1181cc[_0xb385('0x19')](0x190)[_0xb385('0x2c')](_0x5c7f4e);}var _0x451a3f=_0x1448c6[_0xb385('0x2b')][_0xb385('0x2d')];var _0xe6e71a=_0x1448c6[_0xb385('0x2b')][_0xb385('0x34')];return getAgent(_0x451a3f)[_0xb385('0x1c')](function(_0x4e9346){logger[_0xb385('0x11')]('entityFound:',_0x4e9346[_0xb385('0x17')]);emit(util[_0xb385('0x35')](_0xb385('0x36'),_0x4e9346[_0xb385('0x17')]),'webbar:answer',{'sessionId':_0xe6e71a});return _0x1181cc['status'](0xc8)['json']({'error':![],'message':_0xb385('0x3b')});})[_0xb385('0x20')](handleError(_0x1181cc));};exports[_0xb385('0x3c')]=function(_0x599901,_0x51ced0){logger['info']('hold\x20fired:',_0x599901[_0xb385('0x2b')]);var _0x4b8240=holdValidation[_0xb385('0xc')](_0x599901[_0xb385('0x2b')]);if(_0x4b8240[_0xb385('0x28')]>0x0){return _0x51ced0[_0xb385('0x19')](0x190)[_0xb385('0x2c')](_0x4b8240);}var _0x3c20af=_0x599901[_0xb385('0x2b')][_0xb385('0x2d')];var _0xd735c5=_0x599901[_0xb385('0x2b')]['sessionId'];return getAgent(_0x3c20af)[_0xb385('0x1c')](function(_0x388400){logger[_0xb385('0x11')](_0xb385('0x30'),_0x388400[_0xb385('0x17')]);emit(util['format'](_0xb385('0x36'),_0x388400[_0xb385('0x17')]),'webbar:hold',{'sessionId':_0xd735c5});return _0x51ced0[_0xb385('0x19')](0xc8)[_0xb385('0x2c')]({'error':![],'message':_0xb385('0x3d')});})['catch'](handleError(_0x51ced0));};exports[_0xb385('0x3e')]=function(_0x467889,_0xdc8a92){logger['info'](_0xb385('0x3f'),_0x467889['body']);var _0x2af48b=unholdValidation[_0xb385('0xc')](_0x467889[_0xb385('0x2b')]);if(_0x2af48b[_0xb385('0x28')]>0x0){return _0xdc8a92[_0xb385('0x19')](0x190)['json'](_0x2af48b);}var _0x1b4fec=_0x467889[_0xb385('0x2b')][_0xb385('0x2d')];var _0x359b24=_0x467889[_0xb385('0x2b')][_0xb385('0x34')];return getAgent(_0x1b4fec)[_0xb385('0x1c')](function(_0x5d1794){logger[_0xb385('0x11')](_0xb385('0x30'),_0x5d1794['name']);emit(util[_0xb385('0x35')](_0xb385('0x36'),_0x5d1794[_0xb385('0x17')]),_0xb385('0x40'),{'sessionId':_0x359b24});return _0xdc8a92[_0xb385('0x19')](0xc8)['json']({'error':![],'message':'unhold\x20executed!'});})[_0xb385('0x20')](handleError(_0xdc8a92));};exports[_0xb385('0x41')]=function(_0xbae40b,_0x6fd429){logger[_0xb385('0x11')](_0xb385('0x42'),_0x6fd429[_0xb385('0x2b')]);var _0x393ca9=callsValidation['validate'](_0xbae40b[_0xb385('0x2b')]);if(_0x393ca9[_0xb385('0x28')]>0x0){return _0x6fd429[_0xb385('0x19')](0x190)[_0xb385('0x2c')](_0x393ca9);}var _0x117dc6=_0xbae40b[_0xb385('0x2b')][_0xb385('0x2d')];var _0x594abc=respondWithRpcPromise('VoiceChannels');var _0x4865b7=getAgent(_0x117dc6);return Promise[_0xb385('0x25')]([_0x594abc,_0x4865b7])[_0xb385('0x1c')](function(_0x2a37ad){var _0x459d5c=_0x2a37ad[0x0];var _0x7ee41=_0x2a37ad[0x1];var _0x5330ad=_['filter'](_0x459d5c['rows'],function(_0x8ec27c){return _0x8ec27c[_0xb385('0x43')]==_0x7ee41['id'];});return _0x6fd429[_0xb385('0x19')](0xc8)[_0xb385('0x2c')]({'count':_0x5330ad[_0xb385('0x28')],'rows':_0x5330ad});})['catch'](handleError(_0x6fd429));};exports['conference']=function(_0x41137a,_0x3a9957){logger[_0xb385('0x11')](_0xb385('0x44'),_0x41137a[_0xb385('0x2b')]);var _0x406f33=conferenceValidation[_0xb385('0xc')](_0x41137a[_0xb385('0x2b')]);if(_0x406f33[_0xb385('0x28')]>0x0){return _0x3a9957[_0xb385('0x19')](0x190)['json'](_0x406f33);}var _0x18a1a0=_0x41137a['body'][_0xb385('0x2d')];return getAgent(_0x18a1a0)['then'](function(_0x566706){logger['info'](_0xb385('0x30'),_0x566706['name']);emit(util[_0xb385('0x35')](_0xb385('0x36'),_0x566706[_0xb385('0x17')]),_0xb385('0x45'));return _0x3a9957[_0xb385('0x19')](0xc8)[_0xb385('0x2c')]({'error':![],'message':_0xb385('0x46')});})[_0xb385('0x20')](handleError(_0x3a9957));};exports[_0xb385('0x47')]=function(_0x45c5f4,_0x1fe96a){logger[_0xb385('0x11')](_0xb385('0x48'),_0x45c5f4[_0xb385('0x2b')]);var _0x306979=transferValidation[_0xb385('0xc')](_0x45c5f4[_0xb385('0x2b')]);if(_0x306979['length']>0x0){return _0x1fe96a[_0xb385('0x19')](0x190)[_0xb385('0x2c')](_0x306979);}var _0x28eaa6=_0x45c5f4['body'][_0xb385('0x2d')];var _0x40483e=_0x45c5f4[_0xb385('0x2b')]['sessionId'];var _0x3b6722=_0x45c5f4[_0xb385('0x2b')][_0xb385('0x49')];return getAgent(_0x28eaa6)[_0xb385('0x1c')](function(_0x5269d3){logger[_0xb385('0x11')](_0xb385('0x30'),_0x5269d3['name']);emit(util['format'](_0xb385('0x36'),_0x5269d3[_0xb385('0x17')]),_0xb385('0x4a'),{'sessionId':_0x40483e,'transferNumber':_0x3b6722});return _0x1fe96a[_0xb385('0x19')](0xc8)[_0xb385('0x2c')]({'error':![],'message':'transfer\x20executed!'});})[_0xb385('0x20')](handleError(_0x1fe96a));};