Я экспериментировал с созданием службы AngularJS, которую можно вызывать из контроллера и отправлять текстовые сообщения на основе определенных событий в приложении. Реализация основана на this, и работает следующим образом:Служба AngularJS для отправки SMS-сообщений Twilio
Во-первых, у нас есть служба:
function BusinessService($http) {
this.twilioSMS = {
sendMessage: function(to, from, body) {
var accountSid = 'xxx';
var authToken = 'xxx';
var testEndpoint = 'https://api.twilio.com/2010-04-01/Accounts/' + accountSid + '/SMS/Messages.json';
var liveEndpoint = 'https://api.twilio.com/2010-04-01/Accounts/' + accountSid + '/Messages.json';
var data = {
To: to,
From: from,
Body: body
};
$http({
method: 'POST',
url: testEndpoint,
data: data,
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization",
"Basic " + btoa(accountSid + ":" + authToken) // !
);
},
success: function(data) {
console.log("Got response: %o", data);
if (typeof successCallback == 'function')
successCallback(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("Request failed: " + textStatus + ", " + errorThrown);
if (typeof failCallback == 'function')
failCallback(jqXHR, textStatus, errorThrown);
}
})
}
}
}
Затем установки его в контроллере:
function ConsumerBusinessProfileCtrl($scope, BusinessService) {
$scope.sendMessage = function(to, from, body) {
return BusinessService.twilioSMS.sendMessage(to, from, body)
}
}
И затем, назвав его из вид:
<a ng-click="sendMessage('+12345678901', '+15005550006', 'Hey Jenny! Good luck on the bar exam!')">Send Message</a>
Я протестировал jsfiddle example с моей учетной записью, authToken и телефонными номерами, и она работает нормально. Но моя реализация завершается с ошибкой 401 (UNAUTHORIZED)
. Часть меня думает, что это потому, что $http
не поддерживает beforeSend
или afterSend
. Но я не уверен? Может ли кто-нибудь здесь вести меня в правильном направлении?
Как вы реализуете аутентификации. –
Аутентификация @RomanC происходит в 'beforeSend' с переменными' accountSid' и 'authToken', я сделал несколько поисковых запросов и обнаружил, что на самом деле jQuery фактически не поддерживает это, но рекомендует использовать перехватчики. К сожалению, я не слишком хорошо знаком с этой концепцией и как ее реализовать в моем случае. – methuselah
Перехватчики - слишком яростная концепция без кода, это вне темы. –