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

Twilio Task Router多预订问题:接听后其他Worker仍响铃

解决Twilio Task Router多Worker呼叫响铃未终止问题

当一个Worker接听呼叫后,要终止其他Worker的响铃,核心是在呼叫被接听时取消对应的Task,让Task Router自动终止所有关联的未完成预订。具体实现步骤如下:

  • 监听呼叫的answered事件:利用你已配置的status_callback_url接口,接收Twilio发送的呼叫状态事件。当事件类型为answered时,触发后续操作。
  • 取消对应Task:通过Twilio API将该呼叫关联的Task标记为completed,Task Router会自动终止该Task下所有未被接受的Worker预订,停止其他Worker的呼叫响铃。

具体代码实现

在你的ivr/statuseventCallback接口中添加以下逻辑:

use Twilio\Rest\Client;
use Illuminate\Http\Request;

public function statuseventCallback(Request $request) {
    $eventType = $request->input('EventStatus');
    $taskSid = $request->input('TaskSid');

    // 仅在呼叫被接听时执行取消Task操作
    if ($eventType === 'answered' && !empty($taskSid)) {
        // 初始化Twilio客户端(替换为你的账号凭证)
        $twilio = new Client(env('TWILIO_ACCOUNT_SID'), env('TWILIO_AUTH_TOKEN'));
        
        // 替换为你的Task Router Workspace Sid
        $workspaceSid = 'WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
        
        // 更新Task状态为completed,终止所有关联预订
        $twilio->taskrouter->v1->workspaces($workspaceSid)
            ->tasks($taskSid)
            ->update(['assignmentStatus' => 'completed']);
    }

    return response()->json(['status' => 'success']);
}

注意事项

  • 确保你的Twilio PHP SDK已正确安装并更新至最新版本。
  • 确认Twilio账号拥有修改Task状态的权限,Workspace配置无权限限制。
  • 呼叫事件中的TaskSid参数是关键,需确保Twilio能正确传递该参数到你的回调接口(若未自动传递,可在创建Task时将Sid存入呼叫属性中,再从回调参数里提取)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:46:11