2014-10-08 53 views
0

我正在使用C#和WebAPI - 我的API设置为接受POST请求中的JSON。Twilio - 如何将SMS消息从我的twilio号码转发到API端点?

我想要做的是 - 每当有人发送短信给我已配置的twilio电话号码,我想通过POST请求将此短信转发给我的应用程序到我的应用程序的端点 - 类似example.com/smsfromtwilio - 以便我的应用程序可以分析短信的正文并记录发件人的电话号码。

我试图通读文档,但没有看到如何做到这一点的清晰的例子。

到目前为止,当我准备我的电话号码,我有以下几点:

 var twilio = new TwilioRestClient(accountSid, authToken); 
     var options = new PhoneNumberOptions { 
      PhoneNumber = targetNumber, 
      SmsUrl = "example.com/smsfromtwilio" 
     }; 

     var number = twilio.AddIncomingPhoneNumber(options); 

即使这是采取正确的方向,我不知道是什么格式对输入JSON数据将是我的API端点。是否有任何文件解释如何实现这种情况?

此外 - 是否有一个'短信转发'的JSON负载的例子,所以我可以为我的API设置测试?

更新

我的控制器:

[HttpPost] 
    [Route("api/sms")] 
    public HttpResponseMessage Subscribe(string From, string Body) { 
     try { 
      var messages = _messageService.SendMessage("[email protected]", Body); 
      return Request.CreateResponse(HttpStatusCode.OK, messages); 
     } catch (Exception e) { 
      return Request.CreateResponse(HttpStatusCode.InternalServerError, e); 
     } 
    } 

这是工作与邮差URL参数,现在来测试twilio ...

回答

2

Twilio传道这里。

要发送发送到您的Twilio电话号码的SMS消息,您将首先配置您的Twilio电话号码Message Request Url指向您的Web API端点。登录到您的Twilio帐户,然后打开Numbers page并单击您想要配置的电话号码。添加URL,如下图所示:

现在,当有人发送短信到您的Twilio电话号码,Twilio将扭亏为盈,并和HTTP POST请求到URL,沿a set of form-urlencoded values发送。在Web API中,您应该能够定义一个方法签名来匹配这些值的键,Model Binding会自动为您填充变量。例如,如果你想抓住的消息来自电话号码和邮件正文你只定义等的方法:

public IHttpResponseMessage Post(string From, string Body) { 
    //do stuff here 
    return OK(); 
} 

有很多,你可以测试这个方式。一种方法是使用像FiddlerPOSTman这样的工具将带有属性参数的HTTP请求发送到本地主机。另一种方法是使用a tool like ngrok通过公共URL公开本地主机。

希望有所帮助。

+0

并且 - (对不起) - 有什么方法可以查看Twilio在将内容发送到SMS Url时收到的回复吗?这样我就可以从我的twilio仪表板中检查HTTP 500或404等。 – SB2055 2014-10-08 02:18:13

+0

用suggetions更新了我的回答以供测试。不确定我了解有关JSON正文的问题,或者看到回复。 – 2014-10-08 02:28:52

+0

这很奇怪,我删除了我的评论,并用相同的信息更新了我的答案。我感谢帮助的人! – SB2055 2014-10-08 02:29:50