【问题标题】:Why can't my ASP.NET Core 2 method return TwiML?为什么我的 ASP.NET Core 2 方法不能返回 TwiML?
【发布时间】:2018-07-24 04:43:16
【问题描述】:

我有一个 ASP.NET Core 2 应用程序,我正在尝试将对 Twilio 号码的呼叫转发到另一个号码。当我尝试返回 TwiML 时,我收到一条错误消息:

“不可调用的成员 'TwiML' 不能像方法一样使用。”

方法如下:

[HttpPost]
public TwiMLResult ForwardCall(string called)
{
   var response = new VoiceResponse();
   response.Dial(newNumber);

   return TwiML(response);
}

错误发生在这里:

return TwiML(response);

我看到的所有代码示例都告诉我以这种方式返回TwiML,但由于某种原因,我无法这样做。

【问题讨论】:

  • 没有使用过 Twilio 的 C# SDK,所以猜测一下。是否有可能 TwiML 是一个类,所以你应该这样做 return new TwiML(response); ?另外,该 API 不应该是 HttpGet 吗?
  • 什么是TwiML?它在哪里定义?该错误表明它不是一个函数,所以你不能这样调用它
  • documentation example 表明TwiMLTwillioController 的成员,并且您的控制器必须从它继承。您的控制器从哪里继承?请发布足够多的代码,以便人们可以重现您的问题
  • @PanagiotisKanavos,你成功了!我需要我的控制器从 TwilioController 继承。感谢您指出这一点!

标签: c# twilio asp.net-core-2.0 twilio-twiml


【解决方案1】:

问题是控制器没有从 TwilioController 继承。一旦我的控制器从 TwilioController 继承,错误就消失了。

【讨论】:

    【解决方案2】:

    由于TwiML 只是XML,我会考虑返回ContentResult

    ContentResult 对象是一个返回简单字符串的ActionResult。它还支持设置将与响应一起返回的Content-Type

    [HttpPost]
    public ContentResult ForwardCall(string called)
    {
       var response = new VoiceResponse();
       response.Dial(newNumber);
    
       return new ContentResult(TwiML(response), "text/xml");
    }
    

    【讨论】:

    • 这不是问题所在。 OP 甚至无法调用 TwiML 函数
    【解决方案3】:

    可能更多与 .net nuget 相关,但我必须在 Visual Studio 识别 Twilio.Aspnet 命名空间之前卸载/重新安装 twilio 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2011-12-09
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多