2015-10-19 12 views
7

Am attualmente sviluppando una funzione mute per asterisco che posso correre dalla mia fronte web finire con asterisco ARI.cliente ARI JS errore muto

Ma ogni volta che provo a fare funzionare/chiamare la funzione mute mi dà il seguente errore:

Error: { 
    "message": "Channel not in Stasis application" 
} 

Ma è, per quanto sono consapevole sto passando i dati del canale direttamente a questa funzione, ma a inutile.

Qualsiasi uno qualsiasi suggerimento o abituati a lavorare con il cliente ARI JS?

lato client

Quando il tasto mute viene cliccato emettono i dati trovati nel td al lato server.

$(document).on('click', '.mute', function() { 
     var mute = $(this).closest('td').siblings(':first-child').text(); 
     socket.emit('muting', mute); 
     if ($(this).hasClass('mute')) { 
      $(this).removeClass('mute').addClass('unmute').find('span').text('Unmute'); 
     } else { 
      console.log("Error"); 
     } 
    }); 

Server Side

memorizzare i dati ricevuti da lato client in una var e quindi chiamare la funzione di stasi.

io.sockets.on('connection', function (socket) { 
    updateSip(); 
    socket.on('muting', function (data) { 
     mute(data); 
     console.log("Reached listener for muting") 
    }); 
}); 

funzione Stasi

Mute il canale che avete appena passato dal client al lato server utilizzando i comandi client ARI, l'utente verrà disattivato e mostrerà in applicazione stasi.

Il canale è nella domanda e che si passa alla funzione muta, quindi non sono sicuro da modo relativo funzionamento attualmente.

EDIT: Ho una funzione hangup/calcio di essere manipolati nello stesso modo e funziona benissimo. Di seguito è riportato tutto il mio debug.

Canale Dump Channel Dump

libero PBX registri enter image description here Asterisk CLI Livello di debug 5 enter image description here

Socket.io errore enter image description here

ho anche provato esecuzione tramite socket.io e senza di essa e il risultato è lo stesso, ho altre funzioni e tutti funzionano bene, è proprio la funzione di silenziamento.

risposta

2

scopre che non funzionerebbe, perché aveva bisogno di ID del canale e il nome non del canale, ma le funzioni sarebbe correre con il nome del canale.

E 'incoerenza con l'asterisco ARI come dovrebbe funzionare con il nome del canale e non solo ID canale come le altre funzioni come ad esempio ha fatto hangup e origine funzioni.

+1

Non è un'incongruenza all'interno di ARI - le operazioni richiedono un ID di canale nel percorso, non un nome.Generalmente, questo è dovuto al fatto che, in pratica, gli ID sono più adatti a un canale per due motivi: (1) i nomi possono essere riutilizzati in casi oscuri; (2) Gli ID possono essere forniti dall'app, mentre i nomi sono sempre generati automaticamente. Sono d'accordo che non è coerente con l'asterisco storico, ma che a volte accade con le nuove API/funzionalità. –