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

Twilio是否提供检测被叫方置通话保持的API/服务?React Native集成咨询

实现Twilio通话保持自动同步功能

1. 依赖版本确认

确保使用最新版的@twilio/react-native-programmable-voice,旧版本可能缺失通话保持相关的事件支持。

2. 监听远程保持事件

通话连接成功后,为活跃通话实例添加hold事件监听器,该事件会在对方将我方置为保持或取消保持时触发,以此触发本地的自动保持/恢复操作:

import { TwilioVoice } from '@twilio/react-native-programmable-voice';

let activeCall = null;

// 监听通话连接成功事件
TwilioVoice.addEventListener('callConnected', (call) => {
  activeCall = call;
  
  // 监听远程端的保持状态变化
  activeCall.on('hold', (isRemoteOnHold) => {
    if (isRemoteOnHold) {
      // 对方已将我方置为保持,自动保持本地通话
      activeCall.hold(true)
        .then(() => console.log('本地已自动保持通话'))
        .catch(err => console.error('自动保持失败:', err));
    } else {
      // 对方取消保持,自动恢复本地通话
      activeCall.hold(false)
        .then(() => console.log('本地已恢复通话'))
        .catch(err => console.error('恢复通话失败:', err));
    }
  });
});

// 通话断开时清理监听器,避免内存泄漏
TwilioVoice.addEventListener('callDisconnected', () => {
  if (activeCall) {
    activeCall.removeAllListeners('hold');
    activeCall = null;
  }
});

3. 边界情况处理

  • 调用hold()方法前,需确认通话处于CONNECTED状态,避免无效操作。
  • 确保应用已获取音频录制和播放权限,否则保持/恢复操作会失败。
  • 若客户端SDK事件未正常触发,可配合后端实现补充逻辑:
    • 发起通话时设置statusCallback参数,指向你的后端接口。
    • 当Twilio检测到通话被保持/取消保持时,会向该接口发送包含通话状态的请求。
    • 后端通过WebSocket或推送通知告知客户端,触发本地保持/恢复操作。

关键API说明

  • activeCall.on('hold', isRemoteOnHold):isRemoteOnHold为true表示对方将我方置为保持,为false表示对方取消保持。
  • activeCall.hold(isHold):主动设置本地通话的保持状态,isHold为true时保持通话,为false时恢复通话。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:05:31