Built motion from commit 994c64e1.|2.6.1
[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 _0xf4eb=['originate','body','userId','callNumber','callerId','callbackUrl','entityFound:','webbar:originate','json','originate\x20executed!','hangup','validate','format','user:%s','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','calls','calls\x20fired:','VoiceChannels','conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','bluebird','http','../../config/logger','webbarapi','ioredis','redis','defaults','socket.io-emitter','number','userId\x20is\x20required','string','callNumber\x20is\x20required','transferNumber\x20is\x20required','info','stringify','stack','name','status','send','NotFound','then','error','code','message','result','catch','User','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!'];(function(_0x3074f3,_0x4f2c03){var _0x53f112=function(_0x4a17af){while(--_0x4a17af){_0x3074f3['push'](_0x3074f3['shift']());}};_0x53f112(++_0x4f2c03);}(_0xf4eb,0xec));var _0xbf4e=function(_0x43a677,_0x5be2ba){_0x43a677=_0x43a677-0x0;var _0x2790d2=_0xf4eb[_0x43a677];return _0x2790d2;};'use strict';var path=require(_0xbf4e('0x0'));var fs=require('fs');var _=require('lodash');var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0xbf4e('0x1'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0xbf4e('0x2')]({'port':0x232a});var logger=require(_0xbf4e('0x3'))(_0xbf4e('0x4'));var Redis=require(_0xbf4e('0x5'));config[_0xbf4e('0x6')]=_[_0xbf4e('0x7')](config[_0xbf4e('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xbf4e('0x8'))(new Redis(config['redis']));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0xbf4e('0x9'),'required':[!![],_0xbf4e('0xa')]},'callNumber':{'type':_0xbf4e('0xb'),'required':[!![],_0xbf4e('0xc')]},'callerId':{'type':_0xbf4e('0xb')},'callbackUrl':{'type':_0xbf4e('0xb')}});var hangupValidation=new Schema({'userId':{'type':_0xbf4e('0x9'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xbf4e('0x9'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xbf4e('0xb'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xbf4e('0x9'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xbf4e('0xb'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':'string','required':[!![],_0xbf4e('0xd')]}});var holdValidation=new Schema({'userId':{'type':_0xbf4e('0x9'),'required':[!![],_0xbf4e('0xa')]},'sessionId':{'type':_0xbf4e('0xb'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xbf4e('0x9'),'required':[!![],_0xbf4e('0xa')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xbf4e('0xa')]}});var conferenceValidation=new Schema({'userId':{'type':_0xbf4e('0x9'),'required':[!![],_0xbf4e('0xa')]}});function emit(_0x542909,_0x14110b,_0x2c292c){logger[_0xbf4e('0xe')](_0x542909,_0x14110b,JSON[_0xbf4e('0xf')](_0x2c292c));io['to'](_0x542909)['emit'](_0x14110b,_0x2c292c);}function handleError(_0x247322){return function(_0x577c27){console['log']('handleError:',_0x577c27,_0x577c27 instanceof RangeError);logger['error'](_0x577c27[_0xbf4e('0x10')]);if(_0x577c27 instanceof RangeError){if(_0x577c27[_0xbf4e('0x11')]){delete _0x577c27[_0xbf4e('0x11')];}_0x247322['status'](0x194)['send'](_0x577c27);}else{if(_0x577c27[_0xbf4e('0x11')]){delete _0x577c27[_0xbf4e('0x11')];}_0x247322[_0xbf4e('0x12')](0x1f4)[_0xbf4e('0x13')](_0x577c27);}};}function checkError(){return function(_0x344727){if(!_0x344727){throw new RangeError(_0xbf4e('0x14'));}return _0x344727;};}function respondWithRpcPromise(_0x415963,_0x3d642a){return new BPromise(function(_0xd09e12,_0x376832){var _0x30539b=amiClient;return _0x30539b['request'](_0x415963,_0x3d642a)[_0xbf4e('0x15')](function(_0x2e7673){if(_0x2e7673['error']){if(_0x2e7673[_0xbf4e('0x16')][_0xbf4e('0x17')]===0x1f4){return _0x376832(_0x2e7673[_0xbf4e('0x16')][_0xbf4e('0x18')]);}return _0xd09e12(_0x2e7673[_0xbf4e('0x16')]['message']);}else{_0xd09e12(_0x2e7673[_0xbf4e('0x19')]);}})[_0xbf4e('0x1a')](function(_0x3d6863){_0x376832(_0x3d6863);});});}function getAgent(_0x5766d4){return db[_0xbf4e('0x1b')]['findOne']({'where':{'id':_0x5766d4,'role':'agent'}})[_0xbf4e('0x15')](checkError());}function getAgentCheckSession(_0x5a0a9b,_0x38c923){return new BPromise(function(_0x315df3,_0x4021a9){var _0x41f918=respondWithRpcPromise('VoiceChannels');var _0x2d4686=getAgent(_0x5a0a9b);Promise[_0xbf4e('0x1c')]([_0x41f918,_0x2d4686])[_0xbf4e('0x15')](function(_0x4cd4a1){var _0x681c3b=_0x4cd4a1[0x0];var _0x590c85=_0x4cd4a1[0x1];var _0x1dfa81=_[_0xbf4e('0x1d')](_0x681c3b[_0xbf4e('0x1e')],function(_0x498dbd){return _0x498dbd[_0xbf4e('0x1f')]==_0x590c85['id']&&_0x498dbd[_0xbf4e('0x20')]==_0x38c923;});if(_0x1dfa81[_0xbf4e('0x21')]==0x1){_0x315df3(_0x590c85);}else{_0x4021a9(new RangeError(_0xbf4e('0x22')+_0x38c923+_0xbf4e('0x23')));}});});}exports[_0xbf4e('0x24')]=function(_0x5a7c71,_0x35c82d){logger[_0xbf4e('0xe')]('originate\x20fired:',_0x5a7c71[_0xbf4e('0x25')]);var _0x26a375=originateValidation['validate'](_0x5a7c71[_0xbf4e('0x25')]);if(_0x26a375['length']>0x0){return _0x35c82d[_0xbf4e('0x12')](0x190)['json'](_0x26a375);}var _0x2f49d8=_0x5a7c71[_0xbf4e('0x25')][_0xbf4e('0x26')];var _0x5b3b28=_0x5a7c71[_0xbf4e('0x25')][_0xbf4e('0x27')];var _0x70c54f=_0x5a7c71[_0xbf4e('0x25')][_0xbf4e('0x28')];var _0x477873=_0x5a7c71['body'][_0xbf4e('0x29')];return getAgent(_0x2f49d8)[_0xbf4e('0x15')](function(_0x25b837){logger[_0xbf4e('0xe')](_0xbf4e('0x2a'),_0x25b837['name']);emit(util['format']('user:%s',_0x25b837['name']),_0xbf4e('0x2b'),{'callNumber':_0x5b3b28,'callerId':_0x70c54f,'callbackUrl':_0x477873});return _0x35c82d[_0xbf4e('0x12')](0xc8)[_0xbf4e('0x2c')]({'error':![],'message':_0xbf4e('0x2d')});})[_0xbf4e('0x1a')](handleError(_0x35c82d));};exports[_0xbf4e('0x2e')]=function(_0x355b42,_0x467b74){logger[_0xbf4e('0xe')]('hangup\x20fired:',_0x355b42['body']);var _0x303fd8=hangupValidation[_0xbf4e('0x2f')](_0x355b42[_0xbf4e('0x25')]);if(_0x303fd8['length']>0x0){return _0x467b74[_0xbf4e('0x12')](0x190)['json'](_0x303fd8);}var _0x370d90=_0x355b42[_0xbf4e('0x25')][_0xbf4e('0x26')];var _0xb30f90=_0x355b42['body'][_0xbf4e('0x20')];return getAgent(_0x370d90)[_0xbf4e('0x15')](function(_0x3aa308){logger[_0xbf4e('0xe')]('entityFound:',_0x3aa308[_0xbf4e('0x11')]);emit(util[_0xbf4e('0x30')](_0xbf4e('0x31'),_0x3aa308[_0xbf4e('0x11')]),_0xbf4e('0x32'),{'sessionId':_0xb30f90});return _0x467b74[_0xbf4e('0x12')](0xc8)[_0xbf4e('0x2c')]({'error':![],'message':'hangup\x20executed!'});})[_0xbf4e('0x1a')](handleError(_0x467b74));};exports[_0xbf4e('0x33')]=function(_0x518400,_0x47d6f2){logger[_0xbf4e('0xe')](_0xbf4e('0x34'),_0x518400['body']);var _0x5bfc4d=answerValidation[_0xbf4e('0x2f')](_0x518400[_0xbf4e('0x25')]);if(_0x5bfc4d[_0xbf4e('0x21')]>0x0){return _0x47d6f2[_0xbf4e('0x12')](0x190)[_0xbf4e('0x2c')](_0x5bfc4d);}var _0x3ad0a4=_0x518400['body'][_0xbf4e('0x26')];var _0x7bd91=_0x518400['body']['sessionId'];return getAgent(_0x3ad0a4)['then'](function(_0x53d7dd){logger[_0xbf4e('0xe')]('entityFound:',_0x53d7dd[_0xbf4e('0x11')]);emit(util[_0xbf4e('0x30')]('user:%s',_0x53d7dd['name']),_0xbf4e('0x35'),{'sessionId':_0x7bd91});return _0x47d6f2[_0xbf4e('0x12')](0xc8)[_0xbf4e('0x2c')]({'error':![],'message':_0xbf4e('0x36')});})[_0xbf4e('0x1a')](handleError(_0x47d6f2));};exports['hold']=function(_0x2b20d3,_0x3e8ade){logger[_0xbf4e('0xe')](_0xbf4e('0x37'),_0x2b20d3[_0xbf4e('0x25')]);var _0x1bc421=holdValidation[_0xbf4e('0x2f')](_0x2b20d3[_0xbf4e('0x25')]);if(_0x1bc421['length']>0x0){return _0x3e8ade[_0xbf4e('0x12')](0x190)[_0xbf4e('0x2c')](_0x1bc421);}var _0x1833c1=_0x2b20d3[_0xbf4e('0x25')][_0xbf4e('0x26')];var _0x1198e8=_0x2b20d3[_0xbf4e('0x25')][_0xbf4e('0x20')];return getAgent(_0x1833c1)[_0xbf4e('0x15')](function(_0x3447ab){logger[_0xbf4e('0xe')](_0xbf4e('0x2a'),_0x3447ab[_0xbf4e('0x11')]);emit(util[_0xbf4e('0x30')](_0xbf4e('0x31'),_0x3447ab[_0xbf4e('0x11')]),_0xbf4e('0x38'),{'sessionId':_0x1198e8});return _0x3e8ade['status'](0xc8)[_0xbf4e('0x2c')]({'error':![],'message':_0xbf4e('0x39')});})[_0xbf4e('0x1a')](handleError(_0x3e8ade));};exports['unhold']=function(_0x33ab9a,_0x5ed838){logger['info'](_0xbf4e('0x3a'),_0x33ab9a[_0xbf4e('0x25')]);var _0x4d32b3=unholdValidation[_0xbf4e('0x2f')](_0x33ab9a[_0xbf4e('0x25')]);if(_0x4d32b3[_0xbf4e('0x21')]>0x0){return _0x5ed838[_0xbf4e('0x12')](0x190)[_0xbf4e('0x2c')](_0x4d32b3);}var _0x2ac2c8=_0x33ab9a[_0xbf4e('0x25')][_0xbf4e('0x26')];var _0x3cd61b=_0x33ab9a[_0xbf4e('0x25')][_0xbf4e('0x20')];return getAgent(_0x2ac2c8)['then'](function(_0x5d6324){logger[_0xbf4e('0xe')](_0xbf4e('0x2a'),_0x5d6324[_0xbf4e('0x11')]);emit(util['format'](_0xbf4e('0x31'),_0x5d6324[_0xbf4e('0x11')]),'webbar:unhold',{'sessionId':_0x3cd61b});return _0x5ed838['status'](0xc8)[_0xbf4e('0x2c')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x5ed838));};exports[_0xbf4e('0x3b')]=function(_0x3dd51a,_0x73ca86){logger[_0xbf4e('0xe')](_0xbf4e('0x3c'),_0x73ca86['body']);var _0x242a75=callsValidation['validate'](_0x3dd51a[_0xbf4e('0x25')]);if(_0x242a75['length']>0x0){return _0x73ca86[_0xbf4e('0x12')](0x190)['json'](_0x242a75);}var _0xab6991=_0x3dd51a[_0xbf4e('0x25')][_0xbf4e('0x26')];var _0x16592f=respondWithRpcPromise(_0xbf4e('0x3d'));var _0x52dfc4=getAgent(_0xab6991);return Promise['all']([_0x16592f,_0x52dfc4])['then'](function(_0x52ea6e){var _0x419a69=_0x52ea6e[0x0];var _0x453411=_0x52ea6e[0x1];var _0x5cfc26=_[_0xbf4e('0x1d')](_0x419a69[_0xbf4e('0x1e')],function(_0x458fea){return _0x458fea[_0xbf4e('0x1f')]==_0x453411['id'];});return _0x73ca86[_0xbf4e('0x12')](0xc8)[_0xbf4e('0x2c')]({'count':_0x5cfc26[_0xbf4e('0x21')],'rows':_0x5cfc26});})['catch'](handleError(_0x73ca86));};exports[_0xbf4e('0x3e')]=function(_0x137df1,_0x42e117){logger['info']('conference\x20fired:',_0x137df1[_0xbf4e('0x25')]);var _0x301d66=conferenceValidation[_0xbf4e('0x2f')](_0x137df1['body']);if(_0x301d66[_0xbf4e('0x21')]>0x0){return _0x42e117[_0xbf4e('0x12')](0x190)[_0xbf4e('0x2c')](_0x301d66);}var _0x4039a4=_0x137df1[_0xbf4e('0x25')][_0xbf4e('0x26')];return getAgent(_0x4039a4)[_0xbf4e('0x15')](function(_0x3ee848){logger[_0xbf4e('0xe')](_0xbf4e('0x2a'),_0x3ee848[_0xbf4e('0x11')]);emit(util[_0xbf4e('0x30')]('user:%s',_0x3ee848[_0xbf4e('0x11')]),'webbar:conference');return _0x42e117[_0xbf4e('0x12')](0xc8)[_0xbf4e('0x2c')]({'error':![],'message':_0xbf4e('0x3f')});})[_0xbf4e('0x1a')](handleError(_0x42e117));};exports[_0xbf4e('0x40')]=function(_0x2846ef,_0x13b0a6){logger[_0xbf4e('0xe')]('transfer\x20fired:',_0x2846ef[_0xbf4e('0x25')]);var _0x325d09=transferValidation[_0xbf4e('0x2f')](_0x2846ef[_0xbf4e('0x25')]);if(_0x325d09[_0xbf4e('0x21')]>0x0){return _0x13b0a6['status'](0x190)[_0xbf4e('0x2c')](_0x325d09);}var _0x753f25=_0x2846ef[_0xbf4e('0x25')][_0xbf4e('0x26')];var _0x12f19f=_0x2846ef[_0xbf4e('0x25')]['sessionId'];var _0x2246a2=_0x2846ef['body'][_0xbf4e('0x41')];return getAgent(_0x753f25)[_0xbf4e('0x15')](function(_0x9335f7){logger[_0xbf4e('0xe')]('entityFound:',_0x9335f7[_0xbf4e('0x11')]);emit(util['format']('user:%s',_0x9335f7[_0xbf4e('0x11')]),_0xbf4e('0x42'),{'sessionId':_0x12f19f,'transferNumber':_0x2246a2});return _0x13b0a6[_0xbf4e('0x12')](0xc8)['json']({'error':![],'message':_0xbf4e('0x43')});})[_0xbf4e('0x1a')](handleError(_0x13b0a6));};