Built motion from commit (unavailable).|2.5.14
[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 _0x1a66=['webbar:hangup','answer','answer\x20fired:','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','http','../../config/logger','webbarapi','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','error','stack','name','status','send','NotFound','request','then','code','message','result','User','findOne','agent','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','catch','hangup','hangup\x20fired:'];(function(_0x14726c,_0x5086c5){var _0x2af547=function(_0x480bee){while(--_0x480bee){_0x14726c['push'](_0x14726c['shift']());}};_0x2af547(++_0x5086c5);}(_0x1a66,0x102));var _0x61a6=function(_0x3c9e6b,_0x4c121b){_0x3c9e6b=_0x3c9e6b-0x0;var _0x4d6687=_0x1a66[_0x3c9e6b];return _0x4d6687;};'use strict';var path=require(_0x61a6('0x0'));var fs=require('fs');var _=require(_0x61a6('0x1'));var db=require(_0x61a6('0x2'))['db'];var config=require(_0x61a6('0x3'));var util=require(_0x61a6('0x4'));var BPromise=require(_0x61a6('0x5'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x61a6('0x6')]({'port':0x232a});var logger=require(_0x61a6('0x7'))(_0x61a6('0x8'));var Redis=require('ioredis');config['redis']=_['defaults'](config['redis'],{'host':_0x61a6('0x9'),'port':0x18eb});var io=require(_0x61a6('0xa'))(new Redis(config['redis']));var Schema=require(_0x61a6('0xb'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x61a6('0xc')]},'callNumber':{'type':_0x61a6('0xd'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x61a6('0xd')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x61a6('0xc')]},'sessionId':{'type':_0x61a6('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x61a6('0xe'),'required':[!![],_0x61a6('0xc')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x61a6('0xe'),'required':[!![],_0x61a6('0xc')]},'sessionId':{'type':'string','required':[!![],_0x61a6('0xf')]},'transferNumber':{'type':'string','required':[!![],_0x61a6('0x10')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x61a6('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x61a6('0xe'),'required':[!![],_0x61a6('0xc')]},'sessionId':{'type':_0x61a6('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x61a6('0xe'),'required':[!![],_0x61a6('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':_0x61a6('0xe'),'required':[!![],_0x61a6('0xc')]}});function emit(_0x55b923,_0x107d97,_0x4c810e){logger[_0x61a6('0x11')](_0x55b923,_0x107d97,JSON[_0x61a6('0x12')](_0x4c810e));io['to'](_0x55b923)[_0x61a6('0x13')](_0x107d97,_0x4c810e);}function handleError(_0x115c8b){return function(_0x365bb2){console[_0x61a6('0x14')]('handleError:',_0x365bb2,_0x365bb2 instanceof RangeError);logger[_0x61a6('0x15')](_0x365bb2[_0x61a6('0x16')]);if(_0x365bb2 instanceof RangeError){if(_0x365bb2[_0x61a6('0x17')]){delete _0x365bb2['name'];}_0x115c8b[_0x61a6('0x18')](0x194)['send'](_0x365bb2);}else{if(_0x365bb2[_0x61a6('0x17')]){delete _0x365bb2[_0x61a6('0x17')];}_0x115c8b[_0x61a6('0x18')](0x1f4)[_0x61a6('0x19')](_0x365bb2);}};}function checkError(){return function(_0x4a0daa){if(!_0x4a0daa){throw new RangeError(_0x61a6('0x1a'));}return _0x4a0daa;};}function respondWithRpcPromise(_0x755886,_0x51a15e){return new BPromise(function(_0xac9dd2,_0x530650){var _0x5b1109=amiClient;return _0x5b1109[_0x61a6('0x1b')](_0x755886,_0x51a15e)[_0x61a6('0x1c')](function(_0x2bdee3){if(_0x2bdee3['error']){if(_0x2bdee3['error'][_0x61a6('0x1d')]===0x1f4){return _0x530650(_0x2bdee3['error'][_0x61a6('0x1e')]);}return _0xac9dd2(_0x2bdee3[_0x61a6('0x15')][_0x61a6('0x1e')]);}else{_0xac9dd2(_0x2bdee3[_0x61a6('0x1f')]);}})['catch'](function(_0x48e59e){_0x530650(_0x48e59e);});});}function getAgent(_0xa267bd){return db[_0x61a6('0x20')][_0x61a6('0x21')]({'where':{'id':_0xa267bd,'role':_0x61a6('0x22')}})[_0x61a6('0x1c')](checkError());}function getAgentCheckSession(_0xe518e8,_0x38b754){return new BPromise(function(_0x1ba337,_0x3c7e3c){var _0x76992c=respondWithRpcPromise('VoiceChannels');var _0x7cebf8=getAgent(_0xe518e8);Promise[_0x61a6('0x23')]([_0x76992c,_0x7cebf8])[_0x61a6('0x1c')](function(_0x51063c){var _0x125d06=_0x51063c[0x0];var _0x268b53=_0x51063c[0x1];var _0x16c57b=_[_0x61a6('0x24')](_0x125d06[_0x61a6('0x25')],function(_0x102794){return _0x102794[_0x61a6('0x26')]==_0x268b53['id']&&_0x102794[_0x61a6('0x27')]==_0x38b754;});if(_0x16c57b[_0x61a6('0x28')]==0x1){_0x1ba337(_0x268b53);}else{_0x3c7e3c(new RangeError(_0x61a6('0x29')+_0x38b754+_0x61a6('0x2a')));}});});}exports[_0x61a6('0x2b')]=function(_0x2e4e33,_0x1f9784){logger[_0x61a6('0x11')](_0x61a6('0x2c'),_0x2e4e33[_0x61a6('0x2d')]);var _0x148693=originateValidation['validate'](_0x2e4e33[_0x61a6('0x2d')]);if(_0x148693[_0x61a6('0x28')]>0x0){return _0x1f9784[_0x61a6('0x18')](0x190)[_0x61a6('0x2e')](_0x148693);}var _0x27e384=_0x2e4e33['body'][_0x61a6('0x2f')];var _0x119cd1=_0x2e4e33['body'][_0x61a6('0x30')];var _0x4de2f5=_0x2e4e33[_0x61a6('0x2d')]['callerId'];var _0x386c6e=_0x2e4e33[_0x61a6('0x2d')][_0x61a6('0x31')];return getAgent(_0x27e384)['then'](function(_0x4ea820){logger[_0x61a6('0x11')](_0x61a6('0x32'),_0x4ea820[_0x61a6('0x17')]);emit(util[_0x61a6('0x33')](_0x61a6('0x34'),_0x4ea820[_0x61a6('0x17')]),_0x61a6('0x35'),{'callNumber':_0x119cd1,'callerId':_0x4de2f5,'callbackUrl':_0x386c6e});return _0x1f9784[_0x61a6('0x18')](0xc8)[_0x61a6('0x2e')]({'error':![],'message':_0x61a6('0x36')});})[_0x61a6('0x37')](handleError(_0x1f9784));};exports[_0x61a6('0x38')]=function(_0x3b17d0,_0x26fc56){logger[_0x61a6('0x11')](_0x61a6('0x39'),_0x3b17d0[_0x61a6('0x2d')]);var _0x53373b=hangupValidation[_0x61a6('0xb')](_0x3b17d0['body']);if(_0x53373b[_0x61a6('0x28')]>0x0){return _0x26fc56[_0x61a6('0x18')](0x190)[_0x61a6('0x2e')](_0x53373b);}var _0x58a51d=_0x3b17d0['body'][_0x61a6('0x2f')];var _0x548cf3=_0x3b17d0[_0x61a6('0x2d')][_0x61a6('0x27')];return getAgent(_0x58a51d)[_0x61a6('0x1c')](function(_0x24284e){logger[_0x61a6('0x11')](_0x61a6('0x32'),_0x24284e[_0x61a6('0x17')]);emit(util[_0x61a6('0x33')](_0x61a6('0x34'),_0x24284e[_0x61a6('0x17')]),_0x61a6('0x3a'),{'sessionId':_0x548cf3});return _0x26fc56['status'](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x26fc56));};exports[_0x61a6('0x3b')]=function(_0x322d5f,_0xe0e0d){logger['info'](_0x61a6('0x3c'),_0x322d5f[_0x61a6('0x2d')]);var _0x4ab557=answerValidation[_0x61a6('0xb')](_0x322d5f['body']);if(_0x4ab557['length']>0x0){return _0xe0e0d[_0x61a6('0x18')](0x190)[_0x61a6('0x2e')](_0x4ab557);}var _0x563cb6=_0x322d5f[_0x61a6('0x2d')][_0x61a6('0x2f')];var _0x9ca16d=_0x322d5f[_0x61a6('0x2d')][_0x61a6('0x27')];return getAgent(_0x563cb6)[_0x61a6('0x1c')](function(_0x28126a){logger['info'](_0x61a6('0x32'),_0x28126a[_0x61a6('0x17')]);emit(util[_0x61a6('0x33')]('user:%s',_0x28126a[_0x61a6('0x17')]),'webbar:answer',{'sessionId':_0x9ca16d});return _0xe0e0d[_0x61a6('0x18')](0xc8)[_0x61a6('0x2e')]({'error':![],'message':_0x61a6('0x3d')});})['catch'](handleError(_0xe0e0d));};exports['hold']=function(_0x1717b9,_0x3aa9f5){logger[_0x61a6('0x11')](_0x61a6('0x3e'),_0x1717b9[_0x61a6('0x2d')]);var _0x1f4cee=holdValidation[_0x61a6('0xb')](_0x1717b9['body']);if(_0x1f4cee[_0x61a6('0x28')]>0x0){return _0x3aa9f5['status'](0x190)[_0x61a6('0x2e')](_0x1f4cee);}var _0x33ca01=_0x1717b9[_0x61a6('0x2d')][_0x61a6('0x2f')];var _0x39f724=_0x1717b9['body'][_0x61a6('0x27')];return getAgent(_0x33ca01)[_0x61a6('0x1c')](function(_0x2ec48c){logger[_0x61a6('0x11')](_0x61a6('0x32'),_0x2ec48c['name']);emit(util[_0x61a6('0x33')]('user:%s',_0x2ec48c[_0x61a6('0x17')]),_0x61a6('0x3f'),{'sessionId':_0x39f724});return _0x3aa9f5[_0x61a6('0x18')](0xc8)[_0x61a6('0x2e')]({'error':![],'message':_0x61a6('0x40')});})[_0x61a6('0x37')](handleError(_0x3aa9f5));};exports[_0x61a6('0x41')]=function(_0xbfa1ef,_0x7b9f7a){logger[_0x61a6('0x11')](_0x61a6('0x42'),_0xbfa1ef[_0x61a6('0x2d')]);var _0x44add5=unholdValidation[_0x61a6('0xb')](_0xbfa1ef[_0x61a6('0x2d')]);if(_0x44add5[_0x61a6('0x28')]>0x0){return _0x7b9f7a[_0x61a6('0x18')](0x190)[_0x61a6('0x2e')](_0x44add5);}var _0x31aed0=_0xbfa1ef['body'][_0x61a6('0x2f')];var _0x346a11=_0xbfa1ef[_0x61a6('0x2d')]['sessionId'];return getAgent(_0x31aed0)['then'](function(_0x312ebe){logger[_0x61a6('0x11')](_0x61a6('0x32'),_0x312ebe[_0x61a6('0x17')]);emit(util[_0x61a6('0x33')](_0x61a6('0x34'),_0x312ebe[_0x61a6('0x17')]),'webbar:unhold',{'sessionId':_0x346a11});return _0x7b9f7a[_0x61a6('0x18')](0xc8)[_0x61a6('0x2e')]({'error':![],'message':_0x61a6('0x43')});})[_0x61a6('0x37')](handleError(_0x7b9f7a));};exports[_0x61a6('0x44')]=function(_0x2d72c6,_0x4fb5d7){logger[_0x61a6('0x11')](_0x61a6('0x45'),_0x4fb5d7[_0x61a6('0x2d')]);var _0x1b8773=callsValidation['validate'](_0x2d72c6[_0x61a6('0x2d')]);if(_0x1b8773[_0x61a6('0x28')]>0x0){return _0x4fb5d7['status'](0x190)['json'](_0x1b8773);}var _0x506e7d=_0x2d72c6[_0x61a6('0x2d')][_0x61a6('0x2f')];var _0x4a3492=respondWithRpcPromise('VoiceChannels');var _0x50172f=getAgent(_0x506e7d);return Promise[_0x61a6('0x23')]([_0x4a3492,_0x50172f])[_0x61a6('0x1c')](function(_0x5d1705){var _0x473684=_0x5d1705[0x0];var _0x3e8772=_0x5d1705[0x1];var _0x517436=_[_0x61a6('0x24')](_0x473684[_0x61a6('0x25')],function(_0x5930a8){return _0x5930a8['UserId']==_0x3e8772['id'];});return _0x4fb5d7[_0x61a6('0x18')](0xc8)[_0x61a6('0x2e')]({'count':_0x517436['length'],'rows':_0x517436});})['catch'](handleError(_0x4fb5d7));};exports[_0x61a6('0x46')]=function(_0x607043,_0xd6ec86){logger['info'](_0x61a6('0x47'),_0x607043[_0x61a6('0x2d')]);var _0x4ce1e2=conferenceValidation[_0x61a6('0xb')](_0x607043['body']);if(_0x4ce1e2[_0x61a6('0x28')]>0x0){return _0xd6ec86[_0x61a6('0x18')](0x190)['json'](_0x4ce1e2);}var _0x3bc836=_0x607043['body']['userId'];return getAgent(_0x3bc836)['then'](function(_0x13b8ed){logger[_0x61a6('0x11')]('entityFound:',_0x13b8ed[_0x61a6('0x17')]);emit(util['format']('user:%s',_0x13b8ed['name']),_0x61a6('0x48'));return _0xd6ec86[_0x61a6('0x18')](0xc8)[_0x61a6('0x2e')]({'error':![],'message':_0x61a6('0x49')});})[_0x61a6('0x37')](handleError(_0xd6ec86));};exports[_0x61a6('0x4a')]=function(_0x5f5050,_0xfa1f7c){logger['info'](_0x61a6('0x4b'),_0x5f5050[_0x61a6('0x2d')]);var _0x44434a=transferValidation[_0x61a6('0xb')](_0x5f5050[_0x61a6('0x2d')]);if(_0x44434a[_0x61a6('0x28')]>0x0){return _0xfa1f7c[_0x61a6('0x18')](0x190)[_0x61a6('0x2e')](_0x44434a);}var _0x33815e=_0x5f5050['body'][_0x61a6('0x2f')];var _0x3c4517=_0x5f5050[_0x61a6('0x2d')][_0x61a6('0x27')];var _0x3ab67b=_0x5f5050['body'][_0x61a6('0x4c')];return getAgent(_0x33815e)[_0x61a6('0x1c')](function(_0x3d266c){logger['info'](_0x61a6('0x32'),_0x3d266c[_0x61a6('0x17')]);emit(util[_0x61a6('0x33')](_0x61a6('0x34'),_0x3d266c[_0x61a6('0x17')]),_0x61a6('0x4d'),{'sessionId':_0x3c4517,'transferNumber':_0x3ab67b});return _0xfa1f7c[_0x61a6('0x18')](0xc8)['json']({'error':![],'message':_0x61a6('0x4e')});})[_0x61a6('0x37')](handleError(_0xfa1f7c));};