我正在使用C#和WebAPI - 我的API设置为在POST请求中接受JSON。
我想要做的是 - 每当有人向我配置的twilio电话号码发送短信时,我想通过对我的应用程序的POST请求将此SMS消息转发给我的应用程序端点 - 类似于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("flatout2050@gmail.com", Body);
return Request.CreateResponse(HttpStatusCode.OK, messages);
} catch (Exception e) {
return Request.CreateResponse(HttpStatusCode.InternalServerError, e);
}
}
这是使用POSTMAN的url参数,现在测试twilio ......
答案 0 :(得分:2)
Twilio传道者在这里。
通过配置Twilio电话号码消息请求URL指向您的Web API端点,转发发送到您的Twilio电话号码的SMS消息。登录您的Twilio帐户,然后打开Numbers page并单击要配置的电话号码。添加URL如下所示:
现在,当有人向您的Twilio电话号码发送短信时,Twilio将转向并向该网址发送HTTP POST请求,并发送a set of form-urlencoded values。在Web API中,您应该能够定义方法签名以匹配这些值的键,并且Model Binding将自动为您填充变量。例如,如果您想获取消息来自的电话号码和消息正文,您只需定义一个方法:
public IHttpResponseMessage Post(string From, string Body) {
//do stuff here
return OK();
}
您可以通过多种方式对此进行测试。一种方法是使用Fiddler或POSTman之类的工具将带有属性参数的HTTP请求发送到localhost。另一种方法是使用a tool like ngrok通过公共URL公开localhost。
希望有所帮助。