使用带有 JavaScript 的 Twilio 向多个电话号码发送相同的消息?

问题描述 投票:0回答:1

我希望能够向多个电话号码发送相同的短信。我将 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 对于后续的电话号码..

twilio twilio-api
1个回答
0
投票

你可以像这样使用 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);
});
© www.soinside.com 2019 - 2024. All rights reserved.