Built motion from commit (unavailable).|2.5.19
[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 _0x4ab0=['number','userId\x20is\x20required','string','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','message','result','catch','User','agent','then','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','callNumber','callerId','callbackUrl','format','user:%s','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','userId','entityFound:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','http','../../config/logger','ioredis','redis','localhost','socket.io-emitter','validate'];(function(_0x422baa,_0x98d34a){var _0x31c810=function(_0xa554fe){while(--_0xa554fe){_0x422baa['push'](_0x422baa['shift']());}};_0x31c810(++_0x98d34a);}(_0x4ab0,0xd5));var _0x04ab=function(_0x1513c6,_0x164e02){_0x1513c6=_0x1513c6-0x0;var _0x5cc8d7=_0x4ab0[_0x1513c6];return _0x5cc8d7;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x04ab('0x0'));var db=require(_0x04ab('0x1'))['db'];var config=require(_0x04ab('0x2'));var util=require(_0x04ab('0x3'));var BPromise=require(_0x04ab('0x4'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x04ab('0x5')]({'port':0x232a});var logger=require(_0x04ab('0x6'))('webbarapi');var Redis=require(_0x04ab('0x7'));config[_0x04ab('0x8')]=_['defaults'](config[_0x04ab('0x8')],{'host':_0x04ab('0x9'),'port':0x18eb});var io=require(_0x04ab('0xa'))(new Redis(config['redis']));var Schema=require(_0x04ab('0xb'));var originateValidation=new Schema({'userId':{'type':_0x04ab('0xc'),'required':[!![],_0x04ab('0xd')]},'callNumber':{'type':_0x04ab('0xe'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x04ab('0xe')},'callbackUrl':{'type':_0x04ab('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0x04ab('0xc'),'required':[!![],_0x04ab('0xd')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x04ab('0xc'),'required':[!![],_0x04ab('0xd')]},'sessionId':{'type':_0x04ab('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x04ab('0xc'),'required':[!![],_0x04ab('0xd')]},'sessionId':{'type':_0x04ab('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x04ab('0xe'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x04ab('0xc'),'required':[!![],_0x04ab('0xd')]},'sessionId':{'type':_0x04ab('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x04ab('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x04ab('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x04ab('0xc'),'required':[!![],_0x04ab('0xd')]}});function emit(_0x2b10b0,_0x16d633,_0x3e9a05){logger[_0x04ab('0xf')](_0x2b10b0,_0x16d633,JSON[_0x04ab('0x10')](_0x3e9a05));io['to'](_0x2b10b0)[_0x04ab('0x11')](_0x16d633,_0x3e9a05);}function handleError(_0x205600){return function(_0x5ce43c){console[_0x04ab('0x12')](_0x04ab('0x13'),_0x5ce43c,_0x5ce43c instanceof RangeError);logger[_0x04ab('0x14')](_0x5ce43c[_0x04ab('0x15')]);if(_0x5ce43c instanceof RangeError){if(_0x5ce43c[_0x04ab('0x16')]){delete _0x5ce43c[_0x04ab('0x16')];}_0x205600[_0x04ab('0x17')](0x194)[_0x04ab('0x18')](_0x5ce43c);}else{if(_0x5ce43c[_0x04ab('0x16')]){delete _0x5ce43c['name'];}_0x205600[_0x04ab('0x17')](0x1f4)['send'](_0x5ce43c);}};}function checkError(){return function(_0x412b52){if(!_0x412b52){throw new RangeError(_0x04ab('0x19'));}return _0x412b52;};}function respondWithRpcPromise(_0x15236a,_0x4f5499){return new BPromise(function(_0x15a36b,_0x1c08f4){var _0xf6275e=amiClient;return _0xf6275e['request'](_0x15236a,_0x4f5499)['then'](function(_0xc8358e){if(_0xc8358e[_0x04ab('0x14')]){if(_0xc8358e['error']['code']===0x1f4){return _0x1c08f4(_0xc8358e[_0x04ab('0x14')][_0x04ab('0x1a')]);}return _0x15a36b(_0xc8358e[_0x04ab('0x14')][_0x04ab('0x1a')]);}else{_0x15a36b(_0xc8358e[_0x04ab('0x1b')]);}})[_0x04ab('0x1c')](function(_0x21d9b7){_0x1c08f4(_0x21d9b7);});});}function getAgent(_0x46cec5){return db[_0x04ab('0x1d')]['findOne']({'where':{'id':_0x46cec5,'role':_0x04ab('0x1e')}})[_0x04ab('0x1f')](checkError());}function getAgentCheckSession(_0x115fa6,_0x9ea90c){return new BPromise(function(_0x590c28,_0x530a1c){var _0x2a498b=respondWithRpcPromise('VoiceChannels');var _0x404eae=getAgent(_0x115fa6);Promise[_0x04ab('0x20')]([_0x2a498b,_0x404eae])[_0x04ab('0x1f')](function(_0x3c25fb){var _0x12385b=_0x3c25fb[0x0];var _0x5596fc=_0x3c25fb[0x1];var _0x47f9be=_[_0x04ab('0x21')](_0x12385b[_0x04ab('0x22')],function(_0x28e77b){return _0x28e77b[_0x04ab('0x23')]==_0x5596fc['id']&&_0x28e77b[_0x04ab('0x24')]==_0x9ea90c;});if(_0x47f9be[_0x04ab('0x25')]==0x1){_0x590c28(_0x5596fc);}else{_0x530a1c(new RangeError(_0x04ab('0x26')+_0x9ea90c+_0x04ab('0x27')));}});});}exports[_0x04ab('0x28')]=function(_0x766754,_0x1d2e50){logger[_0x04ab('0xf')](_0x04ab('0x29'),_0x766754['body']);var _0x38c7f3=originateValidation[_0x04ab('0xb')](_0x766754['body']);if(_0x38c7f3[_0x04ab('0x25')]>0x0){return _0x1d2e50[_0x04ab('0x17')](0x190)['json'](_0x38c7f3);}var _0x45ee8c=_0x766754[_0x04ab('0x2a')]['userId'];var _0x69e081=_0x766754[_0x04ab('0x2a')][_0x04ab('0x2b')];var _0x3b61d0=_0x766754[_0x04ab('0x2a')][_0x04ab('0x2c')];var _0x538cf7=_0x766754[_0x04ab('0x2a')][_0x04ab('0x2d')];return getAgent(_0x45ee8c)[_0x04ab('0x1f')](function(_0x4fb442){logger[_0x04ab('0xf')]('entityFound:',_0x4fb442['name']);emit(util[_0x04ab('0x2e')](_0x04ab('0x2f'),_0x4fb442['name']),_0x04ab('0x30'),{'callNumber':_0x69e081,'callerId':_0x3b61d0,'callbackUrl':_0x538cf7});return _0x1d2e50['status'](0xc8)[_0x04ab('0x31')]({'error':![],'message':_0x04ab('0x32')});})[_0x04ab('0x1c')](handleError(_0x1d2e50));};exports[_0x04ab('0x33')]=function(_0x1c3a2c,_0x4018fa){logger[_0x04ab('0xf')](_0x04ab('0x34'),_0x1c3a2c[_0x04ab('0x2a')]);var _0x4783c9=hangupValidation[_0x04ab('0xb')](_0x1c3a2c[_0x04ab('0x2a')]);if(_0x4783c9['length']>0x0){return _0x4018fa[_0x04ab('0x17')](0x190)[_0x04ab('0x31')](_0x4783c9);}var _0x597c24=_0x1c3a2c['body'][_0x04ab('0x35')];var _0x206f0d=_0x1c3a2c[_0x04ab('0x2a')][_0x04ab('0x24')];return getAgent(_0x597c24)['then'](function(_0x1d7d44){logger[_0x04ab('0xf')](_0x04ab('0x36'),_0x1d7d44[_0x04ab('0x16')]);emit(util['format'](_0x04ab('0x2f'),_0x1d7d44[_0x04ab('0x16')]),_0x04ab('0x37'),{'sessionId':_0x206f0d});return _0x4018fa[_0x04ab('0x17')](0xc8)[_0x04ab('0x31')]({'error':![],'message':_0x04ab('0x38')});})[_0x04ab('0x1c')](handleError(_0x4018fa));};exports[_0x04ab('0x39')]=function(_0x489dfe,_0x52244c){logger[_0x04ab('0xf')](_0x04ab('0x3a'),_0x489dfe[_0x04ab('0x2a')]);var _0x46a7c5=answerValidation[_0x04ab('0xb')](_0x489dfe['body']);if(_0x46a7c5[_0x04ab('0x25')]>0x0){return _0x52244c[_0x04ab('0x17')](0x190)[_0x04ab('0x31')](_0x46a7c5);}var _0x5c8a12=_0x489dfe[_0x04ab('0x2a')][_0x04ab('0x35')];var _0x437f7a=_0x489dfe[_0x04ab('0x2a')][_0x04ab('0x24')];return getAgent(_0x5c8a12)[_0x04ab('0x1f')](function(_0x1bda0d){logger[_0x04ab('0xf')](_0x04ab('0x36'),_0x1bda0d[_0x04ab('0x16')]);emit(util['format'](_0x04ab('0x2f'),_0x1bda0d[_0x04ab('0x16')]),_0x04ab('0x3b'),{'sessionId':_0x437f7a});return _0x52244c[_0x04ab('0x17')](0xc8)[_0x04ab('0x31')]({'error':![],'message':_0x04ab('0x3c')});})['catch'](handleError(_0x52244c));};exports[_0x04ab('0x3d')]=function(_0xc9c74b,_0x18e2a2){logger[_0x04ab('0xf')]('hold\x20fired:',_0xc9c74b[_0x04ab('0x2a')]);var _0x17ce1b=holdValidation[_0x04ab('0xb')](_0xc9c74b[_0x04ab('0x2a')]);if(_0x17ce1b[_0x04ab('0x25')]>0x0){return _0x18e2a2['status'](0x190)[_0x04ab('0x31')](_0x17ce1b);}var _0x15b995=_0xc9c74b['body']['userId'];var _0x42b20f=_0xc9c74b[_0x04ab('0x2a')][_0x04ab('0x24')];return getAgent(_0x15b995)[_0x04ab('0x1f')](function(_0x1c4aa2){logger[_0x04ab('0xf')](_0x04ab('0x36'),_0x1c4aa2['name']);emit(util[_0x04ab('0x2e')](_0x04ab('0x2f'),_0x1c4aa2[_0x04ab('0x16')]),'webbar:hold',{'sessionId':_0x42b20f});return _0x18e2a2[_0x04ab('0x17')](0xc8)[_0x04ab('0x31')]({'error':![],'message':'hold\x20executed!'});})[_0x04ab('0x1c')](handleError(_0x18e2a2));};exports['unhold']=function(_0xc9db25,_0x4bc4f6){logger[_0x04ab('0xf')]('unhold\x20fired:',_0xc9db25['body']);var _0x2952ce=unholdValidation[_0x04ab('0xb')](_0xc9db25[_0x04ab('0x2a')]);if(_0x2952ce['length']>0x0){return _0x4bc4f6['status'](0x190)[_0x04ab('0x31')](_0x2952ce);}var _0x3611dd=_0xc9db25[_0x04ab('0x2a')]['userId'];var _0x2907b1=_0xc9db25['body'][_0x04ab('0x24')];return getAgent(_0x3611dd)[_0x04ab('0x1f')](function(_0x171008){logger['info'](_0x04ab('0x36'),_0x171008[_0x04ab('0x16')]);emit(util[_0x04ab('0x2e')](_0x04ab('0x2f'),_0x171008[_0x04ab('0x16')]),_0x04ab('0x3e'),{'sessionId':_0x2907b1});return _0x4bc4f6[_0x04ab('0x17')](0xc8)[_0x04ab('0x31')]({'error':![],'message':_0x04ab('0x3f')});})[_0x04ab('0x1c')](handleError(_0x4bc4f6));};exports[_0x04ab('0x40')]=function(_0x56b443,_0x3ecf57){logger['info'](_0x04ab('0x41'),_0x3ecf57[_0x04ab('0x2a')]);var _0x5cfa36=callsValidation['validate'](_0x56b443[_0x04ab('0x2a')]);if(_0x5cfa36[_0x04ab('0x25')]>0x0){return _0x3ecf57[_0x04ab('0x17')](0x190)[_0x04ab('0x31')](_0x5cfa36);}var _0x44bb89=_0x56b443[_0x04ab('0x2a')][_0x04ab('0x35')];var _0x466119=respondWithRpcPromise(_0x04ab('0x42'));var _0x4936cf=getAgent(_0x44bb89);return Promise[_0x04ab('0x20')]([_0x466119,_0x4936cf])[_0x04ab('0x1f')](function(_0x1b2b4c){var _0x590cf8=_0x1b2b4c[0x0];var _0x2b7e82=_0x1b2b4c[0x1];var _0x28c06e=_[_0x04ab('0x21')](_0x590cf8['rows'],function(_0x2d60c8){return _0x2d60c8[_0x04ab('0x23')]==_0x2b7e82['id'];});return _0x3ecf57[_0x04ab('0x17')](0xc8)[_0x04ab('0x31')]({'count':_0x28c06e['length'],'rows':_0x28c06e});})[_0x04ab('0x1c')](handleError(_0x3ecf57));};exports['conference']=function(_0x811a23,_0x331b3a){logger['info'](_0x04ab('0x43'),_0x811a23['body']);var _0x387dc8=conferenceValidation[_0x04ab('0xb')](_0x811a23[_0x04ab('0x2a')]);if(_0x387dc8[_0x04ab('0x25')]>0x0){return _0x331b3a['status'](0x190)[_0x04ab('0x31')](_0x387dc8);}var _0x110eaa=_0x811a23[_0x04ab('0x2a')][_0x04ab('0x35')];return getAgent(_0x110eaa)[_0x04ab('0x1f')](function(_0x266f2c){logger[_0x04ab('0xf')](_0x04ab('0x36'),_0x266f2c[_0x04ab('0x16')]);emit(util[_0x04ab('0x2e')](_0x04ab('0x2f'),_0x266f2c[_0x04ab('0x16')]),_0x04ab('0x44'));return _0x331b3a[_0x04ab('0x17')](0xc8)[_0x04ab('0x31')]({'error':![],'message':_0x04ab('0x45')});})[_0x04ab('0x1c')](handleError(_0x331b3a));};exports[_0x04ab('0x46')]=function(_0x18f5c9,_0x40a1eb){logger[_0x04ab('0xf')](_0x04ab('0x47'),_0x18f5c9['body']);var _0x379b90=transferValidation['validate'](_0x18f5c9[_0x04ab('0x2a')]);if(_0x379b90[_0x04ab('0x25')]>0x0){return _0x40a1eb[_0x04ab('0x17')](0x190)['json'](_0x379b90);}var _0x2e0665=_0x18f5c9[_0x04ab('0x2a')][_0x04ab('0x35')];var _0x4a24a4=_0x18f5c9[_0x04ab('0x2a')][_0x04ab('0x24')];var _0x1df4c0=_0x18f5c9['body'][_0x04ab('0x48')];return getAgent(_0x2e0665)[_0x04ab('0x1f')](function(_0x549a99){logger[_0x04ab('0xf')]('entityFound:',_0x549a99['name']);emit(util[_0x04ab('0x2e')](_0x04ab('0x2f'),_0x549a99[_0x04ab('0x16')]),_0x04ab('0x49'),{'sessionId':_0x4a24a4,'transferNumber':_0x1df4c0});return _0x40a1eb[_0x04ab('0x17')](0xc8)[_0x04ab('0x31')]({'error':![],'message':_0x04ab('0x4a')});})['catch'](handleError(_0x40a1eb));};