将SIP.js或类似库与react-native-webrtc集成

问题描述 投票:0回答:1

请帮忙。 我已经尝试使用 sip.js 或 jssip 和react-native-webrtc 进行出站呼叫了几周或几个月。 我已经从 telnyx 眩晕并打开服务器。

我有默认的 sip.js 和类似的 API 设置,但凭证数据和连接工作正常。得到 200 条回复一切都很好。然后我向我的手机拨打出站电话,当我接听或取消呼叫时,我收到以下消息:

错误 2024 年 7 月 30 日星期二 06:37:04 GMT+0100 | sip.SessionDescriptionHandler | sip.SessionDescriptionHandler | SessionDescriptionHandler.setDescription 失败 - 错误:无法设置远程应答 sdp:mid='0' 的 m= 部分无效。 RTCP-MUX 在需要时未启用。 错误 2024 年 7 月 30 日星期二 06:37:04 GMT+0100 | sip.邀请者| Session.setAnswer:SDH setDescription 被拒绝... 错误 2024 年 7 月 30 日星期二 06:37:04 GMT+0100 | sip.邀请者|无法设置远程应答 sdp:mid='0' 的 m= 部分无效。 RTCP-MUX 在需要时未启用。 错误 2024 年 7 月 30 日星期二 06:37:04 GMT+0100 | sip.邀请者|无法设置远程应答 sdp:mid='0' 的 m= 部分无效。 RTCP-MUX 在需要时未启用。

我的代码如下:

import React, { useEffect, useState } from "react";
import {  registerGlobals  } from "react-native-webrtc";
import { Button, Platform, StyleSheet, Text, View } from "react-native";
import { Inviter, Registerer, SIPExtension, UserAgent } from "sip.js";

// Create user agent instance (caller)
const userAgent = new UserAgent({
  uri: UserAgent.makeURI("sip:[email protected]"),
  transportOptions: {
    server: "wss://sip.example.com"
  },
});

  registerGlobals()

// Connect the user agent
userAgent.start().then(() => {

  // Set target destination (callee)
  const target = UserAgent.makeURI("sip:[email protected]");
  if (!target) {
    throw new Error("Failed to create target URI.");
  }

  // Create a user agent client to establish a session
  const inviter = new Inviter(userAgent, target, {
    sessionDescriptionHandlerOptions: {
      constraints: { audio: true, video: false }
    }
  });

  // Handle outgoing session state changes
  inviter.stateChange.addListener((newState) => {
    switch (newState) {
      case SessionState.Establishing:
        // Session is establishing
        break;
      case SessionState.Established:
        // Session has been established
        break;
      case SessionState.Terminated:
        // Session has terminated
        break;
      default:
        break;
    }
  });

  // Send initial INVITE request
  inviter.invite()
    .then(() => {
      // INVITE sent
    })
    .catch((error: Error) => {
      // INVITE did not send
    });

});

我尝试了互联网和指南中的大部分内容。

sip voip jssip react-native-webrtc sip.js
1个回答
0
投票

你尝试过jssip而不是sip.js吗?

© www.soinside.com 2019 - 2024. All rights reserved.