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 请求进入并命中服务。
我正在开发一个 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 请求进入并命中服务。