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 决定是不是在客户端代码的某些条件下静音我的远程通知,而不是设置内容可用
如何将 Asterisk ARI 与 socket.io 和 Node.js 一起使用