5b8e9aafbdd02a11004cf6ee9212ee7740b01b4e
[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 _0x9649=['error','name','status','send','NotFound','then','code','message','catch','User','findOne','VoiceChannels','all','filter','length','sessionId\x20','\x20not\x20found!','originate','info','originate\x20fired:','body','json','callerId','callbackUrl','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','sessionId','entityFound:','format','webbar:hangup','hangup\x20executed!','answer\x20fired:','userId','webbar:answer','answer\x20executed!','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','rows','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','path','lodash','../../mysqldb','../../config/environment','bluebird','jayson/promise','http','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','handleError:'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9649,0x19f));var _0x9964=function(_0x34092c,_0x450b06){_0x34092c=_0x34092c-0x0;var _0x5017e6=_0x9649[_0x34092c];return _0x5017e6;};'use strict';var path=require(_0x9964('0x0'));var fs=require('fs');var _=require(_0x9964('0x1'));var db=require(_0x9964('0x2'))['db'];var config=require(_0x9964('0x3'));var util=require('util');var BPromise=require(_0x9964('0x4'));var jayson=require(_0x9964('0x5'));var amiClient=jayson['client'][_0x9964('0x6')]({'port':0x232a});var logger=require('../../config/logger')(_0x9964('0x7'));var Redis=require(_0x9964('0x8'));config[_0x9964('0x9')]=_[_0x9964('0xa')](config[_0x9964('0x9')],{'host':_0x9964('0xb'),'port':0x18eb});var io=require(_0x9964('0xc'))(new Redis(config['redis']));var Schema=require(_0x9964('0xd'));var originateValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0x9964('0xf'),'required':[!![],_0x9964('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],_0x9964('0x11')]},'sessionId':{'type':_0x9964('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],_0x9964('0x11')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x9964('0xf'),'required':[!![],_0x9964('0x12')]},'transferNumber':{'type':'string','required':[!![],_0x9964('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x9964('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],_0x9964('0x11')]},'sessionId':{'type':_0x9964('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x9964('0xe'),'required':[!![],_0x9964('0x11')]}});function emit(_0x57b330,_0x2fd50d,_0x3fe796){logger['info'](_0x57b330,_0x2fd50d,JSON[_0x9964('0x14')](_0x3fe796));io['to'](_0x57b330)[_0x9964('0x15')](_0x2fd50d,_0x3fe796);}function handleError(_0x69994d){return function(_0x4c18a4){console['log'](_0x9964('0x16'),_0x4c18a4,_0x4c18a4 instanceof RangeError);logger[_0x9964('0x17')](_0x4c18a4['stack']);if(_0x4c18a4 instanceof RangeError){if(_0x4c18a4[_0x9964('0x18')]){delete _0x4c18a4[_0x9964('0x18')];}_0x69994d[_0x9964('0x19')](0x194)[_0x9964('0x1a')](_0x4c18a4);}else{if(_0x4c18a4[_0x9964('0x18')]){delete _0x4c18a4[_0x9964('0x18')];}_0x69994d[_0x9964('0x19')](0x1f4)[_0x9964('0x1a')](_0x4c18a4);}};}function checkError(){return function(_0x1072b5){if(!_0x1072b5){throw new RangeError(_0x9964('0x1b'));}return _0x1072b5;};}function respondWithRpcPromise(_0x4f625e,_0x455b62){return new BPromise(function(_0x447026,_0x4c479f){var _0x2b03a8=amiClient;return _0x2b03a8['request'](_0x4f625e,_0x455b62)[_0x9964('0x1c')](function(_0xdc3ba){if(_0xdc3ba[_0x9964('0x17')]){if(_0xdc3ba[_0x9964('0x17')][_0x9964('0x1d')]===0x1f4){return _0x4c479f(_0xdc3ba[_0x9964('0x17')]['message']);}return _0x447026(_0xdc3ba[_0x9964('0x17')][_0x9964('0x1e')]);}else{_0x447026(_0xdc3ba['result']);}})[_0x9964('0x1f')](function(_0x15a14c){_0x4c479f(_0x15a14c);});});}function getAgent(_0x196812){return db[_0x9964('0x20')][_0x9964('0x21')]({'where':{'id':_0x196812,'role':'agent'}})[_0x9964('0x1c')](checkError());}function getAgentCheckSession(_0x4c2b44,_0x44cb60){return new BPromise(function(_0x512f6b,_0x17b29f){var _0x5dc789=respondWithRpcPromise(_0x9964('0x22'));var _0x162b83=getAgent(_0x4c2b44);Promise[_0x9964('0x23')]([_0x5dc789,_0x162b83])[_0x9964('0x1c')](function(_0x11cdce){var _0x23df5e=_0x11cdce[0x0];var _0x146cf2=_0x11cdce[0x1];var _0x2f6068=_[_0x9964('0x24')](_0x23df5e['rows'],function(_0x498014){return _0x498014['UserId']==_0x146cf2['id']&&_0x498014['sessionId']==_0x44cb60;});if(_0x2f6068[_0x9964('0x25')]==0x1){_0x512f6b(_0x146cf2);}else{_0x17b29f(new RangeError(_0x9964('0x26')+_0x44cb60+_0x9964('0x27')));}});});}exports[_0x9964('0x28')]=function(_0x1a3698,_0x3092b2){logger[_0x9964('0x29')](_0x9964('0x2a'),_0x1a3698[_0x9964('0x2b')]);var _0x5e92a9=originateValidation[_0x9964('0xd')](_0x1a3698[_0x9964('0x2b')]);if(_0x5e92a9['length']>0x0){return _0x3092b2[_0x9964('0x19')](0x190)[_0x9964('0x2c')](_0x5e92a9);}var _0x3e5154=_0x1a3698[_0x9964('0x2b')]['userId'];var _0x55b7a0=_0x1a3698[_0x9964('0x2b')]['callNumber'];var _0x49b3c6=_0x1a3698[_0x9964('0x2b')][_0x9964('0x2d')];var _0x5d28d8=_0x1a3698['body'][_0x9964('0x2e')];return getAgent(_0x3e5154)[_0x9964('0x1c')](function(_0x4df44b){logger[_0x9964('0x29')]('entityFound:',_0x4df44b['name']);emit(util['format'](_0x9964('0x2f'),_0x4df44b[_0x9964('0x18')]),_0x9964('0x30'),{'callNumber':_0x55b7a0,'callerId':_0x49b3c6,'callbackUrl':_0x5d28d8});return _0x3092b2[_0x9964('0x19')](0xc8)[_0x9964('0x2c')]({'error':![],'message':_0x9964('0x31')});})[_0x9964('0x1f')](handleError(_0x3092b2));};exports[_0x9964('0x32')]=function(_0x131073,_0x526c96){logger[_0x9964('0x29')](_0x9964('0x33'),_0x131073[_0x9964('0x2b')]);var _0x132c7c=hangupValidation['validate'](_0x131073['body']);if(_0x132c7c[_0x9964('0x25')]>0x0){return _0x526c96[_0x9964('0x19')](0x190)[_0x9964('0x2c')](_0x132c7c);}var _0x1bad9d=_0x131073[_0x9964('0x2b')]['userId'];var _0x3aac69=_0x131073[_0x9964('0x2b')][_0x9964('0x34')];return getAgent(_0x1bad9d)[_0x9964('0x1c')](function(_0x24d5d9){logger[_0x9964('0x29')](_0x9964('0x35'),_0x24d5d9[_0x9964('0x18')]);emit(util[_0x9964('0x36')](_0x9964('0x2f'),_0x24d5d9[_0x9964('0x18')]),_0x9964('0x37'),{'sessionId':_0x3aac69});return _0x526c96[_0x9964('0x19')](0xc8)[_0x9964('0x2c')]({'error':![],'message':_0x9964('0x38')});})[_0x9964('0x1f')](handleError(_0x526c96));};exports['answer']=function(_0x344c6c,_0x4c5362){logger[_0x9964('0x29')](_0x9964('0x39'),_0x344c6c[_0x9964('0x2b')]);var _0x4c3d38=answerValidation[_0x9964('0xd')](_0x344c6c['body']);if(_0x4c3d38[_0x9964('0x25')]>0x0){return _0x4c5362['status'](0x190)[_0x9964('0x2c')](_0x4c3d38);}var _0x4ad7a6=_0x344c6c[_0x9964('0x2b')][_0x9964('0x3a')];var _0x121059=_0x344c6c[_0x9964('0x2b')][_0x9964('0x34')];return getAgent(_0x4ad7a6)[_0x9964('0x1c')](function(_0x516529){logger[_0x9964('0x29')](_0x9964('0x35'),_0x516529[_0x9964('0x18')]);emit(util[_0x9964('0x36')](_0x9964('0x2f'),_0x516529[_0x9964('0x18')]),_0x9964('0x3b'),{'sessionId':_0x121059});return _0x4c5362[_0x9964('0x19')](0xc8)[_0x9964('0x2c')]({'error':![],'message':_0x9964('0x3c')});})['catch'](handleError(_0x4c5362));};exports['hold']=function(_0x36e684,_0x5d52d8){logger[_0x9964('0x29')]('hold\x20fired:',_0x36e684['body']);var _0x5d8720=holdValidation[_0x9964('0xd')](_0x36e684[_0x9964('0x2b')]);if(_0x5d8720[_0x9964('0x25')]>0x0){return _0x5d52d8['status'](0x190)['json'](_0x5d8720);}var _0x652882=_0x36e684['body'][_0x9964('0x3a')];var _0x159eb7=_0x36e684[_0x9964('0x2b')][_0x9964('0x34')];return getAgent(_0x652882)[_0x9964('0x1c')](function(_0x5b0fa7){logger['info'](_0x9964('0x35'),_0x5b0fa7[_0x9964('0x18')]);emit(util[_0x9964('0x36')](_0x9964('0x2f'),_0x5b0fa7[_0x9964('0x18')]),'webbar:hold',{'sessionId':_0x159eb7});return _0x5d52d8[_0x9964('0x19')](0xc8)[_0x9964('0x2c')]({'error':![],'message':_0x9964('0x3d')});})['catch'](handleError(_0x5d52d8));};exports[_0x9964('0x3e')]=function(_0x2649cc,_0x474631){logger[_0x9964('0x29')](_0x9964('0x3f'),_0x2649cc[_0x9964('0x2b')]);var _0x1a5344=unholdValidation[_0x9964('0xd')](_0x2649cc['body']);if(_0x1a5344[_0x9964('0x25')]>0x0){return _0x474631['status'](0x190)['json'](_0x1a5344);}var _0x160316=_0x2649cc['body'][_0x9964('0x3a')];var _0x45ca09=_0x2649cc[_0x9964('0x2b')]['sessionId'];return getAgent(_0x160316)[_0x9964('0x1c')](function(_0x187004){logger[_0x9964('0x29')](_0x9964('0x35'),_0x187004[_0x9964('0x18')]);emit(util[_0x9964('0x36')](_0x9964('0x2f'),_0x187004[_0x9964('0x18')]),_0x9964('0x40'),{'sessionId':_0x45ca09});return _0x474631['status'](0xc8)[_0x9964('0x2c')]({'error':![],'message':'unhold\x20executed!'});})[_0x9964('0x1f')](handleError(_0x474631));};exports[_0x9964('0x41')]=function(_0x216a88,_0x4f10fd){logger[_0x9964('0x29')](_0x9964('0x42'),_0x4f10fd[_0x9964('0x2b')]);var _0x375ad6=callsValidation[_0x9964('0xd')](_0x216a88['body']);if(_0x375ad6[_0x9964('0x25')]>0x0){return _0x4f10fd[_0x9964('0x19')](0x190)[_0x9964('0x2c')](_0x375ad6);}var _0xde3842=_0x216a88[_0x9964('0x2b')]['userId'];var _0x5a0ece=respondWithRpcPromise('VoiceChannels');var _0x5a57d2=getAgent(_0xde3842);return Promise[_0x9964('0x23')]([_0x5a0ece,_0x5a57d2])['then'](function(_0x5133fc){var _0x5b8892=_0x5133fc[0x0];var _0x275535=_0x5133fc[0x1];var _0x498c8f=_[_0x9964('0x24')](_0x5b8892[_0x9964('0x43')],function(_0x464ab1){return _0x464ab1['UserId']==_0x275535['id'];});return _0x4f10fd[_0x9964('0x19')](0xc8)['json']({'count':_0x498c8f['length'],'rows':_0x498c8f});})[_0x9964('0x1f')](handleError(_0x4f10fd));};exports[_0x9964('0x44')]=function(_0x2ffa8e,_0x4f039e){logger[_0x9964('0x29')](_0x9964('0x45'),_0x2ffa8e[_0x9964('0x2b')]);var _0x5af75e=conferenceValidation[_0x9964('0xd')](_0x2ffa8e[_0x9964('0x2b')]);if(_0x5af75e[_0x9964('0x25')]>0x0){return _0x4f039e['status'](0x190)['json'](_0x5af75e);}var _0x234607=_0x2ffa8e[_0x9964('0x2b')][_0x9964('0x3a')];return getAgent(_0x234607)[_0x9964('0x1c')](function(_0x3001d7){logger[_0x9964('0x29')](_0x9964('0x35'),_0x3001d7[_0x9964('0x18')]);emit(util[_0x9964('0x36')](_0x9964('0x2f'),_0x3001d7[_0x9964('0x18')]),_0x9964('0x46'));return _0x4f039e[_0x9964('0x19')](0xc8)[_0x9964('0x2c')]({'error':![],'message':_0x9964('0x47')});})['catch'](handleError(_0x4f039e));};exports[_0x9964('0x48')]=function(_0x37aa3c,_0x2e2b33){logger[_0x9964('0x29')]('transfer\x20fired:',_0x37aa3c['body']);var _0x58fb4f=transferValidation['validate'](_0x37aa3c['body']);if(_0x58fb4f[_0x9964('0x25')]>0x0){return _0x2e2b33[_0x9964('0x19')](0x190)['json'](_0x58fb4f);}var _0x249fa7=_0x37aa3c[_0x9964('0x2b')][_0x9964('0x3a')];var _0x19608a=_0x37aa3c[_0x9964('0x2b')]['sessionId'];var _0x3446c8=_0x37aa3c[_0x9964('0x2b')]['transferNumber'];return getAgent(_0x249fa7)[_0x9964('0x1c')](function(_0x57b0de){logger[_0x9964('0x29')]('entityFound:',_0x57b0de[_0x9964('0x18')]);emit(util[_0x9964('0x36')]('user:%s',_0x57b0de[_0x9964('0x18')]),'webbar:transfer',{'sessionId':_0x19608a,'transferNumber':_0x3446c8});return _0x2e2b33['status'](0xc8)[_0x9964('0x2c')]({'error':![],'message':'transfer\x20executed!'});})[_0x9964('0x1f')](handleError(_0x2e2b33));};