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

基于PHP的Twilio会议通话问题:通话中添加参会者出错排查

排查你的Twilio会议通话代码问题

我帮你梳理下代码里的几个关键问题,这些应该是导致功能无法正常工作的核心原因:

1. 未正确定义$dial变量

你的代码里直接调用$dial->conference(),但实际上$dial并没有被赋值。在Twilio的PHP SDK中,$response->dial()会返回一个Dial实例,你需要把它赋值给$dial变量才能继续调用conference()方法:

// 修正前
$response->dial( $vb,array( ... ) ); 
$dial->conference( $roomName, array( ... ) );

// 修正后
$dial = $response->dial( $vb, array( ... ) );
$dial->conference( $roomName, array( ... ) );

2. PHP布尔值大小写错误

你代码里用了大写的True,但在PHP中布尔值的标准写法是小写的true,虽然部分环境可能兼容,但这不符合语法规范,会有潜在的运行风险:

// 修正前
'record' => True,

// 修正后
'record' => true,

3. 数组末尾多余逗号

conference方法的参数数组最后有一个多余的逗号:

// 修正前
'waitUrl' => 'http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient',

// 修正后
'waitUrl' => 'http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient'

虽然PHP 7.2+支持数组末尾逗号,但为了兼容更多环境,最好去掉这个多余的逗号,避免旧版本PHP环境报错。

4. “通话中添加他人”的逻辑缺失

你设置了hangupOnStar => 'true'和url => "http://demo.twilio.com/docs/voice.xml",但这个Demo的VoiceXML并不是用来处理添加参会者的逻辑。要实现“任意一方拨号添加人”的功能,你需要:

  • 把url指向你自己编写的接口,这个接口需要返回包含Dial或Conference指令的Twiml,用来处理添加新参会者的操作;
  • hangupOnStar的作用是让当前通话者退出当前Dial操作,触发url的逻辑,所以你需要确保这个接口能正确接收Twilio的请求,完成添加参会者的流程。

修正后的完整代码示例

$response->say( 'You have joined the conference.', ['voice' => 'alice', 'language' => 'en-GB'] );
// 正确赋值$dial变量
$dial = $response->dial( $vb, array( 
    'record' => true, 
    'hangupOnStar' => true, 
    'url' => "myurl/phone_module_html.php", 
    'recordingStatusCallback' => "myurl/phone_module_html.php" 
) );
$dial->conference( $roomName, array( 
    'startConferenceOnEnter' => true, 
    'endConferenceOnExit' => false, 
    'muted' => false, 
    'record' => 'record-from-start', 
    'waitUrl' => 'http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient'
) );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:14:26