首页 > 解决方案 > 将 ASP.NET Web API 与 Twilio 一起使用,而不是 ASP.NET MVC 控制器

问题描述

我得到了 Twilio ASP.NET 示例,用于 Twilio 接听电话。我正在尝试使用 ASP.NET Web API 而不是示例中使用的 ASP.NET MVC Controller 类来开发控制台应用程序。我们不想在 ISS 服务器上托管 ASP.NET MVC 应用程序,并且希望控制台应用程序在“本地”运行。

作为 ASP.NET 和 web api 的新手,我使用在线示例使用 VB.NET 在 Main() 函数中设置网站:

Imports System.Web.Http.SelfHost
Imports System.Web.Http

Module Module1
    Sub Main()

        'Try config as localhost/ with port number
    Dim config As New HttpSelfHostConfiguration("https://localhost:9032")


    config.Routes.MapHttpRoute(
      name:="DefaultApi",
      routeTemplate:="api/{controller}/{id}",
      defaults:=New With {.id = RouteParameter.Optional}
    )

    Using server As New HttpSelfHostServer(config)
        Try
            server.OpenAsync().Wait()
            Console.WriteLine("Listening.")
        Catch aggEx As AggregateException
            Console.WriteLine("Error opening server.")

        End Try

        Console.WriteLine()
        Console.WriteLine("Press enter to stop listening and exit.")
        Console.ReadLine()
    End Using

End Sub

端模块

根据在线示例,我创建了一个 Controller 文件夹,并使用以下代码创建了一个名为 VoiceControll.vb 的类文件:

Imports System.Threading
Imports System.Web.Mvc
Imports Twilio.AspNet.Mvc
Imports Twilio.TwiML

Namespace Controllers
    Public Class VoiceController
        Inherits TwilioController
        'Inherits ApiController

        '<HttpPost>
        Function Index() As ActionResult
            Dim response = New VoiceResponse()
          response.Say("Hello.  This is Twilio.")
        Thread.Sleep(5000)
        response.Play(digits:="1")
        Thread.Sleep(5000)
        response.Hangup()
        Return TwiML(response)
    End Function

End Class

结束命名空间

这基本上是示例中的代码。我不确定 Twilio post 函数(接收呼叫)使用什么函数名称,或者 ActionResult 是否适用于 ASP.NET Web api。

然后我以管理员模式启动控制台应用程序,没有错误。然后我运行 ngrok 命令 ngrok http -host-header="localhost:9032" 9032 并获取 Web url 以在 Twilio 控制台上更改我的 Twilio 电话号码的 http post url。

为了进行测试,我拨打 Twilio 号码并收到消息“发生应用程序错误。”。控制台上的 Twilio 调试显示 502 http 错误。

我的感觉是我的函数名称或控制器代码中的某些内容不正确。

我试过使用 Long Le 的 Twilio ASP.NET web api 示例。

就像我之前说的,我是 ASP.NET 的新手,我觉得我在代码中犯了一个愚蠢的错误。谢谢您的帮助。

标签: asp.nettwilio

解决方案


推荐阅读