我希望能够向多个电话号码发送相同的短信。我将 Twilio 与 JavaScript 结合使用。我尝试了以下代码,但短信只发送到第一个号码。不会向列表中的其他电话号码发送任何内容。我该如何纠正?
代码检查与电话号码关联的位置是否距离特定位置(latA,lngA)小于 200 公里,然后在满足此条件时发送 SMS 消息。
var latA = 44.56;
var lngA = -79.85;
var phonenums = [Phone1, Phone2, Phone3];
var RefLat = [Lat1, Lat2, Lat3];
var RefLng = [Lng1, Lng2, Lng3];
for(let i = 0; i < count; i++) {
(function(index){
console.log(index)
var latB = RefLat[index]
var lngB = RefLng[index]
var Phone = phonenums[index]
console.log(latB)
console.log(lngB)
//Calculate the distance between two points
var R = 6371; console.log(R) // Radius of the earth in km
var dLat = (latB-latA)*(Math.PI/180);
console.log(dLat)
var dLon = (lngB-lngA)*(Math.PI/180);
console.log(dLon)
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(latA*(Math.PI/180)) * Math.cos(latB*(Math.PI/180)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
//console.log(a)
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
//console.log(c)
var d = R * c; // Distance in km
console.log(d)
//Send an SMS to this phone number if the distance between (latA, lngA) and (latB, lngB) was less than 200km
if (d < 200) {
console.log(Phone)
const data = "From=%2B+1xxxxxxxxxx&To=" + Phone + "&Body=Message;
const user = "accountsid"
const password = "AuthToken"
const xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.twilio.com/2010-04-01/Accounts/accountsid/Messages.json", false, user, password);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Authorization", "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxx==");
xhr.send(data);
}
var refresh=2000; // 1 SMS Every 2 Seconds
setTimeout('function',refresh)
})(i);
}
此代码向满足 if 语句的第一个电话号码发送短信。当满足 if 语句时,它不会向后续电话号码发送消息。我注意到 latB 和 lngB 被设置为 undefined 对于后续的电话号码..
你可以像这样使用 jQuery 来使用 ajax
index.html
<form id="sms-form">
<label for="phone-numbers">Phone numbers (comma-separated):</label>
<input type="text" id="phone-numbers" name="phone-numbers"><br>
<label for="message">Message:</label>
<input type="text" id="message" name="message"><br>
<input type="submit" value="Send">
</form>
脚本.js
function sendSMS(numbers, message) {
$.ajax({
url: 'https://api.twilio.com/2023-04-01/Accounts/YOUR_ACCOUNT_SID/Messages.json',
type: 'POST',
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + btoa('YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'));
},
data: {
To: numbers,
Body: message,
From: 'YOUR_TWILIO_PHONE_NUMBER'
},
success: function(data) {
console.log('Message sent successfully');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Error:', textStatus, errorThrown);
}
});
}
$('#sms-form').submit(function(event) {
event.preventDefault();
var numbers = $('#phone-numbers').val();
var message = $('#message').val();
sendSMS(numbers, message);
});