dcb70a5f4e1ab457d0371ce977af5a41493ea278
[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 _0xe14d=['callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','error','stack','name','send','NotFound','request','then','message','result','catch','User','findOne','VoiceChannels','filter','rows','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate\x20fired:','body','length','status','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','hangup','hangup\x20fired:','json','webbar:hangup','answer','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls\x20fired:','conference\x20executed!','transfer','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','bluebird','jayson/promise','http','../../config/logger','webbarapi','ioredis','redis','defaults','socket.io-emitter','validate','number','userId\x20is\x20required','string'];(function(_0x26c55e,_0x21b57b){var _0x1f2ae2=function(_0x3cc027){while(--_0x3cc027){_0x26c55e['push'](_0x26c55e['shift']());}};_0x1f2ae2(++_0x21b57b);}(_0xe14d,0x1ee));var _0xde14=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xe14d[_0x3b380d];return _0x54502b;};'use strict';var path=require(_0xde14('0x0'));var fs=require('fs');var _=require(_0xde14('0x1'));var db=require(_0xde14('0x2'))['db'];var config=require(_0xde14('0x3'));var util=require('util');var BPromise=require(_0xde14('0x4'));var jayson=require(_0xde14('0x5'));var amiClient=jayson['client'][_0xde14('0x6')]({'port':0x232a});var logger=require(_0xde14('0x7'))(_0xde14('0x8'));var Redis=require(_0xde14('0x9'));config[_0xde14('0xa')]=_[_0xde14('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xde14('0xc'))(new Redis(config[_0xde14('0xa')]));var Schema=require(_0xde14('0xd'));var originateValidation=new Schema({'userId':{'type':_0xde14('0xe'),'required':[!![],_0xde14('0xf')]},'callNumber':{'type':_0xde14('0x10'),'required':[!![],_0xde14('0x11')]},'callerId':{'type':_0xde14('0x10')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xde14('0xe'),'required':[!![],_0xde14('0xf')]},'sessionId':{'type':_0xde14('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xde14('0xe'),'required':[!![],_0xde14('0xf')]},'sessionId':{'type':_0xde14('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xde14('0xe'),'required':[!![],_0xde14('0xf')]},'sessionId':{'type':_0xde14('0x10'),'required':[!![],_0xde14('0x12')]},'transferNumber':{'type':_0xde14('0x10'),'required':[!![],_0xde14('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0xde14('0xe'),'required':[!![],_0xde14('0xf')]},'sessionId':{'type':_0xde14('0x10'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xde14('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xde14('0xe'),'required':[!![],_0xde14('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xde14('0xf')]}});function emit(_0x31adb3,_0x257390,_0x31902a){logger[_0xde14('0x14')](_0x31adb3,_0x257390,JSON[_0xde14('0x15')](_0x31902a));io['to'](_0x31adb3)[_0xde14('0x16')](_0x257390,_0x31902a);}function handleError(_0x6f6eea){return function(_0x3cc317){console[_0xde14('0x17')]('handleError:',_0x3cc317,_0x3cc317 instanceof RangeError);logger[_0xde14('0x18')](_0x3cc317[_0xde14('0x19')]);if(_0x3cc317 instanceof RangeError){if(_0x3cc317[_0xde14('0x1a')]){delete _0x3cc317[_0xde14('0x1a')];}_0x6f6eea['status'](0x194)[_0xde14('0x1b')](_0x3cc317);}else{if(_0x3cc317['name']){delete _0x3cc317[_0xde14('0x1a')];}_0x6f6eea['status'](0x1f4)[_0xde14('0x1b')](_0x3cc317);}};}function checkError(){return function(_0x30fcf1){if(!_0x30fcf1){throw new RangeError(_0xde14('0x1c'));}return _0x30fcf1;};}function respondWithRpcPromise(_0x1949ab,_0x39bdc5){return new BPromise(function(_0x11a4d9,_0x40b648){var _0x2dd9e7=amiClient;return _0x2dd9e7[_0xde14('0x1d')](_0x1949ab,_0x39bdc5)[_0xde14('0x1e')](function(_0x475f2f){if(_0x475f2f[_0xde14('0x18')]){if(_0x475f2f[_0xde14('0x18')]['code']===0x1f4){return _0x40b648(_0x475f2f[_0xde14('0x18')][_0xde14('0x1f')]);}return _0x11a4d9(_0x475f2f[_0xde14('0x18')][_0xde14('0x1f')]);}else{_0x11a4d9(_0x475f2f[_0xde14('0x20')]);}})[_0xde14('0x21')](function(_0x310d75){_0x40b648(_0x310d75);});});}function getAgent(_0x23c735){return db[_0xde14('0x22')][_0xde14('0x23')]({'where':{'id':_0x23c735,'role':'agent'}})[_0xde14('0x1e')](checkError());}function getAgentCheckSession(_0x1696ee,_0x3eaee5){return new BPromise(function(_0xf8279a,_0x5d8b4b){var _0x3fc2a4=respondWithRpcPromise(_0xde14('0x24'));var _0x30c4a8=getAgent(_0x1696ee);Promise['all']([_0x3fc2a4,_0x30c4a8])[_0xde14('0x1e')](function(_0x582537){var _0x2760f9=_0x582537[0x0];var _0x361b2c=_0x582537[0x1];var _0x3bb1da=_[_0xde14('0x25')](_0x2760f9[_0xde14('0x26')],function(_0x237d3f){return _0x237d3f[_0xde14('0x27')]==_0x361b2c['id']&&_0x237d3f[_0xde14('0x28')]==_0x3eaee5;});if(_0x3bb1da['length']==0x1){_0xf8279a(_0x361b2c);}else{_0x5d8b4b(new RangeError(_0xde14('0x29')+_0x3eaee5+_0xde14('0x2a')));}});});}exports['originate']=function(_0xf25a9e,_0x4c9b15){logger[_0xde14('0x14')](_0xde14('0x2b'),_0xf25a9e[_0xde14('0x2c')]);var _0x21a916=originateValidation[_0xde14('0xd')](_0xf25a9e['body']);if(_0x21a916[_0xde14('0x2d')]>0x0){return _0x4c9b15[_0xde14('0x2e')](0x190)['json'](_0x21a916);}var _0x280238=_0xf25a9e[_0xde14('0x2c')][_0xde14('0x2f')];var _0x319136=_0xf25a9e[_0xde14('0x2c')][_0xde14('0x30')];var _0xd75bb2=_0xf25a9e[_0xde14('0x2c')][_0xde14('0x31')];var _0x48d587=_0xf25a9e['body'][_0xde14('0x32')];return getAgent(_0x280238)[_0xde14('0x1e')](function(_0x20913d){logger[_0xde14('0x14')](_0xde14('0x33'),_0x20913d[_0xde14('0x1a')]);emit(util[_0xde14('0x34')](_0xde14('0x35'),_0x20913d[_0xde14('0x1a')]),'webbar:originate',{'callNumber':_0x319136,'callerId':_0xd75bb2,'callbackUrl':_0x48d587});return _0x4c9b15[_0xde14('0x2e')](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})['catch'](handleError(_0x4c9b15));};exports[_0xde14('0x36')]=function(_0x258759,_0x398f63){logger[_0xde14('0x14')](_0xde14('0x37'),_0x258759[_0xde14('0x2c')]);var _0x1e89b6=hangupValidation[_0xde14('0xd')](_0x258759['body']);if(_0x1e89b6[_0xde14('0x2d')]>0x0){return _0x398f63[_0xde14('0x2e')](0x190)[_0xde14('0x38')](_0x1e89b6);}var _0x2b3004=_0x258759[_0xde14('0x2c')][_0xde14('0x2f')];var _0x2ec2f3=_0x258759[_0xde14('0x2c')]['sessionId'];return getAgent(_0x2b3004)[_0xde14('0x1e')](function(_0xb6b2ee){logger[_0xde14('0x14')](_0xde14('0x33'),_0xb6b2ee['name']);emit(util['format'](_0xde14('0x35'),_0xb6b2ee[_0xde14('0x1a')]),_0xde14('0x39'),{'sessionId':_0x2ec2f3});return _0x398f63[_0xde14('0x2e')](0xc8)[_0xde14('0x38')]({'error':![],'message':'hangup\x20executed!'});})[_0xde14('0x21')](handleError(_0x398f63));};exports[_0xde14('0x3a')]=function(_0x1d3cc1,_0x595fd5){logger[_0xde14('0x14')]('answer\x20fired:',_0x1d3cc1[_0xde14('0x2c')]);var _0x51ace9=answerValidation[_0xde14('0xd')](_0x1d3cc1[_0xde14('0x2c')]);if(_0x51ace9[_0xde14('0x2d')]>0x0){return _0x595fd5[_0xde14('0x2e')](0x190)[_0xde14('0x38')](_0x51ace9);}var _0x22f75a=_0x1d3cc1[_0xde14('0x2c')][_0xde14('0x2f')];var _0x5b18b0=_0x1d3cc1[_0xde14('0x2c')]['sessionId'];return getAgent(_0x22f75a)[_0xde14('0x1e')](function(_0x5ac3f3){logger[_0xde14('0x14')](_0xde14('0x33'),_0x5ac3f3[_0xde14('0x1a')]);emit(util[_0xde14('0x34')](_0xde14('0x35'),_0x5ac3f3[_0xde14('0x1a')]),_0xde14('0x3b'),{'sessionId':_0x5b18b0});return _0x595fd5[_0xde14('0x2e')](0xc8)['json']({'error':![],'message':_0xde14('0x3c')});})[_0xde14('0x21')](handleError(_0x595fd5));};exports[_0xde14('0x3d')]=function(_0x4b1ef7,_0x5ab2de){logger[_0xde14('0x14')](_0xde14('0x3e'),_0x4b1ef7[_0xde14('0x2c')]);var _0xdbdab8=holdValidation[_0xde14('0xd')](_0x4b1ef7[_0xde14('0x2c')]);if(_0xdbdab8['length']>0x0){return _0x5ab2de[_0xde14('0x2e')](0x190)['json'](_0xdbdab8);}var _0xa408ec=_0x4b1ef7[_0xde14('0x2c')]['userId'];var _0x33e120=_0x4b1ef7[_0xde14('0x2c')][_0xde14('0x28')];return getAgent(_0xa408ec)[_0xde14('0x1e')](function(_0x2d05c7){logger[_0xde14('0x14')](_0xde14('0x33'),_0x2d05c7['name']);emit(util[_0xde14('0x34')]('user:%s',_0x2d05c7[_0xde14('0x1a')]),_0xde14('0x3f'),{'sessionId':_0x33e120});return _0x5ab2de[_0xde14('0x2e')](0xc8)[_0xde14('0x38')]({'error':![],'message':_0xde14('0x40')});})[_0xde14('0x21')](handleError(_0x5ab2de));};exports[_0xde14('0x41')]=function(_0x1f7316,_0x3495d1){logger[_0xde14('0x14')]('unhold\x20fired:',_0x1f7316[_0xde14('0x2c')]);var _0x1688c6=unholdValidation[_0xde14('0xd')](_0x1f7316[_0xde14('0x2c')]);if(_0x1688c6[_0xde14('0x2d')]>0x0){return _0x3495d1['status'](0x190)[_0xde14('0x38')](_0x1688c6);}var _0x4dc2e3=_0x1f7316[_0xde14('0x2c')][_0xde14('0x2f')];var _0x3fce2c=_0x1f7316[_0xde14('0x2c')][_0xde14('0x28')];return getAgent(_0x4dc2e3)['then'](function(_0x5356fe){logger[_0xde14('0x14')]('entityFound:',_0x5356fe[_0xde14('0x1a')]);emit(util[_0xde14('0x34')](_0xde14('0x35'),_0x5356fe[_0xde14('0x1a')]),_0xde14('0x42'),{'sessionId':_0x3fce2c});return _0x3495d1[_0xde14('0x2e')](0xc8)[_0xde14('0x38')]({'error':![],'message':_0xde14('0x43')});})[_0xde14('0x21')](handleError(_0x3495d1));};exports['calls']=function(_0x205a94,_0x2c972b){logger[_0xde14('0x14')](_0xde14('0x44'),_0x2c972b[_0xde14('0x2c')]);var _0x5965e1=callsValidation[_0xde14('0xd')](_0x205a94['body']);if(_0x5965e1[_0xde14('0x2d')]>0x0){return _0x2c972b[_0xde14('0x2e')](0x190)[_0xde14('0x38')](_0x5965e1);}var _0x4dbeaf=_0x205a94[_0xde14('0x2c')][_0xde14('0x2f')];var _0x27ab1a=respondWithRpcPromise(_0xde14('0x24'));var _0x525c64=getAgent(_0x4dbeaf);return Promise['all']([_0x27ab1a,_0x525c64])['then'](function(_0x475671){var _0x508f25=_0x475671[0x0];var _0x596cd3=_0x475671[0x1];var _0xc10000=_[_0xde14('0x25')](_0x508f25[_0xde14('0x26')],function(_0x34da32){return _0x34da32[_0xde14('0x27')]==_0x596cd3['id'];});return _0x2c972b[_0xde14('0x2e')](0xc8)[_0xde14('0x38')]({'count':_0xc10000[_0xde14('0x2d')],'rows':_0xc10000});})[_0xde14('0x21')](handleError(_0x2c972b));};exports['conference']=function(_0x6be331,_0x1cfc98){logger[_0xde14('0x14')]('conference\x20fired:',_0x6be331[_0xde14('0x2c')]);var _0x599adc=conferenceValidation[_0xde14('0xd')](_0x6be331[_0xde14('0x2c')]);if(_0x599adc[_0xde14('0x2d')]>0x0){return _0x1cfc98[_0xde14('0x2e')](0x190)[_0xde14('0x38')](_0x599adc);}var _0x10e06e=_0x6be331[_0xde14('0x2c')]['userId'];return getAgent(_0x10e06e)[_0xde14('0x1e')](function(_0x25ba7e){logger[_0xde14('0x14')](_0xde14('0x33'),_0x25ba7e[_0xde14('0x1a')]);emit(util[_0xde14('0x34')](_0xde14('0x35'),_0x25ba7e['name']),'webbar:conference');return _0x1cfc98[_0xde14('0x2e')](0xc8)[_0xde14('0x38')]({'error':![],'message':_0xde14('0x45')});})['catch'](handleError(_0x1cfc98));};exports[_0xde14('0x46')]=function(_0x2bfb4f,_0x3a5b06){logger[_0xde14('0x14')]('transfer\x20fired:',_0x2bfb4f['body']);var _0x2395e1=transferValidation[_0xde14('0xd')](_0x2bfb4f[_0xde14('0x2c')]);if(_0x2395e1[_0xde14('0x2d')]>0x0){return _0x3a5b06[_0xde14('0x2e')](0x190)[_0xde14('0x38')](_0x2395e1);}var _0x1bfe9b=_0x2bfb4f[_0xde14('0x2c')][_0xde14('0x2f')];var _0x4657d1=_0x2bfb4f[_0xde14('0x2c')][_0xde14('0x28')];var _0x1ff577=_0x2bfb4f[_0xde14('0x2c')][_0xde14('0x47')];return getAgent(_0x1bfe9b)[_0xde14('0x1e')](function(_0x2656c7){logger[_0xde14('0x14')](_0xde14('0x33'),_0x2656c7[_0xde14('0x1a')]);emit(util[_0xde14('0x34')](_0xde14('0x35'),_0x2656c7[_0xde14('0x1a')]),'webbar:transfer',{'sessionId':_0x4657d1,'transferNumber':_0x1ff577});return _0x3a5b06[_0xde14('0x2e')](0xc8)['json']({'error':![],'message':_0xde14('0x48')});})['catch'](handleError(_0x3a5b06));};