Built motion from commit (unavailable).|2.5.29
[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 _0x21d1=['transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','http','../../config/logger','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','info','stringify','emit','error','stack','name','status','send','NotFound','request','then','code','message','result','catch','User','agent','VoiceChannels','all','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','unhold\x20fired:','webbar:unhold','calls','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:'];(function(_0x1c713f,_0x36e1a3){var _0x2ebfa6=function(_0xee2bae){while(--_0xee2bae){_0x1c713f['push'](_0x1c713f['shift']());}};_0x2ebfa6(++_0x36e1a3);}(_0x21d1,0x1c9));var _0x121d=function(_0x3eb2c2,_0x55c6c5){_0x3eb2c2=_0x3eb2c2-0x0;var _0x3ded42=_0x21d1[_0x3eb2c2];return _0x3ded42;};'use strict';var path=require(_0x121d('0x0'));var fs=require('fs');var _=require(_0x121d('0x1'));var db=require(_0x121d('0x2'))['db'];var config=require(_0x121d('0x3'));var util=require(_0x121d('0x4'));var BPromise=require(_0x121d('0x5'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x121d('0x6')]({'port':0x232a});var logger=require(_0x121d('0x7'))(_0x121d('0x8'));var Redis=require(_0x121d('0x9'));config[_0x121d('0xa')]=_['defaults'](config[_0x121d('0xa')],{'host':_0x121d('0xb'),'port':0x18eb});var io=require(_0x121d('0xc'))(new Redis(config[_0x121d('0xa')]));var Schema=require(_0x121d('0xd'));var originateValidation=new Schema({'userId':{'type':_0x121d('0xe'),'required':[!![],_0x121d('0xf')]},'callNumber':{'type':_0x121d('0x10'),'required':[!![],_0x121d('0x11')]},'callerId':{'type':_0x121d('0x10')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x121d('0xe'),'required':[!![],_0x121d('0xf')]},'sessionId':{'type':_0x121d('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x121d('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x121d('0xe'),'required':[!![],_0x121d('0xf')]},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x121d('0x10'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x121d('0xe'),'required':[!![],_0x121d('0xf')]},'sessionId':{'type':_0x121d('0x10'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x121d('0xf')]},'sessionId':{'type':_0x121d('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x121d('0xe'),'required':[!![],_0x121d('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':_0x121d('0xe'),'required':[!![],_0x121d('0xf')]}});function emit(_0xbd872f,_0x317b8a,_0x37cb0d){logger[_0x121d('0x12')](_0xbd872f,_0x317b8a,JSON[_0x121d('0x13')](_0x37cb0d));io['to'](_0xbd872f)[_0x121d('0x14')](_0x317b8a,_0x37cb0d);}function handleError(_0x1f93d){return function(_0x5aee6a){console['log']('handleError:',_0x5aee6a,_0x5aee6a instanceof RangeError);logger[_0x121d('0x15')](_0x5aee6a[_0x121d('0x16')]);if(_0x5aee6a instanceof RangeError){if(_0x5aee6a['name']){delete _0x5aee6a[_0x121d('0x17')];}_0x1f93d[_0x121d('0x18')](0x194)[_0x121d('0x19')](_0x5aee6a);}else{if(_0x5aee6a[_0x121d('0x17')]){delete _0x5aee6a[_0x121d('0x17')];}_0x1f93d[_0x121d('0x18')](0x1f4)[_0x121d('0x19')](_0x5aee6a);}};}function checkError(){return function(_0x25844d){if(!_0x25844d){throw new RangeError(_0x121d('0x1a'));}return _0x25844d;};}function respondWithRpcPromise(_0x3c6ff2,_0x1b8e6d){return new BPromise(function(_0x2f8e6d,_0x15da0f){var _0x9e6d43=amiClient;return _0x9e6d43[_0x121d('0x1b')](_0x3c6ff2,_0x1b8e6d)[_0x121d('0x1c')](function(_0x3880fd){if(_0x3880fd[_0x121d('0x15')]){if(_0x3880fd[_0x121d('0x15')][_0x121d('0x1d')]===0x1f4){return _0x15da0f(_0x3880fd[_0x121d('0x15')]['message']);}return _0x2f8e6d(_0x3880fd[_0x121d('0x15')][_0x121d('0x1e')]);}else{_0x2f8e6d(_0x3880fd[_0x121d('0x1f')]);}})[_0x121d('0x20')](function(_0x11f28d){_0x15da0f(_0x11f28d);});});}function getAgent(_0x52ed34){return db[_0x121d('0x21')]['findOne']({'where':{'id':_0x52ed34,'role':_0x121d('0x22')}})[_0x121d('0x1c')](checkError());}function getAgentCheckSession(_0x4762fb,_0x485aae){return new BPromise(function(_0x1683b0,_0x3156b5){var _0x6cb2ce=respondWithRpcPromise(_0x121d('0x23'));var _0x309e30=getAgent(_0x4762fb);Promise[_0x121d('0x24')]([_0x6cb2ce,_0x309e30])['then'](function(_0x3c041c){var _0x4e1b05=_0x3c041c[0x0];var _0x314495=_0x3c041c[0x1];var _0xce0cac=_[_0x121d('0x25')](_0x4e1b05['rows'],function(_0x4af0a9){return _0x4af0a9[_0x121d('0x26')]==_0x314495['id']&&_0x4af0a9[_0x121d('0x27')]==_0x485aae;});if(_0xce0cac[_0x121d('0x28')]==0x1){_0x1683b0(_0x314495);}else{_0x3156b5(new RangeError(_0x121d('0x29')+_0x485aae+_0x121d('0x2a')));}});});}exports[_0x121d('0x2b')]=function(_0x1407e3,_0x4d5314){logger[_0x121d('0x12')](_0x121d('0x2c'),_0x1407e3[_0x121d('0x2d')]);var _0x23fd5f=originateValidation[_0x121d('0xd')](_0x1407e3[_0x121d('0x2d')]);if(_0x23fd5f[_0x121d('0x28')]>0x0){return _0x4d5314[_0x121d('0x18')](0x190)['json'](_0x23fd5f);}var _0x42a248=_0x1407e3[_0x121d('0x2d')][_0x121d('0x2e')];var _0x42781d=_0x1407e3[_0x121d('0x2d')][_0x121d('0x2f')];var _0x808fc6=_0x1407e3[_0x121d('0x2d')][_0x121d('0x30')];var _0x4af480=_0x1407e3[_0x121d('0x2d')][_0x121d('0x31')];return getAgent(_0x42a248)[_0x121d('0x1c')](function(_0x5cf4b8){logger[_0x121d('0x12')](_0x121d('0x32'),_0x5cf4b8[_0x121d('0x17')]);emit(util[_0x121d('0x33')](_0x121d('0x34'),_0x5cf4b8[_0x121d('0x17')]),_0x121d('0x35'),{'callNumber':_0x42781d,'callerId':_0x808fc6,'callbackUrl':_0x4af480});return _0x4d5314['status'](0xc8)[_0x121d('0x36')]({'error':![],'message':_0x121d('0x37')});})[_0x121d('0x20')](handleError(_0x4d5314));};exports[_0x121d('0x38')]=function(_0x4b6e54,_0x476733){logger[_0x121d('0x12')](_0x121d('0x39'),_0x4b6e54[_0x121d('0x2d')]);var _0x3d3152=hangupValidation[_0x121d('0xd')](_0x4b6e54[_0x121d('0x2d')]);if(_0x3d3152['length']>0x0){return _0x476733[_0x121d('0x18')](0x190)[_0x121d('0x36')](_0x3d3152);}var _0x635919=_0x4b6e54[_0x121d('0x2d')][_0x121d('0x2e')];var _0x246cc9=_0x4b6e54[_0x121d('0x2d')]['sessionId'];return getAgent(_0x635919)[_0x121d('0x1c')](function(_0x5579c3){logger['info'](_0x121d('0x32'),_0x5579c3[_0x121d('0x17')]);emit(util[_0x121d('0x33')]('user:%s',_0x5579c3['name']),_0x121d('0x3a'),{'sessionId':_0x246cc9});return _0x476733['status'](0xc8)[_0x121d('0x36')]({'error':![],'message':_0x121d('0x3b')});})['catch'](handleError(_0x476733));};exports[_0x121d('0x3c')]=function(_0x1881c6,_0x4ff2ae){logger['info'](_0x121d('0x3d'),_0x1881c6[_0x121d('0x2d')]);var _0x4e2f8b=answerValidation['validate'](_0x1881c6['body']);if(_0x4e2f8b['length']>0x0){return _0x4ff2ae[_0x121d('0x18')](0x190)[_0x121d('0x36')](_0x4e2f8b);}var _0x344ba4=_0x1881c6[_0x121d('0x2d')][_0x121d('0x2e')];var _0x28aa26=_0x1881c6[_0x121d('0x2d')][_0x121d('0x27')];return getAgent(_0x344ba4)['then'](function(_0x3fb219){logger[_0x121d('0x12')]('entityFound:',_0x3fb219[_0x121d('0x17')]);emit(util[_0x121d('0x33')]('user:%s',_0x3fb219[_0x121d('0x17')]),_0x121d('0x3e'),{'sessionId':_0x28aa26});return _0x4ff2ae[_0x121d('0x18')](0xc8)[_0x121d('0x36')]({'error':![],'message':_0x121d('0x3f')});})[_0x121d('0x20')](handleError(_0x4ff2ae));};exports['hold']=function(_0x52f184,_0x303723){logger[_0x121d('0x12')](_0x121d('0x40'),_0x52f184[_0x121d('0x2d')]);var _0x1d4f3c=holdValidation[_0x121d('0xd')](_0x52f184[_0x121d('0x2d')]);if(_0x1d4f3c['length']>0x0){return _0x303723[_0x121d('0x18')](0x190)['json'](_0x1d4f3c);}var _0x275c79=_0x52f184['body'][_0x121d('0x2e')];var _0x22f878=_0x52f184['body'][_0x121d('0x27')];return getAgent(_0x275c79)[_0x121d('0x1c')](function(_0x2039ff){logger[_0x121d('0x12')](_0x121d('0x32'),_0x2039ff[_0x121d('0x17')]);emit(util[_0x121d('0x33')]('user:%s',_0x2039ff[_0x121d('0x17')]),_0x121d('0x41'),{'sessionId':_0x22f878});return _0x303723[_0x121d('0x18')](0xc8)[_0x121d('0x36')]({'error':![],'message':'hold\x20executed!'});})[_0x121d('0x20')](handleError(_0x303723));};exports['unhold']=function(_0x10318f,_0x2034d7){logger['info'](_0x121d('0x42'),_0x10318f[_0x121d('0x2d')]);var _0x5c2824=unholdValidation[_0x121d('0xd')](_0x10318f[_0x121d('0x2d')]);if(_0x5c2824['length']>0x0){return _0x2034d7['status'](0x190)[_0x121d('0x36')](_0x5c2824);}var _0x4be935=_0x10318f[_0x121d('0x2d')][_0x121d('0x2e')];var _0x15f120=_0x10318f['body']['sessionId'];return getAgent(_0x4be935)[_0x121d('0x1c')](function(_0x53684e){logger[_0x121d('0x12')](_0x121d('0x32'),_0x53684e['name']);emit(util[_0x121d('0x33')](_0x121d('0x34'),_0x53684e[_0x121d('0x17')]),_0x121d('0x43'),{'sessionId':_0x15f120});return _0x2034d7[_0x121d('0x18')](0xc8)[_0x121d('0x36')]({'error':![],'message':'unhold\x20executed!'});})[_0x121d('0x20')](handleError(_0x2034d7));};exports[_0x121d('0x44')]=function(_0x41986a,_0x4fdc98){logger[_0x121d('0x12')]('calls\x20fired:',_0x4fdc98['body']);var _0x8313f2=callsValidation[_0x121d('0xd')](_0x41986a[_0x121d('0x2d')]);if(_0x8313f2[_0x121d('0x28')]>0x0){return _0x4fdc98[_0x121d('0x18')](0x190)[_0x121d('0x36')](_0x8313f2);}var _0x583eec=_0x41986a['body'][_0x121d('0x2e')];var _0x4ad34f=respondWithRpcPromise(_0x121d('0x23'));var _0x2cfee4=getAgent(_0x583eec);return Promise[_0x121d('0x24')]([_0x4ad34f,_0x2cfee4])['then'](function(_0x45b1f4){var _0x151978=_0x45b1f4[0x0];var _0x4d7b4c=_0x45b1f4[0x1];var _0x823a0e=_[_0x121d('0x25')](_0x151978['rows'],function(_0x5f2b91){return _0x5f2b91['UserId']==_0x4d7b4c['id'];});return _0x4fdc98['status'](0xc8)[_0x121d('0x36')]({'count':_0x823a0e[_0x121d('0x28')],'rows':_0x823a0e});})[_0x121d('0x20')](handleError(_0x4fdc98));};exports[_0x121d('0x45')]=function(_0x1516f8,_0x2f53ae){logger[_0x121d('0x12')](_0x121d('0x46'),_0x1516f8[_0x121d('0x2d')]);var _0x5c358a=conferenceValidation[_0x121d('0xd')](_0x1516f8[_0x121d('0x2d')]);if(_0x5c358a['length']>0x0){return _0x2f53ae[_0x121d('0x18')](0x190)[_0x121d('0x36')](_0x5c358a);}var _0x3bf565=_0x1516f8[_0x121d('0x2d')][_0x121d('0x2e')];return getAgent(_0x3bf565)[_0x121d('0x1c')](function(_0x5cc26a){logger[_0x121d('0x12')](_0x121d('0x32'),_0x5cc26a[_0x121d('0x17')]);emit(util[_0x121d('0x33')](_0x121d('0x34'),_0x5cc26a[_0x121d('0x17')]),_0x121d('0x47'));return _0x2f53ae[_0x121d('0x18')](0xc8)[_0x121d('0x36')]({'error':![],'message':_0x121d('0x48')});})[_0x121d('0x20')](handleError(_0x2f53ae));};exports[_0x121d('0x49')]=function(_0x5aad11,_0x493576){logger[_0x121d('0x12')](_0x121d('0x4a'),_0x5aad11[_0x121d('0x2d')]);var _0x5686d1=transferValidation[_0x121d('0xd')](_0x5aad11['body']);if(_0x5686d1[_0x121d('0x28')]>0x0){return _0x493576[_0x121d('0x18')](0x190)['json'](_0x5686d1);}var _0x4e9240=_0x5aad11['body']['userId'];var _0x23759f=_0x5aad11[_0x121d('0x2d')][_0x121d('0x27')];var _0x5d8461=_0x5aad11[_0x121d('0x2d')]['transferNumber'];return getAgent(_0x4e9240)[_0x121d('0x1c')](function(_0x289432){logger[_0x121d('0x12')](_0x121d('0x32'),_0x289432['name']);emit(util[_0x121d('0x33')]('user:%s',_0x289432[_0x121d('0x17')]),'webbar:transfer',{'sessionId':_0x23759f,'transferNumber':_0x5d8461});return _0x493576[_0x121d('0x18')](0xc8)[_0x121d('0x36')]({'error':![],'message':_0x121d('0x4b')});})[_0x121d('0x20')](handleError(_0x493576));};