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

Twilio C# ASP.NET Core Web API中recordingStatusCallback返回400错误排查

解决RecordingStatusCallback返回400的问题

以下是针对你遇到的问题的排查和解决步骤:

1. 检查模型绑定是否失败

你的Events方法正常,但Recordings返回400,大概率是模型绑定错误。Twilio发送的表单字段可能和你的VoiceRequest类属性不匹配,或者类型不兼容。

修改Recordings方法,添加模型状态校验,输出绑定错误:

[HttpPost]
public IActionResult Recordings([FromForm] VoiceRequest request)
{
    if (!ModelState.IsValid)
    {
        // 输出所有绑定错误,定位字段问题
        foreach (var key in ModelState.Keys)
        {
            var errors = ModelState[key].Errors;
            foreach (var error in errors)
            {
                Console.WriteLine($"绑定错误 [{key}]: {error.ErrorMessage}");
            }
        }
        return Ok(); // 先返回200,避免Twilio重复重试
    }

    // 原有业务代码
    Console.WriteLine($"CallSID: {request.CallSid}");
    Console.WriteLine($"RecordingUrl: {request.RecordingUrl}");
    Console.WriteLine($"RecordingDuration: {request.RecordingDuration}");
    Console.WriteLine($"TranscriptionUrl: {request.TranscriptionUrl}");

    return Ok();
}

2. 核对VoiceRequest类的字段定义

重点检查以下字段的名称和类型:

  • RecordingUrl:Twilio传递的字段名是RecordingUrl(注意大小写),你的属性名必须完全匹配;类型应为string。
  • RecordingDuration:Twilio传递的是字符串格式的时长(比如"120"),如果你的属性定义为int,会导致绑定失败,需改为string,之后再转成数值类型。
  • TranscriptionUrl:只有开启了转录功能时Twilio才会传递这个字段,若你的属性是必填项,也会导致绑定失败,需设置为可空(string?)。

示例正确的VoiceRequest字段定义:

public class VoiceRequest
{
    public string CallSid { get; set; }
    public string CallStatus { get; set; }
    public string DialCallDuration { get; set; }
    public string RecordingUrl { get; set; }
    public string RecordingDuration { get; set; }
    public string? TranscriptionUrl { get; set; } // 可空,避免无转录时绑定失败
}

3. 确认方法返回值类型

原方法用void,ASP.NET默认返回204 No Content,虽然Twilio理论上接受,但改为返回IActionResult并明确返回Ok(),确保响应符合Twilio的预期。

4. 检查Twilio回调配置

  • 确认recordingStatusCallback的URL和statusCallback的URL在同一环境(比如都是ngrok代理的地址),没有路径拼写错误。
  • 确认recordingStatusCallbackEvent设置正确(比如设置为completed,只有录音完成时才会触发回调)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:55:10