Built motion from commit 67e5df37.|2.0.66
[motion2.git] / server / api / rpc / rpc.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 _0x397e=['message','result','catch','status','json','stack','name','send','voiceChannels','query','VoiceChannelMixMonitor','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','VoiceQueuesPreview','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','Agents','body','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','SIP/','capacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','MailQueues','mailAccounts','MailAccounts','OpenchannelQueues','smsQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','faxQueuesWaitingInteractions','capitalize','chat','Website','Account','Queue','findOne','isNil','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','From','Start','*,*,*,*','agentNotify','channel','User','Agent\x20not\x20found','MessageId','InteractionId','TransferReport','create','agentTransferTimeout','bluebird','moment','lodash','../../config/logger','api','jayson/promise','client','http','then','error','code'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0x397e,0xc3));var _0xe397=function(_0x31ec29,_0x58915c){_0x31ec29=_0x31ec29-0x0;var _0x3275fc=_0x397e[_0x31ec29];return _0x3275fc;};'use strict';var BPromise=require(_0xe397('0x0'));var moment=require(_0xe397('0x1'));var _=require(_0xe397('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xe397('0x3'))(_0xe397('0x4'));var jayson=require(_0xe397('0x5'));var amiClient=jayson[_0xe397('0x6')][_0xe397('0x7')]({'port':0x232a});var mailClient=jayson[_0xe397('0x6')][_0xe397('0x7')]({'port':0x232b});var routingClient=jayson['client'][_0xe397('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x49cf26,_0x3655bb,_0x5dbd9e){return new BPromise(function(_0x5d2f7e,_0x579859){var _0x38b678=_0x5dbd9e?_0x5dbd9e:amiClient;return _0x38b678['request'](_0x49cf26,_0x3655bb)[_0xe397('0x8')](function(_0x38bdfe){if(_0x38bdfe['error']){if(_0x38bdfe[_0xe397('0x9')][_0xe397('0xa')]===0x1f4){return _0x579859(_0x38bdfe[_0xe397('0x9')][_0xe397('0xb')]);}return _0x5d2f7e(_0x38bdfe[_0xe397('0x9')][_0xe397('0xb')]);}else{_0x5d2f7e(_0x38bdfe[_0xe397('0xc')]);}})[_0xe397('0xd')](function(_0xf7a17f){_0x579859(_0xf7a17f);});});}function respondWithResult(_0x224d32,_0x4d912e){_0x4d912e=_0x4d912e||0xc8;return function(_0x766900){if(_0x766900){return _0x224d32[_0xe397('0xe')](_0x4d912e)[_0xe397('0xf')](_0x766900);}return null;};}function handleError(_0x82a63c,_0x43f8af){_0x43f8af=_0x43f8af||0x1f4;return function(_0x34c249){logger['error'](_0x34c249[_0xe397('0x10')]);if(_0x34c249[_0xe397('0x11')]){delete _0x34c249[_0xe397('0x11')];}_0x82a63c['status'](_0x43f8af)[_0xe397('0x12')](_0x34c249);};}exports[_0xe397('0x13')]=function(_0x325d53,_0x3c67ca){return respondWithRpcPromise('VoiceChannels',_0x325d53[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x3c67ca,null))[_0xe397('0xd')](handleError(_0x3c67ca,null));};exports['voiceChannelMixMonitor']=function(_0x147379,_0x2a4664){return respondWithRpcPromise(_0xe397('0x15'),_['merge'](_0x147379['query'],_0x147379[_0xe397('0x16')]))[_0xe397('0x8')](respondWithResult(_0x2a4664,null))[_0xe397('0xd')](handleError(_0x2a4664,null));};exports[_0xe397('0x17')]=function(_0x5aa82b,_0xa60fcc){return respondWithRpcPromise(_0xe397('0x18'),_[_0xe397('0x19')](_0x5aa82b[_0xe397('0x14')],_0x5aa82b[_0xe397('0x16')]))[_0xe397('0x8')](respondWithResult(_0xa60fcc,null))[_0xe397('0xd')](handleError(_0xa60fcc,null));};exports['voiceQueues']=function(_0x1836ff,_0x391161){return respondWithRpcPromise('VoiceQueues',_0x1836ff[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x391161,null))[_0xe397('0xd')](handleError(_0x391161,null));};exports['voiceQueuesPreview']=function(_0x26fe1f,_0x32354f){return respondWithRpcPromise(_0xe397('0x1a'),_[_0xe397('0x19')](_0x26fe1f[_0xe397('0x14')],_0x26fe1f[_0xe397('0x16')]))['then'](respondWithResult(_0x32354f,null))['catch'](handleError(_0x32354f,null));};exports['voiceQueuesChannels']=function(_0x4f5347,_0x1117d2){return respondWithRpcPromise(_0xe397('0x1b'),_0x4f5347[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x1117d2,null))[_0xe397('0xd')](handleError(_0x1117d2,null));};exports['voiceQueuesChannel']=function(_0x4af6c1,_0x36573f){return respondWithRpcPromise(_0xe397('0x1c'),_[_0xe397('0x19')](_0x4af6c1[_0xe397('0x14')],_0x4af6c1[_0xe397('0x16')]))[_0xe397('0x8')](respondWithResult(_0x36573f,null))[_0xe397('0xd')](handleError(_0x36573f,null));};exports[_0xe397('0x1d')]=function(_0x17c5ed,_0xe9a40d){return respondWithRpcPromise(_0xe397('0x1e'),_[_0xe397('0x19')](_0x17c5ed[_0xe397('0x14')],_0x17c5ed['params']))[_0xe397('0x8')](respondWithResult(_0xe9a40d,null))[_0xe397('0xd')](handleError(_0xe9a40d,null));};exports[_0xe397('0x1f')]=function(_0x10b9c3,_0x3d72a9){return respondWithRpcPromise(_0xe397('0x20'),_[_0xe397('0x19')](_0x10b9c3[_0xe397('0x14')],_0x10b9c3[_0xe397('0x16')]))['then'](respondWithResult(_0x3d72a9,null))['catch'](handleError(_0x3d72a9,null));};exports[_0xe397('0x21')]=function(_0x43cc61,_0x518628){return respondWithRpcPromise(_0xe397('0x22'),_0x43cc61[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x518628,null))['catch'](handleError(_0x518628,null));};exports[_0xe397('0x23')]=function(_0x1e53d5,_0x324af3){return respondWithRpcPromise(_0xe397('0x24'),_0x1e53d5[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x324af3,null))[_0xe397('0xd')](handleError(_0x324af3,null));};exports['agents']=function(_0x32e54b,_0x1db700){var _0x27cdc3;return respondWithRpcPromise('Agents',_0x32e54b[_0xe397('0x14')])[_0xe397('0x8')](function(_0x158daa){_0x27cdc3=_0x158daa;return respondWithRpcPromise(_0xe397('0x25'),_0x32e54b[_0xe397('0x14')],routingClient);})['then'](function(_0x58521d){return _[_0xe397('0x19')]({},_0x58521d,_0x27cdc3);})['then'](respondWithResult(_0x1db700,null))[_0xe397('0xd')](handleError(_0x1db700,null));};exports['agentCapacity']=function(_0x271076,_0x41ca28){if(_0x271076[_0xe397('0x26')]&&_0x271076[_0xe397('0x26')][_0xe397('0x27')]&&_0x271076[_0xe397('0x28')]&&_0x271076[_0xe397('0x28')][_0xe397('0x11')]){for(var _0x539db3 in _0x271076['body'][_0xe397('0x27')]){if(_0x271076['body'][_0xe397('0x27')][_0xe397('0x29')](_0x539db3)){db[_0xe397('0x2a')][_0xe397('0x2b')]({'where':{'channel':_0x539db3,'membername':_0x271076[_0xe397('0x28')][_0xe397('0x11')],'type':_0xe397('0x2c'),'exitAt':null,'uniqueid':_0x271076[_0xe397('0x26')]['interaction'][_0x539db3]&&_0x271076[_0xe397('0x26')][_0xe397('0x27')][_0x539db3]['length']?{'$notIn':_0x271076['body'][_0xe397('0x27')][_0x539db3]}:{'$ne':null}}})['then'](function(_0x302884){var _0x18a363=moment()[_0xe397('0x2d')](_0xe397('0x2e'));for(var _0x3ec051=0x0,_0x33f3f3=_0x302884[_0xe397('0x2f')];_0x3ec051<_0x33f3f3;_0x3ec051+=0x1){_0x302884[_0x3ec051][_0xe397('0x30')]({'exitAt':_0x18a363});}});for(var _0x20bac9=0x0;_0x20bac9<_0x271076[_0xe397('0x26')]['interaction'][_0x539db3][_0xe397('0x2f')];_0x20bac9+=0x1){db['MemberReport'][_0xe397('0x31')]({'where':{'channel':_0x539db3,'membername':_0x271076[_0xe397('0x28')]['name'],'type':_0xe397('0x2c'),'uniqueid':_0x271076['body'][_0xe397('0x27')][_0x539db3][_0x20bac9],'exitAt':null},'defaults':{'channel':_0x539db3,'membername':_0x271076[_0xe397('0x28')][_0xe397('0x11')],'interface':_0xe397('0x32')+_0x271076[_0xe397('0x28')]['name'],'type':_0xe397('0x2c'),'enterAt':moment()[_0xe397('0x2d')]('YYYY-MM-DD\x20HH:mm:ss'),'role':'agent','internal':_0x271076[_0xe397('0x28')]['internal'],'uniqueid':_0x271076[_0xe397('0x26')][_0xe397('0x27')][_0x539db3][_0x20bac9]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x271076[_0xe397('0x16')]['id'],'capacity':_0x271076[_0xe397('0x26')][_0xe397('0x33')]},routingClient)[_0xe397('0x8')](respondWithResult(_0x41ca28,null))[_0xe397('0xd')](handleError(_0x41ca28,null));};exports[_0xe397('0x34')]=function(_0x219923,_0x2d5684){return respondWithRpcPromise(_0xe397('0x35'),_0x219923[_0xe397('0x14')])['then'](respondWithResult(_0x2d5684,null))[_0xe397('0xd')](handleError(_0x2d5684,null));};exports[_0xe397('0x36')]=function(_0x213e86,_0x2364f9){return respondWithRpcPromise(_0xe397('0x37'),_0x213e86[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x2364f9,null))[_0xe397('0xd')](handleError(_0x2364f9,null));};exports[_0xe397('0x38')]=function(_0x3761f6,_0x599688){return respondWithRpcPromise(_0xe397('0x39'),_0x3761f6[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x599688,null))[_0xe397('0xd')](handleError(_0x599688,null));};exports[_0xe397('0x3a')]=function(_0x56ee16,_0x538db1){return respondWithRpcPromise(_0xe397('0x3b'),_0x56ee16['query'],routingClient)[_0xe397('0x8')](respondWithResult(_0x538db1,null))[_0xe397('0xd')](handleError(_0x538db1,null));};exports['mailQueues']=function(_0x4c1ea5,_0x9bb9e8){return respondWithRpcPromise(_0xe397('0x3c'),_0x4c1ea5[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0x9bb9e8,null))[_0xe397('0xd')](handleError(_0x9bb9e8,null));};exports[_0xe397('0x3d')]=function(_0x504585,_0x52c327){return respondWithRpcPromise(_0xe397('0x3e'),_0x504585[_0xe397('0x14')],mailClient)['then'](respondWithResult(_0x52c327,null))[_0xe397('0xd')](handleError(_0x52c327,null));};exports['openchannelQueues']=function(_0x15cf52,_0x146d58){return respondWithRpcPromise(_0xe397('0x3f'),_0x15cf52[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0x146d58,null))[_0xe397('0xd')](handleError(_0x146d58,null));};exports[_0xe397('0x40')]=function(_0xe45fe5,_0x367a13){return respondWithRpcPromise('SmsQueues',_0xe45fe5[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0x367a13,null))['catch'](handleError(_0x367a13,null));};exports['faxQueues']=function(_0x8cdf57,_0x4ec32a){return respondWithRpcPromise(_0xe397('0x41'),_0x8cdf57[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0x4ec32a,null))[_0xe397('0xd')](handleError(_0x4ec32a,null));};exports[_0xe397('0x42')]=function(_0x170b2d,_0x44be47){return respondWithRpcPromise(_0xe397('0x43'),_0x170b2d[_0xe397('0x14')])[_0xe397('0x8')](respondWithResult(_0x44be47,null))[_0xe397('0xd')](handleError(_0x44be47,null));};exports[_0xe397('0x44')]=function(_0x4b483f,_0x730553){return respondWithRpcPromise(_0xe397('0x45'),_0x4b483f['query'],routingClient)[_0xe397('0x8')](respondWithResult(_0x730553,null))[_0xe397('0xd')](handleError(_0x730553,null));};exports[_0xe397('0x46')]=function(_0x1db01b,_0xaa29b){return respondWithRpcPromise(_0xe397('0x47'),_0x1db01b[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0xaa29b,null))[_0xe397('0xd')](handleError(_0xaa29b,null));};exports[_0xe397('0x48')]=function(_0x2735cd,_0x44386b){return respondWithRpcPromise(_0xe397('0x49'),_0x2735cd[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0x44386b,null))[_0xe397('0xd')](handleError(_0x44386b,null));};exports[_0xe397('0x4a')]=function(_0x20a155,_0x3d995b){return respondWithRpcPromise(_0xe397('0x4b'),_0x20a155[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0x3d995b,null))[_0xe397('0xd')](handleError(_0x3d995b,null));};exports[_0xe397('0x4c')]=function(_0x411db1,_0x4a30ff){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x411db1[_0xe397('0x14')],routingClient)[_0xe397('0x8')](respondWithResult(_0x4a30ff,null))[_0xe397('0xd')](handleError(_0x4a30ff,null));};exports['queueNotify']=function(_0x3d33d6){return function(_0x376ab2,_0xd5acae){var _0x28c381,_0x103fd8;var _0x5bd292=_[_0xe397('0x4d')](_0x3d33d6);var _0x4c3345=_0x3d33d6===_0xe397('0x4e')?_0xe397('0x4f'):_0xe397('0x50');return db[_0x5bd292+_0xe397('0x51')][_0xe397('0x52')]({'raw':!![],'where':{'id':_0x376ab2[_0xe397('0x16')]['id']}})[_0xe397('0x8')](function(_0x144838){if(_[_0xe397('0x53')](_0x144838)){throw new Error(_0x5bd292+_0xe397('0x54'));}_0x28c381=_0x144838;return db[_0x5bd292+_0xe397('0x55')]['findOne']({'where':{'id':_0x376ab2[_0xe397('0x26')][_0xe397('0x56')]},'include':[{'model':db[_0x5bd292+_0xe397('0x57')],'as':'Interaction'},{'model':db[_0x5bd292+_0x4c3345],'as':_0xe397('0x50')}]});})['then'](function(_0x212720){if(_[_0xe397('0x53')](_0x212720)){throw new Error(_0x5bd292+_0xe397('0x58'));}_0x103fd8=_0x212720;return _0x212720[_0xe397('0x59')]({'read':0x0,'readAt':null,'UserId':null});})[_0xe397('0x8')](function(){var _0x56e59c={'uniqueid':_0x3d33d6+'.'+_0x103fd8['id']+'.'+_0x103fd8['Interaction']['id'],'FromUserId':_0x376ab2[_0xe397('0x28')]['id'],'type':_0xe397('0x5a')};_0x56e59c[_0x5bd292+'MessageId']=_0x103fd8['id'];_0x56e59c[_0x5bd292+'InteractionId']=_0x103fd8['Interaction']['id'];_0x56e59c[_0xe397('0x5b')+_0x5bd292+_0x4c3345+'Id']=_0x103fd8[_0xe397('0x50')]['id'];_0x56e59c['To'+_0x5bd292+'QueueId']=_0x28c381['id'];return db[_0x5bd292+'TransferReport']['create'](_0x56e59c);})['then'](function(){return respondWithRpcPromise(_0xe397('0x5c'),{'channel':_0x3d33d6,'interaction':_0x103fd8[_0xe397('0x57')],'message':_0x103fd8,'account':_0x103fd8[_0xe397('0x50')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x28c381[_0xe397('0x11')]+','+(_0x103fd8[_0xe397('0x50')]['queueTransferTimeout']||0x12c),'interval':_0xe397('0x5d')}]},routingClient);})['then'](respondWithResult(_0xd5acae,null))['catch'](handleError(_0xd5acae,null));};};exports[_0xe397('0x5e')]=function(_0x11c3ee,_0x3122ce){var _0x1a1bc4,_0x52d16b;if(_[_0xe397('0x53')](_0x11c3ee['body'][_0xe397('0x5f')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x54999=_0x11c3ee['body']['channel'];var _0x96a9e4=_[_0xe397('0x4d')](_0x54999);var _0x41dd9e=_0x54999==='chat'?'Website':_0xe397('0x50');return db[_0xe397('0x60')][_0xe397('0x52')]({'raw':!![],'where':{'id':_0x11c3ee[_0xe397('0x16')]['id'],'role':'agent'}})[_0xe397('0x8')](function(_0x35028c){if(_[_0xe397('0x53')](_0x35028c)){throw new Error(_0xe397('0x61'));}_0x1a1bc4=_0x35028c;return db[_0x96a9e4+'Message'][_0xe397('0x52')]({'where':{'id':_0x11c3ee[_0xe397('0x26')][_0xe397('0x56')]},'include':[{'model':db[_0x96a9e4+_0xe397('0x57')],'as':'Interaction'},{'model':db[_0x96a9e4+_0x41dd9e],'as':_0xe397('0x50')}]});})[_0xe397('0x8')](function(_0x5686fa){if(_[_0xe397('0x53')](_0x5686fa)){throw new Error(_0x96a9e4+'\x20Message\x20not\x20found');}_0x52d16b=_0x5686fa;return _0x5686fa['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xe397('0x8')](function(){var _0x5ecefc={'uniqueid':_0x54999+'.'+_0x52d16b['id']+'.'+_0x52d16b[_0xe397('0x57')]['id'],'FromUserId':_0x11c3ee[_0xe397('0x28')]['id'],'type':_0xe397('0x5a'),'ToUserId':_0x1a1bc4['id']};_0x5ecefc[_0x96a9e4+_0xe397('0x62')]=_0x52d16b['id'];_0x5ecefc[_0x96a9e4+_0xe397('0x63')]=_0x52d16b[_0xe397('0x57')]['id'];_0x5ecefc['From'+_0x96a9e4+_0x41dd9e+'Id']=_0x52d16b[_0xe397('0x50')]['id'];return db[_0x96a9e4+_0xe397('0x64')][_0xe397('0x65')](_0x5ecefc);})['then'](function(){return respondWithRpcPromise(_0xe397('0x5c'),{'channel':_0x54999,'interaction':_0x52d16b[_0xe397('0x57')],'message':_0x52d16b,'account':_0x52d16b['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x1a1bc4[_0xe397('0x11')]+','+(_0x52d16b[_0xe397('0x50')][_0xe397('0x66')]||0x12c),'interval':_0xe397('0x5d')}]},routingClient);})[_0xe397('0x8')](respondWithResult(_0x3122ce,null))[_0xe397('0xd')](handleError(_0x3122ce,null));};