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

调用绑定Azure Function Webhook的Twilio号码时始终占线的问题

解决Twilio绑定Azure Function后拨打电话忙线的问题

核心排查与修复方向

Twilio返回忙线提示,本质是Webhook未返回符合要求的200 OK状态码+正确格式的TwiML响应。结合你从.NET Core 3.2升级到.NET 7/8的背景,重点处理以下几点:

1. 函数授权配置冲突

你的Function设置了AuthorizationLevel.Function,但Twilio发起的Webhook请求不会自动携带函数密钥,导致请求被拒绝(返回401/403),Twilio因此判定线路忙。

  • 解决方案:将HttpTrigger的授权级别改为AuthorizationLevel.Anonymous,或者在Twilio后台配置Webhook URL时追加函数密钥(格式:https://<你的函数域名>/api/AnswerPhone?code=<函数密钥>)

2. TwiML响应兼容问题

升级.NET版本后,原有的TwiMLResult封装可能存在序列化或响应头设置异常,导致Twilio无法解析响应。可以替换为手动构建响应,直接控制输出:

[Function("AnswerPhone")]
public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req)
{
    var voiceResponse = new VoiceResponse();
    voiceResponse.Say("HELLO");
    
    var response = req.CreateResponse(HttpStatusCode.OK);
    response.Headers.Add("Content-Type", "application/xml");
    await response.WriteStringAsync(voiceResponse.ToString());
    
    return response;
}

3. 查看函数执行日志

登录Azure门户进入你的Function App,在监控->日志中确认:

  • Twilio的请求是否正常进入函数
  • 函数执行时是否抛出异常(如序列化错误、依赖缺失)
  • 响应状态码是否为200

4. 直接验证函数响应

用Postman或curl发送POST请求到函数URL,检查返回结果:

  • 状态码必须是200 OK
  • 响应内容必须是标准TwiML格式:
<Response>
  <Say>HELLO</Say>
</Response>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:25:01