如何使用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
相关产品推荐
相关产品推荐

