Javascript 如何在SIP.js中接收呼叫时获取localStream(使麦克风静音)

Javascript 如何在SIP.js中接收呼叫时获取localStream(使麦克风静音),javascript,html,sip,sipjs,Javascript,Html,Sip,Sipjs,当我想让麦克风静音时,我会使用从中获得的mediastream session.sessionDescriptionHandler.on('userMedia', onUserMediaObtained.bind(this)) function onUserMediaObtained(stream) { localMediaStream = stream } 会话值来自agent.invite()方法 但当我接到来电时,在onInvite事件处理程序中: agent.on('inv

当我想让麦克风静音时,我会使用从中获得的mediastream

session.sessionDescriptionHandler.on('userMedia', 
onUserMediaObtained.bind(this))

function onUserMediaObtained(stream) {
    localMediaStream = stream
}
会话值来自agent.invite()方法

但当我接到来电时,在onInvite事件处理程序中:

agent.on('invite', onInvite(dispatch, store))

const onInvite = (dispatch, store) => session => {
  if (session.sessionDescriptionHandler) {}
  else { //always undefined here}
 }
我再次尝试在onaccepted事件处理程序中附加事件

session.on('accepted', onAccepted(dispatch))

sessionDescriptionHandler对象已初始化,但我认为为时已晚,OnUserMediaGeted未启动。

您可以使用session对象使麦克风静音/取消静音。这两个函数似乎已经从会话API页面中删除,但我非常确定它仍然可以工作


在这个0.7.0API页面中,您指定了它

在这里,我刚刚用sipjs 11实现了这一点

`const pc = session.sessionDescriptionHandler.peerConnection;
        let togglemute = `true/false`;
        // this.emit
        if (pc.getSenders) {
            pc.getSenders().forEach(function (sender) {
                if (sender.track) {
                    sender.track.enabled = !togglemute;

                }
            });
        } else {
            pc.getReceivers().forEach(function (receiver) {
                if (receiver.track) {
                    receiver.track.enabled = !togglemute;
                }
            });
        }`

它不起作用了。他们在0.8版本中删除了它,在这个版本中,媒体处理发生了突破性的变化。
let pc = this.session.sessionDescriptionHandler.peerConnection;
pc.getLocalStreams().forEach(function (stream) {
    stream.getAudioTracks().forEach(function (track) {
        try {
            track.enabled = !track.enabled;
        } catch (e) {
            toastr.error('Error occured in executing this command.');
            console.log(e);
        }
    });
});