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

ASP.NET Core 2方法返回TwiML报错:无法将TwiML当作方法调用

解决ASP.NET Core 2中Twilio返回TwiML的"Non-invocable member"错误

我刚帮你定位到这个问题的根源:你参考的旧代码示例大概率是基于早期版本的Twilio SDK,而当前你使用的Twilio.AspNet.Core包语法已经更新了——TwiML不再是一个可调用的方法,所以你直接把它当方法用才会报这个错误。

下面是两种适配ASP.NET Core 2环境的正确实现方式:

方式1:继承TwilioController(推荐)

Twilio提供了专门的TwilioController来简化TwiML的返回流程,只需要创建VoiceResponse对象,然后返回TwimlResult即可:

using Twilio.TwiML;
using Twilio.AspNet.Core;

public class CallForwardController : TwilioController
{
    public IActionResult HandleIncomingCall()
    {
        // 创建语音响应对象
        var voiceResponse = new VoiceResponse();
        
        // 配置呼叫转接,替换成你的目标号码
        voiceResponse.Dial("+18001234567");

        // 返回TwimlResult
        return new TwimlResult(voiceResponse);
    }
}

方式2:手动返回XML内容(不继承TwilioController)

如果你的控制器不需要继承TwilioController,可以直接将VoiceResponse序列化为XML字符串,指定正确的Content-Type返回:

using Twilio.TwiML;
using Microsoft.AspNetCore.Mvc;

public class CallController : Controller
{
    public IActionResult ForwardCall()
    {
        var voiceResponse = new VoiceResponse();
        voiceResponse.Dial("+18001234567");

        // 直接返回XML格式的响应
        return Content(voiceResponse.ToString(), "application/xml");
    }
}

额外注意事项

  • 确保安装适配ASP.NET Core 2的NuGet包:由于ASP.NET Core 2版本较旧,你需要安装对应版本的Twilio.AspNet.Core(推荐5.x系列,避免安装6.0+版本,因为这些版本适配.NET Core 3.1+)。可以通过NuGet包管理器执行:
    Install-Package Twilio.AspNet.Core -Version 5.61.0
    
  • 验证Twilio Webhook配置:确保Twilio控制台中设置的Webhook URL指向你这个控制器的Action,并且请求方法选择POST(Twilio默认用POST发送呼叫事件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:06:04