Twilio 回调在我的 .NET 服务中不起作用

Twilio callback is not working in my .NET service

我正在开发一个 SMS 服务,需要发送 SMS。除此之外,我需要跟踪短信的状态。

我正在使用 Twilio 作为 SMS 提供程序,并使用 ServiceStack 来实现服务层。

我可以看到短信发送成功,但是,我没有收到配置回调的任何响应 URL。

var message = MessageResource.Create(to: new PhoneNumber(sms.ToNumber),
from: new PhoneNumber(sms.FromNumber),
body: sms.MessageBody,
statusCallback: new Uri("http://8754622.ngrok.io/json/oneway/TwilioCallBack"));

我已经下载了 Ngrok,运行 用它来映射本地主机站点,使其可以从外部访问。

以下是我尝试处理来自 Twilio 的回调的方式

public object Post(TwilioCallBack request)
{
    return _notificationProviderManager.SaveCallBackEvent(request.MessageStatus);
}

[Route("/TwilioCallBack", "POST")]
public class TwilioCallBack : INotificationCallBack
{
    public int id { get; set; }
        public string MessageStatus { get; set; }
}

虽然我可以看到 SMS 被传送到目标号码,但我看不到回调级别发生任何事情。

任何人都可以建议需要做什么吗?

如有任何帮助,我们将不胜感激。

谢谢

如果回调是 GET,我会保留 Route 和 impl 打开以接受 any HTTP 动词,例如:

public object Any(TwilioCallBack request) { ... }

[Route("/TwilioCallBack")]
public class TwilioCallBack { ... }

由于您已经定义了自定义路由,您应该可以在回调中使用它(即代替预定义路由):

statusCallback: new Uri("http://8754622.ngrok.io/TwilioCallBack"));

经过多次尝试并参考各种 post,我了解到如果请求包含查询字符串,Twilio 回调将无法正常工作。

在这些情况下,Twilio 会报告 Failed to parse StatusCallback URL per RFC2396 错误,我们可以在 Twilio 的调试器中看到该错误。

post 简要解决了这个问题 - https://github.com/twilio/twilio-node/issues/145 这个问题在 Github 中被某人标记为已解决,但我仍然面临同样的问题。希望有人去那里看看。

不幸的是,我不得不从回调 URL 中删除查询字符串参数,之后我可以看到 POST 请求进入并命中服务。