JSSIP和React音频问题

时间:2018-06-28 00:33:16

标签: reactjs sip jssip

所以我正在使用jssip 3.2.10在React项目上进行调用。

服务器已在Asterisk和CentOS上设置。

我可以在呼叫接收方听完我的地方拨打电话,但是我听不到他们的声音,也听不到呼叫发出的等待(传统)蜂鸣声。

它确实可以与一些sipml5 / asterisk udp在线测试一起使用,所以我认为这是我的客户端问题。我在Chrome和Firefox(均为最新版本,结果相同)上进行了测试。

我的设置

我有一个名为sip.js的助手:

const arr10 = (arr) => arr.map(x => x * 10);

console.log( arr10( [1, 2, 3] ) );

然后在我的主要组件上执行以下操作:

const JsSIP = require('jssip')
const GLOBAL = require('../globals')

function register(user, pass, cb) {
  console.log('Registering to SIP')
  JsSIP.debug.disable('JsSIP:*')
  const address = GLOBAL.jssip_server + ':' + GLOBAL.jssip_port
  let socket = new JsSIP.WebSocketInterface('ws://' + address + '/ws')

  const configuration = {
    sockets: [socket],
    uri: 'sip:' + user + '@' + GLOBAL.jssip_server,
    authorization_user: user,
    password: pass,
    connection_recovery_min_interval: 3,
    register: true
  }
  let ua = new JsSIP.UA(configuration)
  ua.start()
  cb(ua)
}

export {
  register
}

当我尝试拨打电话时,请执行以下操作:

  componentDidMount() {
    if(GLOBAL.jssip) {
      this.props.dispatch(connecting(true))
      register('***', '***', (ua) => {
        this.setState({ua: ua}, () => {
          this.state.ua.on("registered", () => {
            this.props.dispatch(connecting(false))
            this.setState({critical: false})
          })
          this.state.ua.on("registrationFailed", () => {
            this.props.dispatch(connecting(false))
            this.setState({critical: true})
          })
        })
      })
    }
  }

有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:1)

在此感谢您的回答: How to handle audio stream in JsSIP?

我找到了解决方案,我需要在呈现调用的文件中添加:

addpoly.rma(x=ma.time03, row = 1.5, transf=exp, mlab="", level=95, efac=0)

将doCall的最后一位更改为:

<audio ref={(audio) => {this.audioElement = audio}} id="audio-element"></audio>