Отправить сообщение с помощью WebRequest и Twilio

Мне нужно отправить сообщение с помощью сервисов Twilio и NetDuino. Я знаю, что есть API, который позволяет отправлять сообщения, но он использует Rest-Sharp за кулисами, что несовместимо с микрофреймворком. Я попытался сделать что-то вроде приведенного ниже, но получил ошибку 401 (не авторизован). Я получил эту форму кода здесь (это именно то, что мне нужно для делать)

var MessageApiString = "https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/SMS/Messages.json";
var request = WebRequest.Create(MessageApiString + "?From=+442033*****3&To=+447*****732&Body=test");
var user = "AC4*************0ab05bf";
var pass = "0*************b";
request.Method = "POST";
request.Credentials = new NetworkCredential(user, pass);
var result = request.GetResponse();

person Massimiliano Peluso    schedule 30.04.2014    source источник
comment
Поддерживает ли Microframework стандартные запросы cURL? Вы могли бы использовать это вместо WebRequest?   -  person phalt    schedule 02.05.2014


Ответы (1)


Евангелист Twilio здесь.

Из приведенного выше кода не похоже, что вы заменяете токен {AccountSid} в переменной MessageApiString своим фактическим Sid учетной записи.

Кроме того, похоже, что вы добавляете параметры номера телефона к URL-адресу в виде значений строки запроса. Поскольку это запрос POST, я считаю, что вам нужно включить их в тело запроса, а не в строку запроса, что означает, что вам также необходимо установить свойство ContentType.

Вот пример:

var accountSid = "AC4*************0ab05bf";
var authToken = "0*************b";

var MessageApiString = string.Format("https://api.twilio.com/2010-04-01/Accounts/{0}/SMS/Messages.json", accountSid);

var request = WebRequest.Create(MessageApiString);
request.Method = "POST";
request.Credentials = new NetworkCredential(accountSid, authToken);
request.ContentType = "application/x-www-form-urlencoded";

var body = "From=+442033*****3&To=+447*****732&Body=test";
var data = System.Text.ASCIIEncoding.Default.GetBytes(body);

using (Stream s = request.GetRequestStream())
{
    s.Write(data, 0, data.Length);
}

var result = request.GetResponse();

Надеюсь, это поможет.

person Devin Rader    schedule 02.05.2014