Built motion from commit 85328c08.|2.5.50
[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 _0x0c02=['info','stringify','emit','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','catch','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callerId','callbackUrl','format','user:%s','webbar:originate','hangup','hangup\x20fired:','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','conference','entityFound:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','lodash','../../mysqldb','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required'];(function(_0x4fb618,_0x5950cf){var _0x499480=function(_0x105820){while(--_0x105820){_0x4fb618['push'](_0x4fb618['shift']());}};_0x499480(++_0x5950cf);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x20c0('0x0'));var db=require(_0x20c0('0x1'))['db'];var config=require('../../config/environment');var util=require(_0x20c0('0x2'));var BPromise=require(_0x20c0('0x3'));var jayson=require(_0x20c0('0x4'));var amiClient=jayson[_0x20c0('0x5')][_0x20c0('0x6')]({'port':0x232a});var logger=require(_0x20c0('0x7'))(_0x20c0('0x8'));var Redis=require(_0x20c0('0x9'));config[_0x20c0('0xa')]=_[_0x20c0('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0x20c0('0xc'));var originateValidation=new Schema({'userId':{'type':_0x20c0('0xd'),'required':[!![],_0x20c0('0xe')]},'callNumber':{'type':_0x20c0('0xf'),'required':[!![],_0x20c0('0x10')]},'callerId':{'type':_0x20c0('0xf')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x20c0('0xe')]},'sessionId':{'type':_0x20c0('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x20c0('0xd'),'required':[!![],_0x20c0('0xe')]},'sessionId':{'type':'string','required':[!![],_0x20c0('0x11')]},'transferNumber':{'type':'string','required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x20c0('0xd'),'required':[!![],_0x20c0('0xe')]},'sessionId':{'type':_0x20c0('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x20c0('0xd'),'required':[!![],_0x20c0('0xe')]},'sessionId':{'type':_0x20c0('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x20c0('0xd'),'required':[!![],_0x20c0('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0x20c0('0xd'),'required':[!![],'userId\x20is\x20required']}});function emit(_0xd80b64,_0xc78626,_0x1a708e){logger[_0x20c0('0x12')](_0xd80b64,_0xc78626,JSON[_0x20c0('0x13')](_0x1a708e));io['to'](_0xd80b64)[_0x20c0('0x14')](_0xc78626,_0x1a708e);}function handleError(_0x5d6d18){return function(_0x55de3b){console['log'](_0x20c0('0x15'),_0x55de3b,_0x55de3b instanceof RangeError);logger[_0x20c0('0x16')](_0x55de3b[_0x20c0('0x17')]);if(_0x55de3b instanceof RangeError){if(_0x55de3b[_0x20c0('0x18')]){delete _0x55de3b['name'];}_0x5d6d18[_0x20c0('0x19')](0x194)[_0x20c0('0x1a')](_0x55de3b);}else{if(_0x55de3b[_0x20c0('0x18')]){delete _0x55de3b['name'];}_0x5d6d18['status'](0x1f4)[_0x20c0('0x1a')](_0x55de3b);}};}function checkError(){return function(_0x108973){if(!_0x108973){throw new RangeError(_0x20c0('0x1b'));}return _0x108973;};}function respondWithRpcPromise(_0x2315dc,_0x36ed49){return new BPromise(function(_0x53d8e8,_0x2213f5){var _0x28959a=amiClient;return _0x28959a[_0x20c0('0x1c')](_0x2315dc,_0x36ed49)[_0x20c0('0x1d')](function(_0x52b8b8){if(_0x52b8b8[_0x20c0('0x16')]){if(_0x52b8b8[_0x20c0('0x16')][_0x20c0('0x1e')]===0x1f4){return _0x2213f5(_0x52b8b8[_0x20c0('0x16')][_0x20c0('0x1f')]);}return _0x53d8e8(_0x52b8b8[_0x20c0('0x16')][_0x20c0('0x1f')]);}else{_0x53d8e8(_0x52b8b8['result']);}})[_0x20c0('0x20')](function(_0x595d94){_0x2213f5(_0x595d94);});});}function getAgent(_0x22d11a){return db[_0x20c0('0x21')][_0x20c0('0x22')]({'where':{'id':_0x22d11a,'role':_0x20c0('0x23')}})['then'](checkError());}function getAgentCheckSession(_0x4e0cbb,_0x3012d5){return new BPromise(function(_0x198bdd,_0x1e3790){var _0x5b863b=respondWithRpcPromise(_0x20c0('0x24'));var _0x25592b=getAgent(_0x4e0cbb);Promise[_0x20c0('0x25')]([_0x5b863b,_0x25592b])[_0x20c0('0x1d')](function(_0x4baaed){var _0x49b738=_0x4baaed[0x0];var _0x29d8ee=_0x4baaed[0x1];var _0x11f405=_[_0x20c0('0x26')](_0x49b738[_0x20c0('0x27')],function(_0x3055e9){return _0x3055e9[_0x20c0('0x28')]==_0x29d8ee['id']&&_0x3055e9[_0x20c0('0x29')]==_0x3012d5;});if(_0x11f405[_0x20c0('0x2a')]==0x1){_0x198bdd(_0x29d8ee);}else{_0x1e3790(new RangeError(_0x20c0('0x2b')+_0x3012d5+_0x20c0('0x2c')));}});});}exports[_0x20c0('0x2d')]=function(_0x32448b,_0x1fef93){logger[_0x20c0('0x12')]('originate\x20fired:',_0x32448b[_0x20c0('0x2e')]);var _0x1ad64f=originateValidation[_0x20c0('0xc')](_0x32448b[_0x20c0('0x2e')]);if(_0x1ad64f['length']>0x0){return _0x1fef93[_0x20c0('0x19')](0x190)[_0x20c0('0x2f')](_0x1ad64f);}var _0x355db9=_0x32448b[_0x20c0('0x2e')][_0x20c0('0x30')];var _0x5550b7=_0x32448b[_0x20c0('0x2e')]['callNumber'];var _0x5e9640=_0x32448b[_0x20c0('0x2e')][_0x20c0('0x31')];var _0x3b334a=_0x32448b[_0x20c0('0x2e')][_0x20c0('0x32')];return getAgent(_0x355db9)[_0x20c0('0x1d')](function(_0x41532c){logger['info']('entityFound:',_0x41532c['name']);emit(util[_0x20c0('0x33')](_0x20c0('0x34'),_0x41532c['name']),_0x20c0('0x35'),{'callNumber':_0x5550b7,'callerId':_0x5e9640,'callbackUrl':_0x3b334a});return _0x1fef93[_0x20c0('0x19')](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})[_0x20c0('0x20')](handleError(_0x1fef93));};exports[_0x20c0('0x36')]=function(_0x481dc0,_0x44326a){logger['info'](_0x20c0('0x37'),_0x481dc0[_0x20c0('0x2e')]);var _0xcaa484=hangupValidation[_0x20c0('0xc')](_0x481dc0['body']);if(_0xcaa484[_0x20c0('0x2a')]>0x0){return _0x44326a[_0x20c0('0x19')](0x190)[_0x20c0('0x2f')](_0xcaa484);}var _0x415b41=_0x481dc0[_0x20c0('0x2e')][_0x20c0('0x30')];var _0x121ddf=_0x481dc0[_0x20c0('0x2e')]['sessionId'];return getAgent(_0x415b41)['then'](function(_0x581fe4){logger[_0x20c0('0x12')]('entityFound:',_0x581fe4[_0x20c0('0x18')]);emit(util[_0x20c0('0x33')](_0x20c0('0x34'),_0x581fe4[_0x20c0('0x18')]),'webbar:hangup',{'sessionId':_0x121ddf});return _0x44326a[_0x20c0('0x19')](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})[_0x20c0('0x20')](handleError(_0x44326a));};exports[_0x20c0('0x38')]=function(_0x456d28,_0x446c89){logger['info'](_0x20c0('0x39'),_0x456d28[_0x20c0('0x2e')]);var _0x39852a=answerValidation[_0x20c0('0xc')](_0x456d28['body']);if(_0x39852a[_0x20c0('0x2a')]>0x0){return _0x446c89[_0x20c0('0x19')](0x190)['json'](_0x39852a);}var _0x285509=_0x456d28[_0x20c0('0x2e')][_0x20c0('0x30')];var _0x527f6f=_0x456d28[_0x20c0('0x2e')]['sessionId'];return getAgent(_0x285509)['then'](function(_0x49759b){logger[_0x20c0('0x12')]('entityFound:',_0x49759b[_0x20c0('0x18')]);emit(util[_0x20c0('0x33')](_0x20c0('0x34'),_0x49759b[_0x20c0('0x18')]),_0x20c0('0x3a'),{'sessionId':_0x527f6f});return _0x446c89[_0x20c0('0x19')](0xc8)[_0x20c0('0x2f')]({'error':![],'message':'answer\x20executed!'});})[_0x20c0('0x20')](handleError(_0x446c89));};exports[_0x20c0('0x3b')]=function(_0x523b16,_0x1b81d5){logger[_0x20c0('0x12')](_0x20c0('0x3c'),_0x523b16['body']);var _0x4fa87f=holdValidation[_0x20c0('0xc')](_0x523b16[_0x20c0('0x2e')]);if(_0x4fa87f[_0x20c0('0x2a')]>0x0){return _0x1b81d5['status'](0x190)['json'](_0x4fa87f);}var _0x1e11c4=_0x523b16[_0x20c0('0x2e')][_0x20c0('0x30')];var _0x55d46c=_0x523b16[_0x20c0('0x2e')][_0x20c0('0x29')];return getAgent(_0x1e11c4)['then'](function(_0x4972a3){logger[_0x20c0('0x12')]('entityFound:',_0x4972a3[_0x20c0('0x18')]);emit(util['format'](_0x20c0('0x34'),_0x4972a3[_0x20c0('0x18')]),'webbar:hold',{'sessionId':_0x55d46c});return _0x1b81d5['status'](0xc8)[_0x20c0('0x2f')]({'error':![],'message':_0x20c0('0x3d')});})[_0x20c0('0x20')](handleError(_0x1b81d5));};exports[_0x20c0('0x3e')]=function(_0x35cc23,_0x327b12){logger[_0x20c0('0x12')](_0x20c0('0x3f'),_0x35cc23['body']);var _0x24b5f5=unholdValidation[_0x20c0('0xc')](_0x35cc23[_0x20c0('0x2e')]);if(_0x24b5f5[_0x20c0('0x2a')]>0x0){return _0x327b12[_0x20c0('0x19')](0x190)['json'](_0x24b5f5);}var _0x4eaca2=_0x35cc23[_0x20c0('0x2e')][_0x20c0('0x30')];var _0x1d0c97=_0x35cc23[_0x20c0('0x2e')][_0x20c0('0x29')];return getAgent(_0x4eaca2)[_0x20c0('0x1d')](function(_0x431336){logger['info']('entityFound:',_0x431336[_0x20c0('0x18')]);emit(util[_0x20c0('0x33')](_0x20c0('0x34'),_0x431336['name']),_0x20c0('0x40'),{'sessionId':_0x1d0c97});return _0x327b12['status'](0xc8)[_0x20c0('0x2f')]({'error':![],'message':_0x20c0('0x41')});})[_0x20c0('0x20')](handleError(_0x327b12));};exports['calls']=function(_0x30a75d,_0x28bc98){logger[_0x20c0('0x12')](_0x20c0('0x42'),_0x28bc98[_0x20c0('0x2e')]);var _0x5dc06f=callsValidation[_0x20c0('0xc')](_0x30a75d[_0x20c0('0x2e')]);if(_0x5dc06f[_0x20c0('0x2a')]>0x0){return _0x28bc98[_0x20c0('0x19')](0x190)['json'](_0x5dc06f);}var _0x1aaaec=_0x30a75d['body'][_0x20c0('0x30')];var _0x5d40c9=respondWithRpcPromise(_0x20c0('0x24'));var _0x2e64f5=getAgent(_0x1aaaec);return Promise[_0x20c0('0x25')]([_0x5d40c9,_0x2e64f5])[_0x20c0('0x1d')](function(_0x54bb05){var _0x371cbb=_0x54bb05[0x0];var _0xcd87e8=_0x54bb05[0x1];var _0x1e1c4b=_[_0x20c0('0x26')](_0x371cbb[_0x20c0('0x27')],function(_0x2091d2){return _0x2091d2[_0x20c0('0x28')]==_0xcd87e8['id'];});return _0x28bc98[_0x20c0('0x19')](0xc8)['json']({'count':_0x1e1c4b[_0x20c0('0x2a')],'rows':_0x1e1c4b});})[_0x20c0('0x20')](handleError(_0x28bc98));};exports[_0x20c0('0x43')]=function(_0x56e1f6,_0x1f553c){logger[_0x20c0('0x12')]('conference\x20fired:',_0x56e1f6[_0x20c0('0x2e')]);var _0x4dd07d=conferenceValidation['validate'](_0x56e1f6['body']);if(_0x4dd07d['length']>0x0){return _0x1f553c[_0x20c0('0x19')](0x190)[_0x20c0('0x2f')](_0x4dd07d);}var _0x1dc800=_0x56e1f6[_0x20c0('0x2e')][_0x20c0('0x30')];return getAgent(_0x1dc800)[_0x20c0('0x1d')](function(_0x1f16e6){logger[_0x20c0('0x12')](_0x20c0('0x44'),_0x1f16e6['name']);emit(util[_0x20c0('0x33')](_0x20c0('0x34'),_0x1f16e6[_0x20c0('0x18')]),_0x20c0('0x45'));return _0x1f553c[_0x20c0('0x19')](0xc8)[_0x20c0('0x2f')]({'error':![],'message':_0x20c0('0x46')});})[_0x20c0('0x20')](handleError(_0x1f553c));};exports[_0x20c0('0x47')]=function(_0x309a40,_0x54b78f){logger[_0x20c0('0x12')](_0x20c0('0x48'),_0x309a40[_0x20c0('0x2e')]);var _0x11511c=transferValidation['validate'](_0x309a40['body']);if(_0x11511c[_0x20c0('0x2a')]>0x0){return _0x54b78f[_0x20c0('0x19')](0x190)['json'](_0x11511c);}var _0x2222eb=_0x309a40['body'][_0x20c0('0x30')];var _0x44b17d=_0x309a40[_0x20c0('0x2e')]['sessionId'];var _0x59c854=_0x309a40[_0x20c0('0x2e')][_0x20c0('0x49')];return getAgent(_0x2222eb)[_0x20c0('0x1d')](function(_0x2df90c){logger['info']('entityFound:',_0x2df90c['name']);emit(util[_0x20c0('0x33')](_0x20c0('0x34'),_0x2df90c[_0x20c0('0x18')]),'webbar:transfer',{'sessionId':_0x44b17d,'transferNumber':_0x59c854});return _0x54b78f['status'](0xc8)[_0x20c0('0x2f')]({'error':![],'message':_0x20c0('0x4a')});})['catch'](handleError(_0x54b78f));};