You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native端注册Twilio SIP端点失败问题咨询

问题解答

一、Twilio控制台未显示注册端点的原因

  • Twilio控制台的「SIP端点」列表,仅展示手动在控制台创建/通过Twilio API创建的SIP域用户,而通过Twilio Voice SDK客户端侧调用register完成的注册,属于动态会话注册,不会在这个列表里显示。
  • 要验证客户端是否成功注册,可以调用Twilio的API查询活跃注册会话:GET /2010-04-01/Accounts/{AccountSid}/SIP/Registrations.json,返回结果会包含当前已注册的端点信息。
  • 额外确认:你的Token必须包含voice权限,且identity字段正确,关联的TwiML应用需配置有效的语音请求URL,确保鉴权流程无问题。

二、React Native端可以实现Twilio SIP注册,推荐官方方案

放弃停止维护的第三方包,直接使用Twilio官方维护的@twilio/voice-react-native SDK,解决Pod问题的同时保证兼容性:

核心实现步骤

  1. 安装SDK:

    npm install @twilio/voice-react-native --save
    # iOS端执行
    cd ios && pod install && cd ..
    

    若Pod安装有冲突:

    • 先执行pod repo update更新本地Pod仓库
    • 删除Podfile.lock和Pods文件夹后重新执行pod install
    • 确保Xcode版本符合SDK要求(当前官方要求Xcode 14.0+)
  2. 注册代码示例:

    import { Voice } from '@twilio/voice-react-native';
    
    // 从后端获取Token(禁止前端硬编码敏感信息)
    const getTwilioToken = async (userIdentity) => {
      const res = await fetch('/your-backend/token-endpoint', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ identity: userIdentity })
      });
      const data = await res.json();
      return data.token;
    };
    
    // 执行注册
    const registerSIP = async () => {
      const token = await getTwilioToken('user123');
      try {
        await Voice.register(token);
        console.log('SIP注册成功');
        // 监听注册状态变化
        Voice.addEventListener('registrationStateChanged', (event) => {
          console.log('当前注册状态:', event.state);
        });
      } catch (err) {
        console.error('注册失败:', err.message);
      }
    };
    

平台配置注意事项

  • iOS:
    • 在Info.plist中添加VoIP权限描述:
      <key>NSVoIPUsageDescription</key>
      <string>需要使用VoIP功能进行语音通话</string>
      
    • 开启Xcode项目的Background Modes,勾选「Voice over IP」选项
  • Android:
    • 在AndroidManifest.xml中添加必要权限:
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      <uses-permission android:name="android.permission.WAKE_LOCK" />
      

三、常见排查要点

  • 验证Token有效性:用Twilio官方的Token验证工具检查Token是否包含voice权限、正确的identity和关联的TwiML应用Sid
  • 检查网络:确保测试环境未屏蔽Twilio SIP流量(UDP/TCP 5060-5061端口,媒体端口范围10000-20000)
  • 监听错误事件:通过Voice.addEventListener('error', (err) => console.log(err))获取具体错误信息,定位问题

内容的提问来源于stack exchange,提问作者Ubaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:27:43