如何为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
相关产品推荐
相关产品推荐

