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

