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

如何为Twilio Taskrouter会议指令配置会议状态回调?

解决TaskRouter会议指令中状态回调无效的问题

核心结论:可以通过会议指令设置会议参数,但需遵循正确的参数嵌套格式

你之前的写法错误在于将会议相关参数(如statusCallback)直接放在顶层JSON中,而TaskRouter要求会议专属参数必须嵌套在conference对象内。以下是修正后的实现方式:

1. Assignment Callback直接返回JSON的正确格式

return callback(null, {
  "instruction": "conference",
  "from": "<phone number>",
  "conference": {
    "statusCallback": "<你的会议状态回调URL>",
    "statusCallbackEvents": ["start", "end", "join", "leave", "mute", "hold"],
    "statusCallbackMethod": "POST" // 可选,默认POST
  }
});

2. 使用Node.js辅助库更新Reservation的正确写法

try {
  await client.taskrouter.v1.workspaces(event.WorkspaceSid)
    .tasks(event.TaskSid)
    .reservations(event.ReservationSid)
    .update({
      instruction: 'conference',
      from: '<phone number>',
      conference: {
        statusCallback: 'https://<host>.ngrok.io/postConferenceStatusCallback',
        statusCallbackEvents: ['start', 'end', 'join', 'leave', 'mute', 'hold']
      }
    });
  console.log('Reservation updated successfully');
  return callback(null);
} catch (error) {
  console.error(error);
  return callback(error);
}

会议指令参数规范说明

TaskRouter的Conference指令支持的会议参数需全部嵌套在conference对象中,常用有效参数包括:

  • statusCallback: 会议状态回调URL,接收会议生命周期事件
  • statusCallbackEvents: 触发回调的事件列表,可选值包括start/end/join/leave/mute/hold等
  • statusCallbackMethod: 回调请求的HTTP方法(POST/GET,默认POST)
  • record: 是否录制会议(true/false)
  • recordingStatusCallback: 录制状态回调URL(你之前测试生效的conference_recording_status_callback是非标准写法,建议使用此规范键名)

为什么之前的写法无效?

你之前将statusCallback放在顶层,TaskRouter会将其识别为Reservation的参数而非会议参数,因此会议创建时会使用Voice Orchestrator的默认回调地址。只有嵌套在conference对象内的参数才会被传递给底层的Twilio Conference资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:14