4bcfad0956869c33a572e1e5da774f83926716ea
[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 _0x2750=['../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','defaults','redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','transferNumber\x20is\x20required','info','handleError:','error','stack','name','status','send','NotFound','request','code','message','result','catch','User','agent','then','VoiceChannels','all','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','sessionId','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','filter','rows','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','webbar:transfer','path'];(function(_0x543a89,_0x31e8fd){var _0x52c8a9=function(_0x13d9f8){while(--_0x13d9f8){_0x543a89['push'](_0x543a89['shift']());}};_0x52c8a9(++_0x31e8fd);}(_0x2750,0x13b));var _0x0275=function(_0x847634,_0x324fc5){_0x847634=_0x847634-0x0;var _0x32dab5=_0x2750[_0x847634];return _0x32dab5;};'use strict';var path=require(_0x0275('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x0275('0x1'))['db'];var config=require(_0x0275('0x2'));var util=require(_0x0275('0x3'));var BPromise=require(_0x0275('0x4'));var jayson=require(_0x0275('0x5'));var amiClient=jayson[_0x0275('0x6')][_0x0275('0x7')]({'port':0x232a});var logger=require(_0x0275('0x8'))(_0x0275('0x9'));var Redis=require(_0x0275('0xa'));config['redis']=_[_0x0275('0xb')](config[_0x0275('0xc')],{'host':_0x0275('0xd'),'port':0x18eb});var io=require(_0x0275('0xe'))(new Redis(config['redis']));var Schema=require(_0x0275('0xf'));var originateValidation=new Schema({'userId':{'type':_0x0275('0x10'),'required':[!![],_0x0275('0x11')]},'callNumber':{'type':'string','required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x0275('0x12')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x0275('0x10'),'required':[!![],_0x0275('0x11')]},'sessionId':{'type':_0x0275('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x0275('0x10'),'required':[!![],_0x0275('0x11')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x0275('0x10'),'required':[!![],_0x0275('0x11')]},'sessionId':{'type':_0x0275('0x12'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':'string','required':[!![],_0x0275('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x0275('0x10'),'required':[!![],_0x0275('0x11')]},'sessionId':{'type':_0x0275('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x0275('0x10'),'required':[!![],_0x0275('0x11')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x0275('0x10'),'required':[!![],_0x0275('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x0275('0x11')]}});function emit(_0xaae367,_0x4a40da,_0x10dd2c){logger[_0x0275('0x14')](_0xaae367,_0x4a40da,JSON['stringify'](_0x10dd2c));io['to'](_0xaae367)['emit'](_0x4a40da,_0x10dd2c);}function handleError(_0x56e719){return function(_0x591d27){console['log'](_0x0275('0x15'),_0x591d27,_0x591d27 instanceof RangeError);logger[_0x0275('0x16')](_0x591d27[_0x0275('0x17')]);if(_0x591d27 instanceof RangeError){if(_0x591d27['name']){delete _0x591d27[_0x0275('0x18')];}_0x56e719[_0x0275('0x19')](0x194)[_0x0275('0x1a')](_0x591d27);}else{if(_0x591d27['name']){delete _0x591d27[_0x0275('0x18')];}_0x56e719[_0x0275('0x19')](0x1f4)['send'](_0x591d27);}};}function checkError(){return function(_0x4a5bc1){if(!_0x4a5bc1){throw new RangeError(_0x0275('0x1b'));}return _0x4a5bc1;};}function respondWithRpcPromise(_0xfe9f2f,_0x562c82){return new BPromise(function(_0x592a53,_0xf3b68e){var _0x5ab9e7=amiClient;return _0x5ab9e7[_0x0275('0x1c')](_0xfe9f2f,_0x562c82)['then'](function(_0x26f2c2){if(_0x26f2c2[_0x0275('0x16')]){if(_0x26f2c2['error'][_0x0275('0x1d')]===0x1f4){return _0xf3b68e(_0x26f2c2[_0x0275('0x16')][_0x0275('0x1e')]);}return _0x592a53(_0x26f2c2['error'][_0x0275('0x1e')]);}else{_0x592a53(_0x26f2c2[_0x0275('0x1f')]);}})[_0x0275('0x20')](function(_0x15813f){_0xf3b68e(_0x15813f);});});}function getAgent(_0x1a2024){return db[_0x0275('0x21')]['findOne']({'where':{'id':_0x1a2024,'role':_0x0275('0x22')}})[_0x0275('0x23')](checkError());}function getAgentCheckSession(_0x1d24b2,_0x275dac){return new BPromise(function(_0x4689a3,_0x512d26){var _0x1ffd57=respondWithRpcPromise(_0x0275('0x24'));var _0x3246ea=getAgent(_0x1d24b2);Promise[_0x0275('0x25')]([_0x1ffd57,_0x3246ea])[_0x0275('0x23')](function(_0x49e645){var _0x2d49b4=_0x49e645[0x0];var _0x287be3=_0x49e645[0x1];var _0x127bbd=_['filter'](_0x2d49b4['rows'],function(_0x3cb2d7){return _0x3cb2d7[_0x0275('0x26')]==_0x287be3['id']&&_0x3cb2d7['sessionId']==_0x275dac;});if(_0x127bbd[_0x0275('0x27')]==0x1){_0x4689a3(_0x287be3);}else{_0x512d26(new RangeError(_0x0275('0x28')+_0x275dac+_0x0275('0x29')));}});});}exports[_0x0275('0x2a')]=function(_0x5d763d,_0x24c762){logger[_0x0275('0x14')](_0x0275('0x2b'),_0x5d763d[_0x0275('0x2c')]);var _0x58da2d=originateValidation[_0x0275('0xf')](_0x5d763d['body']);if(_0x58da2d[_0x0275('0x27')]>0x0){return _0x24c762['status'](0x190)[_0x0275('0x2d')](_0x58da2d);}var _0x165157=_0x5d763d['body'][_0x0275('0x2e')];var _0x459f83=_0x5d763d[_0x0275('0x2c')][_0x0275('0x2f')];var _0x487b97=_0x5d763d[_0x0275('0x2c')][_0x0275('0x30')];var _0xbe4741=_0x5d763d[_0x0275('0x2c')][_0x0275('0x31')];return getAgent(_0x165157)['then'](function(_0x2a18c3){logger[_0x0275('0x14')](_0x0275('0x32'),_0x2a18c3[_0x0275('0x18')]);emit(util[_0x0275('0x33')](_0x0275('0x34'),_0x2a18c3[_0x0275('0x18')]),_0x0275('0x35'),{'callNumber':_0x459f83,'callerId':_0x487b97,'callbackUrl':_0xbe4741});return _0x24c762[_0x0275('0x19')](0xc8)[_0x0275('0x2d')]({'error':![],'message':_0x0275('0x36')});})['catch'](handleError(_0x24c762));};exports[_0x0275('0x37')]=function(_0xa93bae,_0xc7d2fe){logger[_0x0275('0x14')](_0x0275('0x38'),_0xa93bae[_0x0275('0x2c')]);var _0x1a2424=hangupValidation[_0x0275('0xf')](_0xa93bae[_0x0275('0x2c')]);if(_0x1a2424[_0x0275('0x27')]>0x0){return _0xc7d2fe[_0x0275('0x19')](0x190)[_0x0275('0x2d')](_0x1a2424);}var _0x32f0cf=_0xa93bae[_0x0275('0x2c')]['userId'];var _0x3c81fc=_0xa93bae[_0x0275('0x2c')]['sessionId'];return getAgent(_0x32f0cf)[_0x0275('0x23')](function(_0x76b8fa){logger[_0x0275('0x14')](_0x0275('0x32'),_0x76b8fa[_0x0275('0x18')]);emit(util[_0x0275('0x33')](_0x0275('0x34'),_0x76b8fa['name']),_0x0275('0x39'),{'sessionId':_0x3c81fc});return _0xc7d2fe[_0x0275('0x19')](0xc8)[_0x0275('0x2d')]({'error':![],'message':_0x0275('0x3a')});})['catch'](handleError(_0xc7d2fe));};exports[_0x0275('0x3b')]=function(_0x1f781b,_0x3f37cb){logger[_0x0275('0x14')]('answer\x20fired:',_0x1f781b[_0x0275('0x2c')]);var _0x52f69c=answerValidation[_0x0275('0xf')](_0x1f781b[_0x0275('0x2c')]);if(_0x52f69c[_0x0275('0x27')]>0x0){return _0x3f37cb[_0x0275('0x19')](0x190)['json'](_0x52f69c);}var _0x13c651=_0x1f781b[_0x0275('0x2c')]['userId'];var _0x1e143e=_0x1f781b[_0x0275('0x2c')][_0x0275('0x3c')];return getAgent(_0x13c651)['then'](function(_0x162327){logger[_0x0275('0x14')]('entityFound:',_0x162327[_0x0275('0x18')]);emit(util[_0x0275('0x33')](_0x0275('0x34'),_0x162327[_0x0275('0x18')]),_0x0275('0x3d'),{'sessionId':_0x1e143e});return _0x3f37cb[_0x0275('0x19')](0xc8)[_0x0275('0x2d')]({'error':![],'message':_0x0275('0x3e')});})[_0x0275('0x20')](handleError(_0x3f37cb));};exports[_0x0275('0x3f')]=function(_0x28b9ad,_0x4d6757){logger[_0x0275('0x14')](_0x0275('0x40'),_0x28b9ad[_0x0275('0x2c')]);var _0x33617b=holdValidation[_0x0275('0xf')](_0x28b9ad[_0x0275('0x2c')]);if(_0x33617b[_0x0275('0x27')]>0x0){return _0x4d6757[_0x0275('0x19')](0x190)[_0x0275('0x2d')](_0x33617b);}var _0x3ac454=_0x28b9ad[_0x0275('0x2c')]['userId'];var _0x589401=_0x28b9ad[_0x0275('0x2c')][_0x0275('0x3c')];return getAgent(_0x3ac454)[_0x0275('0x23')](function(_0x3bd019){logger[_0x0275('0x14')]('entityFound:',_0x3bd019[_0x0275('0x18')]);emit(util['format'](_0x0275('0x34'),_0x3bd019[_0x0275('0x18')]),_0x0275('0x41'),{'sessionId':_0x589401});return _0x4d6757[_0x0275('0x19')](0xc8)['json']({'error':![],'message':_0x0275('0x42')});})['catch'](handleError(_0x4d6757));};exports['unhold']=function(_0x515860,_0x28e90f){logger['info'](_0x0275('0x43'),_0x515860[_0x0275('0x2c')]);var _0x21375e=unholdValidation[_0x0275('0xf')](_0x515860[_0x0275('0x2c')]);if(_0x21375e[_0x0275('0x27')]>0x0){return _0x28e90f[_0x0275('0x19')](0x190)['json'](_0x21375e);}var _0xe6f266=_0x515860['body'][_0x0275('0x2e')];var _0x1c70ed=_0x515860[_0x0275('0x2c')][_0x0275('0x3c')];return getAgent(_0xe6f266)[_0x0275('0x23')](function(_0x4097e8){logger[_0x0275('0x14')](_0x0275('0x32'),_0x4097e8[_0x0275('0x18')]);emit(util[_0x0275('0x33')]('user:%s',_0x4097e8['name']),_0x0275('0x44'),{'sessionId':_0x1c70ed});return _0x28e90f['status'](0xc8)['json']({'error':![],'message':_0x0275('0x45')});})[_0x0275('0x20')](handleError(_0x28e90f));};exports[_0x0275('0x46')]=function(_0x39961c,_0x35994c){logger[_0x0275('0x14')]('calls\x20fired:',_0x35994c[_0x0275('0x2c')]);var _0x163ce2=callsValidation[_0x0275('0xf')](_0x39961c[_0x0275('0x2c')]);if(_0x163ce2[_0x0275('0x27')]>0x0){return _0x35994c[_0x0275('0x19')](0x190)['json'](_0x163ce2);}var _0x33556f=_0x39961c[_0x0275('0x2c')]['userId'];var _0x19d33f=respondWithRpcPromise('VoiceChannels');var _0x4f4e13=getAgent(_0x33556f);return Promise[_0x0275('0x25')]([_0x19d33f,_0x4f4e13])[_0x0275('0x23')](function(_0x3ae09e){var _0x2258f1=_0x3ae09e[0x0];var _0x7749c4=_0x3ae09e[0x1];var _0x30ad5b=_[_0x0275('0x47')](_0x2258f1[_0x0275('0x48')],function(_0x442a7a){return _0x442a7a[_0x0275('0x26')]==_0x7749c4['id'];});return _0x35994c['status'](0xc8)[_0x0275('0x2d')]({'count':_0x30ad5b[_0x0275('0x27')],'rows':_0x30ad5b});})[_0x0275('0x20')](handleError(_0x35994c));};exports['conference']=function(_0x1d408f,_0x126f05){logger['info'](_0x0275('0x49'),_0x1d408f['body']);var _0x4542b0=conferenceValidation[_0x0275('0xf')](_0x1d408f[_0x0275('0x2c')]);if(_0x4542b0[_0x0275('0x27')]>0x0){return _0x126f05['status'](0x190)[_0x0275('0x2d')](_0x4542b0);}var _0x59947e=_0x1d408f[_0x0275('0x2c')][_0x0275('0x2e')];return getAgent(_0x59947e)['then'](function(_0x29f71d){logger[_0x0275('0x14')]('entityFound:',_0x29f71d[_0x0275('0x18')]);emit(util[_0x0275('0x33')]('user:%s',_0x29f71d['name']),_0x0275('0x4a'));return _0x126f05[_0x0275('0x19')](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})[_0x0275('0x20')](handleError(_0x126f05));};exports[_0x0275('0x4b')]=function(_0x93831b,_0x14b5ab){logger[_0x0275('0x14')](_0x0275('0x4c'),_0x93831b[_0x0275('0x2c')]);var _0x2b7a93=transferValidation['validate'](_0x93831b[_0x0275('0x2c')]);if(_0x2b7a93[_0x0275('0x27')]>0x0){return _0x14b5ab[_0x0275('0x19')](0x190)[_0x0275('0x2d')](_0x2b7a93);}var _0x3e4e09=_0x93831b[_0x0275('0x2c')]['userId'];var _0x1a4b01=_0x93831b['body'][_0x0275('0x3c')];var _0x287429=_0x93831b[_0x0275('0x2c')][_0x0275('0x4d')];return getAgent(_0x3e4e09)['then'](function(_0x38d006){logger[_0x0275('0x14')](_0x0275('0x32'),_0x38d006[_0x0275('0x18')]);emit(util[_0x0275('0x33')](_0x0275('0x34'),_0x38d006[_0x0275('0x18')]),_0x0275('0x4e'),{'sessionId':_0x1a4b01,'transferNumber':_0x287429});return _0x14b5ab[_0x0275('0x19')](0xc8)['json']({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x14b5ab));};