ARI JS 客户端静音错误

Posted

技术标签:

【中文标题】ARI JS 客户端静音错误【英文标题】:ARI JS client mute error 【发布时间】:2016-01-17 14:27:40 【问题描述】:

我目前正在为星号开发静音功能,我可以使用星号 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;
        
    );


通道在应用程序中并被传递给静音功能,所以不确定它目前不工作的方式。

编辑:我有一个挂断/踢球功能以相同的方式处理,它工作正常。以下是我所有的调试。

频道转储

免费 PBX 日志 Asterisk CLI 调试级别 5

Socket.io 错误

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

【问题讨论】:

【参考方案1】:

原来它不会运行,因为它需要频道 ID 而不是频道名称,但函数会使用频道名称运行。

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

【讨论】:

这不是 ARI 内部的不一致 - 操作需要路径中的通道 ID,而不是名称。一般来说,这是因为在实践中,ID 是通道的更好处理,原因有两个:(1)名称可以在晦涩的情况下重复使用; (2) 应用程序可以提供 ID,而名称始终是自动生成的。我同意它与历史 Asterisk 不一致,但有时会发生在较新的 API/功能上。

以上是关于ARI JS 客户端静音错误的主要内容,如果未能解决你的问题,请参考以下文章

ios 决定是不是在客户端代码的某些条件下静音我的远程通知,而不是设置内容可用

如何在html页面中静音背景音乐

如何将 Asterisk ARI 与 socket.io 和 Node.js 一起使用

当我尝试创建一个角色时,它给了我一个错误(discord.js)

使用 C# 检测 WAV 文件中的音频静音

如何使用 CLI 中的 pipewire 使应用程序静音