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

如何使用C#从Twilio获取已完成录音通话的Recording SID

如何在C#中从Twilio获取通话完成后的Recording SID?

嘿,很高兴能帮你解决这个问题!你已经搞定了发起带录音的Twilio通话,现在要拿到Recording SID对吧?这里有两种最常用的方法,看哪种适合你的场景:

方法1:通过Twilio Webhook实时获取(推荐)

这是Twilio官方推荐的方式——当通话结束、录音生成完成后,Twilio会主动把包含RecordingSid的请求发送到你指定的回调地址,不需要你主动去查。

首先,你需要在发起通话的时候设置statusCallback参数,指定接收回调的端点:

// 初始化Twilio客户端(替换成你的Account SID和Auth Token)
var twilioClient = new Twilio.TwilioClient("你的Account SID", "你的Auth Token");

// 发起带录音的通话,并设置回调地址
var call = twilioClient.Calls.Create(
    to: new Twilio.Types.PhoneNumber("目标用户号码"),
    from: new Twilio.Types.PhoneNumber("你的Twilio号码"),
    url: new Uri("你的TwiML服务URL"), // 返回你之前用的Dial指令的TwiML
    statusCallback: new Uri("https://你的公网服务器地址/api/twilio-recording-callback"),
    statusCallbackMethod: System.Net.Http.HttpMethod.Post,
    record: "record-from-answer" // 和你之前的录音设置一致
);

然后在你的后端(比如ASP.NET Core)写一个接收回调的接口,直接从表单参数里拿RecordingSid:

[ApiController]
[Route("api")]
public class TwilioCallbackController : ControllerBase
{
    [HttpPost("twilio-recording-callback")]
    public IActionResult RecordingCallback([FromForm] TwilioCallCallback model)
    {
        // 拿到你要的Recording SID
        string recordingSid = model.RecordingSid;
        
        // 接下来可以把SID存数据库、触发后续处理等等
        Console.WriteLine($"拿到录音SID:{recordingSid}");
        
        return Ok();
    }
}

// 定义接收Twilio回调参数的模型
public class TwilioCallCallback
{
    public string RecordingSid { get; set; }
    public string CallSid { get; set; }
    public string CallStatus { get; set; }
    // 其他你需要的参数可以按需添加
}

注意:Twilio发送的是表单格式的请求,所以一定要用[FromForm]来绑定参数,不然拿不到值哦!另外,你的回调地址必须是公网可访问的,本地调试可以用ngrok之类的工具做端口映射。

方法2:通过Twilio REST API主动查询

如果因为某些原因没法用Webhook,你也可以先保存发起通话时的CallSid,等通话结束后主动查询该通话下的录音记录:

// 发起通话时先保存CallSid
var call = twilioClient.Calls.Create(...); // 这里是你之前的发起通话代码
string callSid = call.Sid;

// 等通话结束后(可以通过CallStatus判断是否完成),查询该通话的录音
var recordings = twilioClient.Recordings.List(callSid: callSid);

// 因为你设置的是从接通开始录音,所以一般只有一条录音
if (recordings.Any())
{
    string recordingSid = recordings.First().Sid;
    // 后续处理逻辑
}

注意:录音生成会有几秒钟的延迟,所以如果刚结束通话就查可能拿不到,建议加个短时间的等待或者重试逻辑。

额外提示

  • 确保你的Twilio账户已经开启了录音权限(不过你已经能发起带录音的通话,应该没问题)
  • 如果用Webhook,记得在Twilio控制台验证你的回调域名,避免被拦截
  • 可以在Twilio控制台的「Logs > Events」里查看回调请求的详情,方便调试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:30:01