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

时间:2017-05-22 12:24:54

标签: asp.net .net servicestack twilio twilio-api

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

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

我可以看到SMS已成功发送,但是,我没有收到有关已配置的回调网址的任何回复。

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,并运行它来映射localhost网站以使其可以在外部访问。

以下是我试图处理来自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; }
}

虽然我可以看到短信发送到目的地号码,但我看不到回拨级别发生的任何事情。

有人可以建议需要做什么吗?

对此的任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:2)

如果回调是GET,我将离开路线并开启以接受任何 HTTP动词,例如:

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

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

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

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

答案 1 :(得分:0)

经过多次尝试,并参考各种帖子后,我才知道如果请求包含查询字符串,Twilio回调不能正常工作。

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

这篇文章简要介绍了这个问题 - https://github.com/twilio/twilio-node/issues/145这个问题在Github中被某个人标记为已解决,但我仍然面临同样的问题。希望有人能够调查那里。

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