Built motion from commit 67e5df37.|2.0.66
[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 _0x2a1b=['send','checkAfterSend','server','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','jayson/promise','moment','../properties','listen','timers','timer','updateAcw','agents','updateStatusRealtime','pause','isConnected','error','asterisk','ami\x20disconnected','join','pick','module','Reload','Action','then','catch','message','username','command','action','Command','content','voiceQueues','length','values','channels','validate','map','find','channel','format','%s.%s','uniqueid','wav','ai(mixmonitorid)','monitors','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','resolve','destinationchannel','status','stop','filename','/var/spool/asterisk/monitor/','StopMixMonitor\x20Success','queueChannels','Hangup','voicequeuechannelredirect','exten','context','telephones','trunks','outboundChannels','run','event','Event\x20name\x20mandatory','custom:','faxAccounts'];(function(_0xc4966b,_0x6cd5e0){var _0x1802bb=function(_0x12f623){while(--_0x12f623){_0xc4966b['push'](_0xc4966b['shift']());}};_0x1802bb(++_0x6cd5e0);}(_0x2a1b,0xeb));var _0xb2a1=function(_0x3ce557,_0x38c66b){_0x3ce557=_0x3ce557-0x0;var _0x3525b4=_0x2a1b[_0x3ce557];return _0x3525b4;};'use strict';var _=require('lodash');var util=require(_0xb2a1('0x0'));var jayson=require(_0xb2a1('0x1'));var schema=require('validate');var BPromise=require('bluebird');var moment=require(_0xb2a1('0x2'));var config=require('../../../config/environment');var properties=require(_0xb2a1('0x3'));var ami=require('../ami');exports[_0xb2a1('0x4')]=function(_0x167c2b,_0x374971,_0x24fe52){return new BPromise(function(_0x3ad4ba,_0x135381){var _0x3ff27c={'QueuePause':function(_0x49c418){return new Promise(function(_0x1373aa,_0x1ca4fb){var _0x3df412=util['format']('%s/%s','SIP',_0x49c418['name']);if(_0x167c2b[_0xb2a1('0x5')]&&_0x167c2b['timers'][_0x3df412]&&_0x167c2b[_0xb2a1('0x5')][_0x3df412][_0xb2a1('0x6')]){_0x167c2b[_0xb2a1('0x5')][_0x3df412][_0xb2a1('0x7')]();}if(_0x167c2b[_0xb2a1('0x8')][_0x3df412]){_0x167c2b['agents'][_0x3df412][_0xb2a1('0x9')]({'statePause':_0x49c418[_0xb2a1('0xa')]?!![]:![]});}_0x1373aa({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x5ee993){var _0x50f86e=this;return new Promise(function(_0x49e731,_0x380cfb){if(ami[_0xb2a1('0xb')]()==![]){return _0x380cfb(_0x50f86e[_0xb2a1('0xc')](0x1f4,[config['asterisk']['ip'],config[_0xb2a1('0xd')]['username'],_0xb2a1('0xe')][_0xb2a1('0xf')]('\x20')));}_0x5ee993=_[_0xb2a1('0x10')](_0x5ee993,_['keys'](properties[_0xb2a1('0x11')]));_0x5ee993['action']=_0xb2a1('0x12');return ami[_0xb2a1('0x13')](_0x5ee993)[_0xb2a1('0x14')](function(_0x1b717d){_0x49e731({'code':0xc8,'message':_0x1b717d['message']});})[_0xb2a1('0x15')](function(_0x11f03d){_0x380cfb(_0x50f86e[_0xb2a1('0xc')](0x1f5,_0x11f03d[_0xb2a1('0x16')]));});});},'Command':function(_0x5c4b63){var _0x3e3bb1=this;return new Promise(function(_0x1dc437,_0x3f81f8){if(ami['isConnected']()==![]){return _0x3f81f8(_0x3e3bb1[_0xb2a1('0xc')](0x1f4,[config[_0xb2a1('0xd')]['ip'],config[_0xb2a1('0xd')][_0xb2a1('0x17')],_0xb2a1('0xe')]['join']('\x20')));}_0x5c4b63=_[_0xb2a1('0x10')](_0x5c4b63,_0xb2a1('0x18'));_0x5c4b63[_0xb2a1('0x19')]=_0xb2a1('0x1a');return ami[_0xb2a1('0x13')](_0x5c4b63)[_0xb2a1('0x14')](function(_0x42dc48){_0x1dc437({'code':0xc8,'message':_0x42dc48[_0xb2a1('0x1b')]});})[_0xb2a1('0x15')](function(_0xcdab2){_0x3f81f8(_0x3e3bb1[_0xb2a1('0xc')](0x1f5,_0xcdab2['message']));});});},'VoiceQueues':function(_0xd06503){return new Promise(function(_0x3f73f4,_0x1cbda9){var _0x261311=_['values'](_0x167c2b[_0xb2a1('0x1c')]);_0x3f73f4({'count':_0x261311[_0xb2a1('0x1d')],'rows':_0x261311});});},'VoiceChannels':function(_0x4e5135){return new Promise(function(_0x1e85d4,_0x350dc4){var _0xf5dea7=_[_0xb2a1('0x1e')](_0x167c2b[_0xb2a1('0x1f')]);_0x1e85d4({'count':_0xf5dea7[_0xb2a1('0x1d')],'rows':_0xf5dea7});});},'VoiceChannelMixMonitor':function(_0x57152e){var _0x98c31a=this;return new Promise(function(_0x56e979,_0x4bf8f2){if(ami[_0xb2a1('0xb')]()==![]){return _0x4bf8f2(_0x98c31a[_0xb2a1('0xc')](0x1f4,[config[_0xb2a1('0xd')]['ip'],config[_0xb2a1('0xd')][_0xb2a1('0x17')],_0xb2a1('0xe')]['join']('\x20')));}var _0x306d06=schema(properties['voicechannel'])[_0xb2a1('0x20')](_0x57152e);if(_0x306d06[_0xb2a1('0x1d')]>0x0){return _0x4bf8f2(_0x98c31a[_0xb2a1('0xc')](0x1f4,_[_0xb2a1('0x21')](_0x306d06,'message')[_0xb2a1('0xf')](',\x20')));}var _0x435d31=_[_0xb2a1('0x22')](_0x167c2b[_0xb2a1('0x1f')],{'uniqueid':_0x57152e['uniqueid']});if(_0x435d31&&_0x435d31[_0xb2a1('0x23')]){var _0x2a9502=util[_0xb2a1('0x24')](_0xb2a1('0x25'),_0x57152e['filename']||_0x57152e[_0xb2a1('0x26')],_0x57152e['format']||_0xb2a1('0x27'));return ami[_0xb2a1('0x13')]({'action':'MixMonitor','channel':_0x435d31[_0xb2a1('0x23')],'file':_0x2a9502,'options':_0xb2a1('0x28')})[_0xb2a1('0x14')](function(_0x2a8368){var _0xb77d6f=_['find'](_0x435d31[_0xb2a1('0x29')],{'filename':'/var/spool/asterisk/monitor/'+_0x2a9502['toLowerCase']()});if(_['isNil'](_0xb77d6f)){_0x435d31[_0xb2a1('0x29')]['push']({'filename':'/var/spool/asterisk/monitor/'+_0x2a9502[_0xb2a1('0x2a')](),'createdAt':moment()[_0xb2a1('0x24')](_0xb2a1('0x2b')),'mixmonitorid':_0x2a8368[_0xb2a1('0x2c')],'status':_0xb2a1('0x2d')});}else{_0xb77d6f[_0xb2a1('0x2c')]=_0x2a8368['mixmonitorid'];_0xb77d6f['status']=_0xb2a1('0x2d');}_0x56e979({'code':0xc8,'message':[_0x57152e['uniqueid'],_0xb2a1('0x2e'),_0x2a8368[_0xb2a1('0x2c')]][_0xb2a1('0xf')]('\x20'),'mixmonitorid':_0x2a8368[_0xb2a1('0x2c')]});})[_0xb2a1('0x15')](function(_0x3773e2){_0x4bf8f2(_0x98c31a['error'](0x1f5,[_0x57152e[_0xb2a1('0x26')],_0x3773e2[_0xb2a1('0x16')][_0xb2a1('0x2a')]()]['join']('\x20')));});}else{return _0x4bf8f2(_0x98c31a[_0xb2a1('0xc')](0x1f5,_0xb2a1('0x2f')));}});},'VoiceChannelStopMixMonitor':function(_0x240218){var _0x3ab503=this;return new Promise(function(_0x595917,_0x2b1f14){if(ami[_0xb2a1('0xb')]()==![]){return _0x2b1f14(_0x3ab503[_0xb2a1('0xc')](0x1f4,[config[_0xb2a1('0xd')]['ip'],config[_0xb2a1('0xd')]['username'],_0xb2a1('0xe')]['join']('\x20')));}var _0x50ee6a=schema(properties[_0xb2a1('0x30')])['validate'](_0x240218);if(_0x50ee6a[_0xb2a1('0x1d')]>0x0){return _0x2b1f14(_0x3ab503['error'](0x1f4,_['map'](_0x50ee6a,_0xb2a1('0x16'))[_0xb2a1('0xf')](',\x20')));}var _0x1c408c=_['find'](_0x167c2b[_0xb2a1('0x1f')],{'uniqueid':_0x240218[_0xb2a1('0x26')]});if(_0x1c408c){return BPromise[_0xb2a1('0x31')]()['then'](function(){if(_0x1c408c['channel']){return ami[_0xb2a1('0x13')]({'action':'StopMixMonitor','channel':_0x1c408c[_0xb2a1('0x23')],'mixmonitorid':_0x240218[_0xb2a1('0x2c')]})['catch'](function(_0x3bc9ec){});}})['then'](function(){if(_0x1c408c[_0xb2a1('0x32')]){return ami[_0xb2a1('0x13')]({'action':'StopMixMonitor','channel':_0x1c408c[_0xb2a1('0x32')],'mixmonitorid':_0x240218[_0xb2a1('0x2c')]})[_0xb2a1('0x15')](function(_0x59c25c){});}})[_0xb2a1('0x14')](function(_0x1388b3){var _0x61b8be=_[_0xb2a1('0x22')](_0x1c408c[_0xb2a1('0x29')],{'mixmonitorid':_0x240218['mixmonitorid']});if(_0x61b8be){_0x61b8be[_0xb2a1('0x33')]=_0xb2a1('0x34');}})[_0xb2a1('0x14')](function(){var _0x23662d=util[_0xb2a1('0x24')](_0xb2a1('0x25'),_0x240218[_0xb2a1('0x35')]||_0x240218[_0xb2a1('0x26')],_0x240218[_0xb2a1('0x24')]||_0xb2a1('0x27'));var _0x1edaf5=_[_0xb2a1('0x22')](_0x1c408c[_0xb2a1('0x29')],{'filename':_0xb2a1('0x36')+_0x23662d[_0xb2a1('0x2a')]()});if(_0x1edaf5){_0x1edaf5[_0xb2a1('0x33')]=_0xb2a1('0x34');}})['then'](function(){_0x595917({'code':0xc8,'message':[_0x240218[_0xb2a1('0x26')],_0xb2a1('0x37')][_0xb2a1('0xf')]('\x20')});})[_0xb2a1('0x15')](function(_0xb54e62){_0x2b1f14(_0x3ab503[_0xb2a1('0xc')](0x1f5,[_0x240218[_0xb2a1('0x26')],_0xb54e62['message'][_0xb2a1('0x2a')]()][_0xb2a1('0xf')]('\x20')));});}else{return _0x2b1f14(_0x3ab503[_0xb2a1('0xc')](0x1f5,_0xb2a1('0x2f')));}});},'VoiceQueuesChannels':function(_0x40b7f1){return new Promise(function(_0x46bc5b,_0x22bf99){var _0x571c5a=_[_0xb2a1('0x1e')](_0x167c2b[_0xb2a1('0x38')]);_0x46bc5b({'count':_0x571c5a['length'],'rows':_0x571c5a});});},'VoiceQueuesChannel':function(_0x1eab88){var _0x41138b=this;return new Promise(function(_0x1be7f8,_0x2728eb){var _0x4a85b=schema(properties['voicequeuechannel'])[_0xb2a1('0x20')](_0x1eab88);if(_0x4a85b[_0xb2a1('0x1d')]>0x0){return _0x2728eb(_0x41138b['error'](0x1f4,_[_0xb2a1('0x21')](_0x4a85b,_0xb2a1('0x16'))[_0xb2a1('0xf')](',\x20')));}var _0x294236=_[_0xb2a1('0x22')](_0x167c2b[_0xb2a1('0x38')],{'uniqueid':_0x1eab88[_0xb2a1('0x26')]});if(_0x294236){_0x1be7f8(_0x294236);}else{return _0x2728eb(_0x41138b[_0xb2a1('0xc')](0x1f5,_0xb2a1('0x2f')));}});},'VoiceQueuesChannelHangup':function(_0x146f5f){var _0x99c57a=this;return new Promise(function(_0x2e43ec,_0x4c8985){if(ami[_0xb2a1('0xb')]()==![]){return _0x4c8985(_0x99c57a[_0xb2a1('0xc')](0x1f4,[config['asterisk']['ip'],config[_0xb2a1('0xd')]['username'],_0xb2a1('0xe')]['join']('\x20')));}var _0x5d6cf3=schema(properties['voicequeuechannelhangup'])[_0xb2a1('0x20')](_0x146f5f);if(_0x5d6cf3['length']>0x0){return _0x4c8985(_0x99c57a[_0xb2a1('0xc')](0x1f4,_[_0xb2a1('0x21')](_0x5d6cf3,_0xb2a1('0x16'))[_0xb2a1('0xf')](',\x20')));}var _0x445794=_[_0xb2a1('0x22')](_0x167c2b[_0xb2a1('0x38')],{'uniqueid':_0x146f5f['uniqueid']});if(_0x445794&&_0x445794[_0xb2a1('0x23')]){return ami[_0xb2a1('0x13')]({'action':_0xb2a1('0x39'),'channel':_0x445794[_0xb2a1('0x23')]})[_0xb2a1('0x14')](function(_0xcff0ed){_0x2e43ec({'code':0xc8,'message':[_0x146f5f['uniqueid'],_0xcff0ed[_0xb2a1('0x16')][_0xb2a1('0x2a')]()]['join']('\x20')});})[_0xb2a1('0x15')](function(_0x23761a){_0x4c8985(_0x99c57a[_0xb2a1('0xc')](0x1f5,[_0x146f5f['uniqueid'],_0x23761a[_0xb2a1('0x16')]['toLowerCase']()][_0xb2a1('0xf')]('\x20')));});}else{return _0x4c8985(_0x99c57a['error'](0x1f5,_0xb2a1('0x2f')));}});},'VoiceQueuesChannelRedirect':function(_0x359c11){var _0x13df70=this;return new Promise(function(_0x23b4b4,_0x3ad73f){if(ami[_0xb2a1('0xb')]()==![]){return _0x3ad73f(_0x13df70[_0xb2a1('0xc')](0x1f4,[config[_0xb2a1('0xd')]['ip'],config['asterisk']['username'],_0xb2a1('0xe')][_0xb2a1('0xf')]('\x20')));}var _0x69ab90=schema(properties[_0xb2a1('0x3a')])['validate'](_0x359c11);if(_0x69ab90[_0xb2a1('0x1d')]>0x0){return _0x3ad73f(_0x13df70[_0xb2a1('0xc')](0x1f4,_[_0xb2a1('0x21')](_0x69ab90,_0xb2a1('0x16'))[_0xb2a1('0xf')](',\x20')));}var _0x35e24e=_[_0xb2a1('0x22')](_0x167c2b[_0xb2a1('0x38')],{'uniqueid':_0x359c11[_0xb2a1('0x26')]});if(_0x35e24e&&_0x35e24e[_0xb2a1('0x23')]){return ami[_0xb2a1('0x13')]({'action':'Redirect','channel':_0x35e24e[_0xb2a1('0x23')],'exten':_0x359c11[_0xb2a1('0x3b')],'context':_0x359c11[_0xb2a1('0x3c')]||_0x35e24e['context'],'priority':0x1})[_0xb2a1('0x14')](function(_0x119dc1){_0x23b4b4({'code':0xc8,'message':[_0x359c11['uniqueid'],_0x119dc1[_0xb2a1('0x16')]['toLowerCase']()][_0xb2a1('0xf')]('\x20')});})[_0xb2a1('0x15')](function(_0x230915){_0x3ad73f(_0x13df70[_0xb2a1('0xc')](0x1f5,[_0x359c11[_0xb2a1('0x26')],_0x230915[_0xb2a1('0x16')][_0xb2a1('0x2a')]()][_0xb2a1('0xf')]('\x20')));});}else{return _0x3ad73f(_0x13df70[_0xb2a1('0xc')](0x1f5,_0xb2a1('0x2f')));}});},'Agents':function(_0x50213f){return new Promise(function(_0x47771a,_0x86d9f9){var _0x24a941=_[_0xb2a1('0x1e')](_0x167c2b[_0xb2a1('0x8')]);_0x47771a({'count':_0x24a941[_0xb2a1('0x1d')],'rows':_0x24a941});});},'Telephones':function(_0x19ef15){return new Promise(function(_0x5c4c3f,_0x1e2166){var _0x47affe=_[_0xb2a1('0x1e')](_0x167c2b[_0xb2a1('0x3d')]);_0x5c4c3f({'count':_0x47affe[_0xb2a1('0x1d')],'rows':_0x47affe});});},'Trunks':function(_0x56b600){return new Promise(function(_0x4dce2f,_0x2ca321){var _0x281e8e=_[_0xb2a1('0x1e')](_0x167c2b[_0xb2a1('0x3e')]);_0x4dce2f({'count':_0x281e8e[_0xb2a1('0x1d')],'rows':_0x281e8e});});},'OutboundChannels':function(_0x1e8b76){return new Promise(function(_0x3cdac9,_0x56017e){var _0xed1ba2=_[_0xb2a1('0x1e')](_0x167c2b[_0xb2a1('0x3f')]);_0x3cdac9({'count':_0xed1ba2['length'],'rows':_0xed1ba2});});},'Outbound':function(_0x576b0a){return new Promise(function(_0xeff31f,_0xe0d48f){_0xeff31f(_0x167c2b['outbound']);});},'Campaigns':function(_0x398a11){return new Promise(function(_0x423711,_0x532566){var _0x40918d=_[_0xb2a1('0x1e')](_0x167c2b['campaigns']);_0x423711({'count':_0x40918d['length'],'rows':_0x40918d});});},'VoiceQueuesPreview':function(_0x4571aa){var _0x3466b0=this;return new Promise(function(_0x31d42b,_0x30bdaa){_0x374971[_0xb2a1('0x40')](_0x4571aa['id'])[_0xb2a1('0x14')](function(_0x3e9ca5){_0x31d42b({'code':0xc8,'message':_0x3e9ca5['message']});})[_0xb2a1('0x15')](function(_0x3ddfd2){_0x30bdaa(_0x3466b0['error'](0x1f4,_0x3ddfd2['message']));});});},'EventManager':function(_0x51c89d){var _0x495093=this;return new Promise(function(_0x5daa03,_0x2eed81){if(!_0x51c89d[_0xb2a1('0x41')]){return _0x2eed81(_0x495093[_0xb2a1('0xc')](0x1f4,_0xb2a1('0x42')));}ami['emit'](_0xb2a1('0x43')+_0x51c89d[_0xb2a1('0x41')],_0x51c89d['message']);_0x5daa03({'code':0xc8,'message':_0x51c89d});});},'FaxAccounts':function(_0x40501f){return new Promise(function(_0x12b8a1,_0x4e31){var _0x4711d2=_['values'](_0x167c2b[_0xb2a1('0x44')]);_0x12b8a1({'count':_0x4711d2['length'],'rows':_0x4711d2});});},'SendFax':function(_0x28fbd1){var _0x51d42a=this;return new Promise(function(_0x5e1c22,_0x3c49e9){_0x24fe52[_0xb2a1('0x45')](_0x28fbd1)['then'](function(_0x1d4758){_0x5e1c22({'code':0xc8,'message':_0x1d4758[_0xb2a1('0x16')]});})[_0xb2a1('0x15')](function(_0x15146c){_0x3c49e9(_0x51d42a[_0xb2a1('0xc')](0x1f4,_0x15146c[_0xb2a1('0x16')]));});});},'CheckAfterSend':function(_0x1f198e){var _0xa68ecd=this;return new Promise(function(_0x38986c,_0x18e1d8){_0x24fe52[_0xb2a1('0x46')](_0x1f198e)[_0xb2a1('0x14')](function(_0x55f725){_0x38986c({'code':0xc8,'message':_0x55f725[_0xb2a1('0x16')]});})['catch'](function(_0x1e54e2){_0x18e1d8(_0xa68ecd[_0xb2a1('0xc')](0x1f4,_0x1e54e2[_0xb2a1('0x16')]));});});}};var _0x16d1ff=jayson[_0xb2a1('0x47')](_0x3ff27c)[_0xb2a1('0x48')]();_0x16d1ff['on'](_0xb2a1('0xc'),function(_0x500aa2){return _0x135381(_0x500aa2);});_0x16d1ff[_0xb2a1('0x4')](0x232a,'127.0.0.1',function(){console[_0xb2a1('0x49')](_0xb2a1('0x4a'),0x232a);return _0x3ad4ba(_0xb2a1('0x4b')+0x232a);});});};