在对 Twilio 的 JSON 调用中获取"A From phone number is required"



我正在尝试使用HTTP上的JSON与Twilio API通信(我在asp.net vNext上运行,他们的C#库还不支持coreclr)

我有以下代码,但每次我调用API时,我都会得到相同的400-错误的请求响应:

{"code": 21603, "message": "A 'From' phone number is required.", "more_info": "https://www.twilio.com/docs/errors/21603", "status": 400}

我使用以下代码来设置请求并进行调用-验证成功,我得到了上面的错误:

var byteArray = Encoding.ASCII.GetBytes("{AccountSid}:{AuthToken}");
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var jsonStr = JsonConvert.SerializeObject(new {
    From = WebUtility.UrlEncode("+15005550003"), // A test number twilio supply
    To = WebUtility.UrlEncode("{my phone number}"),
    Body = WebUtility.UrlEncode("Hi there from a pure json rest client...")
});
var response = await client.PostAsync("https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/SMS/Messages.json", new StringContent(jsonStr));

在联系了支持人员并与一位名叫Joshua的非常乐于助人的人打交道后,我们已经找到了答案。

在Twilio文档中,您可以使用带有"messages.json"或"messages.xml"的url——我认为这意味着:无论您使用哪个url,消息(请求和响应)都必须遵循该格式。

不幸的是,这不是真的-所有对Twilio的请求都必须是内容类型:application/x-www-form-urlencoded

例如To=0123456789&自=9876543210&Body=高

在C#(HttpClient)中,它看起来像:

_client.PostAsync(_url, new FormUrlEncodedContent(new Dictionary<string, string>(){
 { "To", "0123456789" }, 
 { "From", "9876543210" }, 
 { "Body", "Hi" } }));

我是Twilio开发者社区团队的Megan。

看起来你正在使用的数字"+150055550003"是Twilio的一个神奇输入数字,它实际上代表了"To"字段,因此是你收到的错误。根据您想要测试的内容,您可以尝试传入"+150055550006"。

您可以在这里的文档中看到更多关于每个魔术输入所代表的内容。

希望这能有所帮助!

如果使用允许您从多个电话号码发送的短信/消息服务,您会收到此错误,

然后更换

{ "From","<number>" }

带有

{ "MessagingServiceSid","<sid>" }

SID可以在消息服务页面上找到https://www.twilio.com/console/sms/services

最新更新