Built motion from commit b5a10faa.|2.6.13
[motion2.git] / server / services / ami / server / index.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 _0x7c09=['name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','asterisk','username','join','pick','keys','reload','module','action','Action','then','message','catch','error','ami\x20disconnected','command','Command','voiceQueues','hasOwnProperty','length','find','omit','undefined','values','channels','voicechannel','validate','map','uniqueid','format','%s.%s','filename','wav','channel','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','Channel\x20doesn\x27t\x20exist','StopMixMonitor','destinationchannel','stop','queueChannels','type','inbound','outbound','includes','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','count','rows','voicequeuechannel','voicequeuechannelhangup','Redirect','exten','context','telephones','run','custom:','event','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','jayson/promise','moment','../../../config/environment','../properties','../ami','../model/voiceQueueSummary','listen','%s/%s'];(function(_0x507e80,_0x1d3a0a){var _0x5bcd1a=function(_0x308d5a){while(--_0x308d5a){_0x507e80['push'](_0x507e80['shift']());}};_0x5bcd1a(++_0x1d3a0a);}(_0x7c09,0x102));var _0x97c0=function(_0x300b9f,_0x53a7b8){_0x300b9f=_0x300b9f-0x0;var _0x4c4c1e=_0x7c09[_0x300b9f];return _0x4c4c1e;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var jayson=require(_0x97c0('0x1'));var schema=require('validate');var moment=require(_0x97c0('0x2'));var config=require(_0x97c0('0x3'));var properties=require(_0x97c0('0x4'));var ami=require(_0x97c0('0x5'));var VoiceQueueSummary=require(_0x97c0('0x6'));exports[_0x97c0('0x7')]=function(_0x15c67b,_0x4a7788,_0x4b2f81){return new Promise(function(_0x590368,_0x46fdd9){var _0x42c6c7={'QueuePause':function(_0x2c19fa){return new Promise(function(_0x109bc8){var _0x293785=util['format'](_0x97c0('0x8'),'SIP',_0x2c19fa[_0x97c0('0x9')]);if(_0x15c67b[_0x97c0('0xa')]&&_0x15c67b['timers'][_0x293785]&&_0x15c67b['timers'][_0x293785][_0x97c0('0xb')]){_0x15c67b[_0x97c0('0xa')][_0x293785][_0x97c0('0xc')]();}if(_0x15c67b[_0x97c0('0xd')][_0x293785]){_0x15c67b[_0x97c0('0xd')][_0x293785][_0x97c0('0xe')]({'statePause':_0x2c19fa[_0x97c0('0xf')]?!![]:![]});}_0x109bc8({'code':0xc8,'message':_0x97c0('0x10')});});},'Reload':function(_0x9ca3c1){var _0x2ecf34=this;return new Promise(function(_0x2810fd,_0x132865){if(ami[_0x97c0('0x11')]()==![]){return _0x132865(_0x2ecf34['error'](0x1f4,[config[_0x97c0('0x12')]['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],'ami\x20disconnected'][_0x97c0('0x14')]('\x20')));}_0x9ca3c1=_[_0x97c0('0x15')](_0x9ca3c1,_[_0x97c0('0x16')](properties[_0x97c0('0x17')][_0x97c0('0x18')]));_0x9ca3c1[_0x97c0('0x19')]='Reload';return ami[_0x97c0('0x1a')](_0x9ca3c1)[_0x97c0('0x1b')](function(_0x51180e){_0x2810fd({'code':0xc8,'message':_0x51180e[_0x97c0('0x1c')]});})[_0x97c0('0x1d')](function(_0x179d43){_0x132865(_0x2ecf34[_0x97c0('0x1e')](0x1f5,_0x179d43[_0x97c0('0x1c')]));});});},'Command':function(_0x3e7a52){var _0x4fed42=this;return new Promise(function(_0x1eeaf0,_0x432705){if(ami[_0x97c0('0x11')]()==![]){return _0x432705(_0x4fed42['error'](0x1f4,[config['asterisk']['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],_0x97c0('0x1f')]['join']('\x20')));}_0x3e7a52=_[_0x97c0('0x15')](_0x3e7a52,_0x97c0('0x20'));_0x3e7a52[_0x97c0('0x19')]=_0x97c0('0x21');return ami[_0x97c0('0x1a')](_0x3e7a52)[_0x97c0('0x1b')](function(_0x9dff60){_0x1eeaf0({'code':0xc8,'message':_0x9dff60['content']});})[_0x97c0('0x1d')](function(_0x29b3aa){_0x432705(_0x4fed42[_0x97c0('0x1e')](0x1f5,_0x29b3aa[_0x97c0('0x1c')]));});});},'VoiceQueues':function(){return new Promise(function(_0x5a17df){var _0x2bda6c=[];for(var _0x14cada in _0x15c67b['voiceQueues']){if(_0x15c67b[_0x97c0('0x22')][_0x97c0('0x23')](_0x14cada)){var _0x447316=_0x15c67b['voiceQueues'][_0x14cada];var _0x4f11ba=new VoiceQueueSummary(_0x447316);_0x2bda6c['push'](_0x4f11ba);}}_0x5a17df({'count':_0x2bda6c[_0x97c0('0x24')],'rows':_0x2bda6c});});},'UpdateVoiceQueue':function(_0x8e3ee7){return new Promise(function(_0x3a744c,_0x225e43){var _0x26939e=_[_0x97c0('0x25')](_0x15c67b['voiceQueues'],{'id':parseInt(_0x8e3ee7['id'])});var _0x10e47e=_[_0x97c0('0x26')](_0x8e3ee7,['id']);if(_0x26939e){for(var _0x325090 in _0x10e47e){if(typeof _0x10e47e[_0x325090]!=='undefined'&&typeof _0x26939e[_0x325090]!==_0x97c0('0x27')){_0x26939e[_0x325090]=_0x10e47e[_0x325090];}}_0x3a744c(_0x26939e);}else{_0x225e43();}});},'VoiceChannels':function(){return new Promise(function(_0x148e95){var _0x21ba0d=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x29')]);_0x148e95({'count':_0x21ba0d['length'],'rows':_0x21ba0d});});},'VoiceChannelMixMonitor':function(_0x59abbb){var _0x29ad98=this;return new Promise(function(_0x353fc9,_0x23080c){if(ami['isConnected']()==![]){return _0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f4,[config[_0x97c0('0x12')]['ip'],config['asterisk'][_0x97c0('0x13')],_0x97c0('0x1f')][_0x97c0('0x14')]('\x20')));}var _0x10015b=schema(properties[_0x97c0('0x2a')])[_0x97c0('0x2b')](_0x59abbb);if(_0x10015b[_0x97c0('0x24')]>0x0){return _0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x10015b,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x356b73=_[_0x97c0('0x25')](_0x15c67b[_0x97c0('0x29')],{'uniqueid':_0x59abbb[_0x97c0('0x2d')]});if(_0x356b73&&_0x356b73['channel']){var _0x292560=util[_0x97c0('0x2e')](_0x97c0('0x2f'),_0x59abbb[_0x97c0('0x30')]||_0x59abbb[_0x97c0('0x2d')],_0x59abbb[_0x97c0('0x2e')]||_0x97c0('0x31'));return ami[_0x97c0('0x1a')]({'action':'MixMonitor','channel':_0x356b73[_0x97c0('0x32')],'file':_0x292560,'options':'ai(mixmonitorid)'})[_0x97c0('0x1b')](function(_0x20291){var _0xc4c795=_[_0x97c0('0x25')](_0x356b73[_0x97c0('0x33')],{'filename':_0x97c0('0x34')+_0x292560[_0x97c0('0x35')]()});if(_[_0x97c0('0x36')](_0xc4c795)){_0x356b73[_0x97c0('0x33')][_0x97c0('0x37')]({'filename':_0x97c0('0x34')+_0x292560['toLowerCase'](),'createdAt':moment()[_0x97c0('0x2e')](_0x97c0('0x38')),'mixmonitorid':_0x20291['mixmonitorid'],'status':_0x97c0('0x39')});}else{_0xc4c795[_0x97c0('0x3a')]=_0x20291[_0x97c0('0x3a')];_0xc4c795[_0x97c0('0x3b')]='rec';}_0x353fc9({'code':0xc8,'message':[_0x59abbb[_0x97c0('0x2d')],'MixMonitor\x20Success',_0x20291[_0x97c0('0x3a')]][_0x97c0('0x14')]('\x20'),'mixmonitorid':_0x20291['mixmonitorid']});})[_0x97c0('0x1d')](function(_0x163ebb){_0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f5,[_0x59abbb[_0x97c0('0x2d')],_0x163ebb[_0x97c0('0x1c')][_0x97c0('0x35')]()][_0x97c0('0x14')]('\x20')));});}else{return _0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'VoiceChannelStopMixMonitor':function(_0x2d4c25){var _0x25e099=this;return new Promise(function(_0x2cca4c,_0x1351d2){if(ami['isConnected']()==![]){return _0x1351d2(_0x25e099[_0x97c0('0x1e')](0x1f4,[config[_0x97c0('0x12')]['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],_0x97c0('0x1f')][_0x97c0('0x14')]('\x20')));}var _0x45e894=schema(properties['voicechannel'])['validate'](_0x2d4c25);if(_0x45e894[_0x97c0('0x24')]>0x0){return _0x1351d2(_0x25e099[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x45e894,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x5556e8=_['find'](_0x15c67b['channels'],{'uniqueid':_0x2d4c25[_0x97c0('0x2d')]});if(_0x5556e8){return Promise['resolve']()['then'](function(){if(_0x5556e8[_0x97c0('0x32')]){return ami[_0x97c0('0x1a')]({'action':_0x97c0('0x3d'),'channel':_0x5556e8[_0x97c0('0x32')],'mixmonitorid':_0x2d4c25[_0x97c0('0x3a')]})['catch'](function(){});}})[_0x97c0('0x1b')](function(){if(_0x5556e8[_0x97c0('0x3e')]){return ami[_0x97c0('0x1a')]({'action':_0x97c0('0x3d'),'channel':_0x5556e8[_0x97c0('0x3e')],'mixmonitorid':_0x2d4c25[_0x97c0('0x3a')]})[_0x97c0('0x1d')](function(){});}})[_0x97c0('0x1b')](function(){var _0x2c50ff=_[_0x97c0('0x25')](_0x5556e8['monitors'],{'mixmonitorid':_0x2d4c25[_0x97c0('0x3a')]});if(_0x2c50ff){_0x2c50ff[_0x97c0('0x3b')]=_0x97c0('0x3f');}})[_0x97c0('0x1b')](function(){var _0x4ff0a5=util['format'](_0x97c0('0x2f'),_0x2d4c25[_0x97c0('0x30')]||_0x2d4c25[_0x97c0('0x2d')],_0x2d4c25['format']||_0x97c0('0x31'));var _0xac56ac=_[_0x97c0('0x25')](_0x5556e8[_0x97c0('0x33')],{'filename':_0x97c0('0x34')+_0x4ff0a5['toLowerCase']()});if(_0xac56ac){_0xac56ac[_0x97c0('0x3b')]=_0x97c0('0x3f');}})[_0x97c0('0x1b')](function(){_0x2cca4c({'code':0xc8,'message':[_0x2d4c25['uniqueid'],'StopMixMonitor\x20Success'][_0x97c0('0x14')]('\x20')});})['catch'](function(_0x4c195a){_0x1351d2(_0x25e099[_0x97c0('0x1e')](0x1f5,[_0x2d4c25[_0x97c0('0x2d')],_0x4c195a[_0x97c0('0x1c')]['toLowerCase']()]['join']('\x20')));});}else{return _0x1351d2(_0x25e099['error'](0x1f5,_0x97c0('0x3c')));}});},'VoiceQueuesChannels':function(_0x2b7daa){var _0x3afef4=this;return new Promise(function(_0xdb2767){var _0x397065=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x40')]);var _0x5dafa9={'count':_0x397065[_0x97c0('0x24')],'rows':_0x397065};if(_0x2b7daa&&_0x2b7daa[_0x97c0('0x41')]){if(![_0x97c0('0x42'),_0x97c0('0x43')][_0x97c0('0x44')](_0x2b7daa[_0x97c0('0x41')])){return _0x46fdd9(_0x3afef4['error'](0x190,_0x97c0('0x45')));}var _0x86a497=_['filter'](_0x397065,function(_0x245f2a){return _0x245f2a[_0x97c0('0x41')]===_0x2b7daa[_0x97c0('0x41')];});_0x5dafa9[_0x97c0('0x46')]=_0x86a497[_0x97c0('0x24')];_0x5dafa9[_0x97c0('0x47')]=_0x86a497;}_0xdb2767(_0x5dafa9);});},'VoiceQueuesChannel':function(_0x47298f){var _0x4e2cec=this;return new Promise(function(_0x2cd43c,_0x14e93c){var _0x3cb4c7=schema(properties[_0x97c0('0x48')])[_0x97c0('0x2b')](_0x47298f);if(_0x3cb4c7[_0x97c0('0x24')]>0x0){return _0x14e93c(_0x4e2cec[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x3cb4c7,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x447492=_[_0x97c0('0x25')](_0x15c67b[_0x97c0('0x40')],{'uniqueid':_0x47298f['uniqueid']});if(_0x447492){_0x2cd43c(_0x447492);}else{return _0x14e93c(_0x4e2cec[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'VoiceQueuesChannelHangup':function(_0x405cda){var _0x3dfce8=this;return new Promise(function(_0x11d252,_0x3f197b){if(ami['isConnected']()==![]){return _0x3f197b(_0x3dfce8[_0x97c0('0x1e')](0x1f4,[config[_0x97c0('0x12')]['ip'],config['asterisk'][_0x97c0('0x13')],_0x97c0('0x1f')][_0x97c0('0x14')]('\x20')));}var _0x586ca1=schema(properties[_0x97c0('0x49')])['validate'](_0x405cda);if(_0x586ca1[_0x97c0('0x24')]>0x0){return _0x3f197b(_0x3dfce8[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x586ca1,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x2bb5d3=_[_0x97c0('0x25')](_0x15c67b[_0x97c0('0x40')],{'uniqueid':_0x405cda[_0x97c0('0x2d')]});if(_0x2bb5d3&&_0x2bb5d3[_0x97c0('0x32')]){return ami[_0x97c0('0x1a')]({'action':'Hangup','channel':_0x2bb5d3[_0x97c0('0x32')]})[_0x97c0('0x1b')](function(_0x102f68){_0x11d252({'code':0xc8,'message':[_0x405cda[_0x97c0('0x2d')],_0x102f68['message'][_0x97c0('0x35')]()][_0x97c0('0x14')]('\x20')});})[_0x97c0('0x1d')](function(_0x37d337){_0x3f197b(_0x3dfce8['error'](0x1f5,[_0x405cda[_0x97c0('0x2d')],_0x37d337[_0x97c0('0x1c')][_0x97c0('0x35')]()]['join']('\x20')));});}else{return _0x3f197b(_0x3dfce8[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'VoiceQueuesChannelRedirect':function(_0x37a2fd){var _0x32e392=this;return new Promise(function(_0x373c34,_0x1838c9){if(ami[_0x97c0('0x11')]()==![]){return _0x1838c9(_0x32e392['error'](0x1f4,[config['asterisk']['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],'ami\x20disconnected'][_0x97c0('0x14')]('\x20')));}var _0x5a4738=schema(properties['voicequeuechannelredirect'])[_0x97c0('0x2b')](_0x37a2fd);if(_0x5a4738['length']>0x0){return _0x1838c9(_0x32e392[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x5a4738,'message')['join'](',\x20')));}var _0x5da2cd=_[_0x97c0('0x25')](_0x15c67b['queueChannels'],{'uniqueid':_0x37a2fd[_0x97c0('0x2d')]});if(_0x5da2cd&&_0x5da2cd[_0x97c0('0x32')]){return ami[_0x97c0('0x1a')]({'action':_0x97c0('0x4a'),'channel':_0x5da2cd[_0x97c0('0x32')],'exten':_0x37a2fd[_0x97c0('0x4b')],'context':_0x37a2fd[_0x97c0('0x4c')]||_0x5da2cd[_0x97c0('0x4c')],'priority':0x1})[_0x97c0('0x1b')](function(_0x1b5173){_0x373c34({'code':0xc8,'message':[_0x37a2fd[_0x97c0('0x2d')],_0x1b5173['message'][_0x97c0('0x35')]()][_0x97c0('0x14')]('\x20')});})[_0x97c0('0x1d')](function(_0x38d0ea){_0x1838c9(_0x32e392[_0x97c0('0x1e')](0x1f5,[_0x37a2fd['uniqueid'],_0x38d0ea[_0x97c0('0x1c')][_0x97c0('0x35')]()]['join']('\x20')));});}else{return _0x1838c9(_0x32e392[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'Agents':function(_0x1cfe22){return new Promise(function(_0x4f52f4){var _0xa5f32b=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0xd')]);if(_0x1cfe22&&_0x1cfe22['id']){var _0x165c72=_['find'](_0xa5f32b,function(_0x4ee6a2){return _0x4ee6a2['id']===_0x1cfe22['id'];});_0x4f52f4(_0x165c72);}else{_0x4f52f4({'count':_0xa5f32b['length'],'rows':_0xa5f32b});}});},'Telephones':function(){return new Promise(function(_0x443508){var _0xf87b4b=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x4d')]);_0x443508({'count':_0xf87b4b[_0x97c0('0x24')],'rows':_0xf87b4b});});},'Trunks':function(){return new Promise(function(_0x1f41ef){var _0x1eb2a1=_[_0x97c0('0x28')](_0x15c67b['trunks']);_0x1f41ef({'count':_0x1eb2a1['length'],'rows':_0x1eb2a1});});},'OutboundChannels':function(){return new Promise(function(_0x199abc){var _0x5a74f7=_['values'](_0x15c67b['outboundChannels']);_0x199abc({'count':_0x5a74f7[_0x97c0('0x24')],'rows':_0x5a74f7});});},'Outbound':function(){return new Promise(function(_0x1479c4){_0x1479c4(_0x15c67b[_0x97c0('0x43')]);});},'Campaigns':function(){return new Promise(function(_0x30968e){var _0x4399f2=_['values'](_0x15c67b['campaigns']);_0x30968e({'count':_0x4399f2[_0x97c0('0x24')],'rows':_0x4399f2});});},'VoiceQueuesPreview':function(_0x388081){var _0x1ff571=this;return new Promise(function(_0x3a8ac0,_0x526bd5){_0x4a7788[_0x97c0('0x4e')](_0x388081['id'])['then'](function(_0x387d5e){_0x3a8ac0({'code':0xc8,'message':_0x387d5e[_0x97c0('0x1c')]});})[_0x97c0('0x1d')](function(_0x3da4e5){_0x526bd5(_0x1ff571[_0x97c0('0x1e')](0x1f4,_0x3da4e5[_0x97c0('0x1c')]));});});},'EventManager':function(_0x2c00c4){var _0x41a6b5=this;return new Promise(function(_0x465a92,_0x8a333f){if(!_0x2c00c4['event']){return _0x8a333f(_0x41a6b5[_0x97c0('0x1e')](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x97c0('0x4f')+_0x2c00c4[_0x97c0('0x50')],_0x2c00c4['message']);_0x465a92({'code':0xc8,'message':_0x2c00c4});});},'FaxAccounts':function(){return new Promise(function(_0x2fa79f){var _0x5df143=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x51')]);_0x2fa79f({'count':_0x5df143['length'],'rows':_0x5df143});});},'SendFax':function(_0x2d5b54){var _0x5d7a55=this;return new Promise(function(_0x525082,_0x4fecde){_0x4b2f81[_0x97c0('0x52')](_0x2d5b54)[_0x97c0('0x1b')](function(_0x52992e){_0x525082({'code':0xc8,'message':_0x52992e[_0x97c0('0x1c')]});})[_0x97c0('0x1d')](function(_0x2e93b1){_0x4fecde(_0x5d7a55[_0x97c0('0x1e')](0x1f4,_0x2e93b1[_0x97c0('0x1c')]));});});},'CheckAfterSend':function(_0x11db50){var _0x10f3cb=this;return new Promise(function(_0x363f31,_0x4e6887){_0x4b2f81[_0x97c0('0x53')](_0x11db50)['then'](function(_0x597cd1){_0x363f31({'code':0xc8,'message':_0x597cd1[_0x97c0('0x1c')]});})['catch'](function(_0x3f69a6){_0x4e6887(_0x10f3cb[_0x97c0('0x1e')](0x1f4,_0x3f69a6['message']));});});}};var _0xa50f5f=jayson[_0x97c0('0x54')](_0x42c6c7)[_0x97c0('0x55')]();_0xa50f5f['on'](_0x97c0('0x1e'),function(_0x388ba1){return _0x46fdd9(_0x388ba1);});_0xa50f5f['listen'](0x232a,_0x97c0('0x56'),function(){console[_0x97c0('0x57')](_0x97c0('0x58'),0x232a);return _0x590368('RPC\x20listening\x20on\x20port:'+0x232a);});});};