ARI JS 客户端静音错误“通道不在 Stasis 应用程序中”

问题描述 投票:0回答:1

目前正在为 asterisk 开发一个静音功能,我可以使用 asterisk ARI 从我的 Web 前端运行该功能。

但是每次我尝试运行/调用静音功能时,都会出现以下错误:

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

但据我所知,我将通道数据直接传递给此函数但无济于事。

任何人有任何建议或习惯使用 ARI JS 客户端吗?

客户端

当单击静音按钮时,将 td 中找到的数据发送到服务器端。

   $(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");
        }
    });

服务器端

将从客户端接收到的数据存储到 var 中,然后调用 stasis 函数。

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

静滞功能

使用 ARI 客户端命令将您刚刚从客户端传递到服务器端的通道静音,用户将被静音并显示在 stasis 应用程序中。

function mute(mutval) {
    console.log("Muting:" + mutval);
    client.channels.mute
    ({
        channelId : mutval
    },
        function (err) {
        if (err) {
            throw err;
        }
    });

}

该通道位于应用程序中并被传递到静音功能,因此我不确定它当前是否无法工作。

我也尝试过通过socket.io运行它,没有它,结果是一样的,我还有其他功能,它们都工作得很好,它只是静音功能。

express asterisk
1个回答
2
投票

结果它不会运行,因为它需要通道 ID 而不是通道名称,但函数会使用通道名称运行。

这与 Asterisk ARI 不一致,因为它应该与通道名称一起使用,而不仅仅是通道 ID,就像其他功能(例如挂断和发起功能)一样。

© www.soinside.com 2019 - 2024. All rights reserved.