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

在Twilio振铃阶段移除会议通话中未接听的参会者

Twilio会议:接通参会者后自动挂断振铃中的其他参与者

需求场景:在Twilio会议通话中同时呼叫多名参会者,当其中一人率先接听后,需自动断开所有仍处于振铃状态的参会者通话。

以下是实现该逻辑的完整PHP代码,重点完成了指定注释位置的断开逻辑:

foreach ($participants as $participantPhoneNumber) {
    $conferenceOptions = ['startConferenceOnEnter' => true, 'endConferenceOnExit' => true];

    $dial = $response->dial('');
    $dial->conference($conferenceName, $conferenceOptions);
    
    $toPerson = "client:" . $participantPhoneNumber . "?typeOfCall=" . $typeOfCall . "&minimumMinutes=" . $minimumMinutes . "&language=" . $language . "&speciality=" . $speciality;

    $participant = $twilio->conferences($conferenceName)->participants->create("client:".$from, $toPerson, [
        "conferenceStatusCallback" => "http://****/**/**/status-callback.php",
        "conferenceStatusCallbackEvent" => "start end join leave mute hold modify speaker announcement",
        "conferenceStatusCallbackMethod" => "POST",
        "beep" => "false",
    ]);
}

$conferences = $twilio->conferences->read([
    "status" => "in-progress",
    "friendlyName" => $conferenceName,
]);

foreach ($conferences as $conference) {
    $participantsIDs = $twilio->conferences($conference->sid)->participants->read([], 20);
    
    // 先检查是否有已接通的参与者
    $hasConnectedParticipant = false;
    foreach ($participantsIDs as $record) {
        if ($record->status === 'connected') {
            $hasConnectedParticipant = true;
            break;
        }
    }
    
    // 如果有已接通的,断开所有振铃中的参与者
    if ($hasConnectedParticipant) {
        foreach ($participantsIDs as $record) {
            if ($record->status === 'ringing') {
                // 调用API断开该振铃的参与者
                $twilio->conferences($conference->sid)
                       ->participants($record->sid)
                       ->update(["status" => "disconnected"]);
            }
        }
    }
}

关键逻辑说明:

  • 先遍历会议参与者,判断是否存在状态为connected(已接听)的参会者
  • 确认有已接听的参会者后,再次遍历所有参与者,对状态为ringing(振铃中)的调用Twilio API将其状态更新为disconnected,实现挂断
  • 使用Twilio SDK的update方法修改参与者状态,这是官方推荐的断开会议参与者的方式

额外提示:

如果需要更实时的处理,建议结合conferenceStatusCallback回调接口,在收到join事件(即有参会者加入会议)时触发断开逻辑,这样能更快响应参会者接听的动作,避免延迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:05:27