gpt4 book ai didi

javascript - 静音/踢 channel Web 应用程序 (ARI)

转载 作者:行者123 更新时间:2023-12-02 15:34:15 25 4
gpt4 key购买 nike

所以我目前有两个函数,当我添加对桥的调用时,它们会被调用,并且其中的两个函数会被自动调用,所以我尝试使用 JQuery,这样它们只有在单击按钮时才会被调用,然后我可以从服务器端开始工作。

问题是此时抛出一个错误,提示$未定义。

JQuery 确实可以工作,我正在调用另一个文件,它是所有 JQuery 并处理我的 socket.io 客户端。

 $("#mute").click(function () {
alert("Handler for .click() called.");

channel.mute({
channelId : 111
},
function (err) {});
});

$("#kick").click(function () {
alert("Handler for .click() called.");

channel.hangup({
channelId : 111
},

function (err) {});
});

任何人都有使用这两种方法的经验,甚至对我如何做到这一点有任何建议。

完整代码 list (服务器端);

var ari = require('ari-client');
var util = require('util');
var chanArr = [];
var test;
var mute;
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);

//ARI client
ari.connect('http://localhost:8088', 'asterisk', 'asterisk', clientLoaded);

function clientLoaded(err, client) {
if (err) {
throw err;
}
// find or create a holding bridges
var bridge = null;
client.bridges.list(function (err, bridges) {
if (err) {
throw err;
}

bridge = bridges.filter(function (candidate) {
return candidate.bridge_type === 'mixing';
})[0];

if (bridge) {
console.log(util.format('Using bridge %s', bridge.id));
} else {
client.bridges.create({
type : 'mixing'
}, function (err, newBridge) {
if (err) {
throw err;
}

bridge = newBridge;
console.log(util.format('Created bridge %s', bridge.id));
});
}
});

// handler for StasisStart event
function stasisStart(event, channel) {
console.log(util.format(
'Channel %s just entered our application, adding it to bridge %s',
channel.name,
bridge.id));

channel.answer(function (err) {
if (err) {
throw err;
}

bridge.addChannel({
channel : channel.id
}, function (err) {
var id = chanArr.push(channel.name)
console.log("Value: " + test);
test = channel.name;
updateSip);

if (err) {
throw err;
}

//If else statement to start music for first user entering channel, music will stop once more than 1 enters the channel.
if (chanArr.length <= 1) {
bridge.startMoh(function (err) {
if (err) {
throw err;
}
});
} else if (chanArr.length === 2) {
bridge.stopMoh(function (err) {
if (err) {
throw err;
}
});
} else {}

});

});
$("#mute").click(function () {
alert("Handler for .click() called.");

channel.mute({
channelId : 111
},
function (err) {});
});

$("#kick").click(function () {
alert("Handler for .click() called.");

channel.hangup({
channelId : 111
},
}

// handler for StasisEnd event
function stasisEnd(event, channel) {
console.log(util.format(
'Channel %s just left our application', channel.name));
console.log(channel.name);

var index = chanArr.indexOf(channel.name);
chanArr.splice(index, 1);
updateSip();
}
client.on('StasisStart', stasisStart);
client.on('StasisEnd', stasisEnd);
client.start('bridge-hold');
}

//Socket.io logic here
server.listen(3009, function () {
console.log('listening on *:3009');
});

app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.sendfile(__dirname + "/testPage.html");
});

io.sockets.on('connection', function (data) {
updateSip();
});

io.sockets.on('muting', function (data) {
mute = data;
console.log("client side:" + mute);
});

function updateSip() {
console.log("Value: " + test);
io.sockets.emit('sip', chanArr);
}

最佳答案

这就是我从桥上踢 channel 的方法。

我目前正在开发静音和取消静音功能,但遇到了一些麻烦,但这就是我通过网络应用程序踢用户的方式

例如。

客户端

当点击kick按钮时,将TD中找到的数据发送到服务器端

$(document).on('click', '.kick', function () {
var hangup = $(this).closest('td').siblings(':first-child').text();
socket.emit('hangup', hangup);
});

服务器端

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

io.sockets.on('connection', function (socket) {
updateSip();
socket.on('hangup', function (data) {
hangup(data);
});
});

停滞功能

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

function hangup(hangval) {
console.log("Kicked:" + hangval);
client.channels.hangup
({
channelId : hangval
},
function (err) {
if (err) {
throw err;
}
});

}

希望这有帮助。

关于javascript - 静音/踢 channel Web 应用程序 (ARI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33081972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com