Я пытаюсь отправить приветственное сообщение пользователю всякий раз, когда он отправляет форму для присоединения, я использую Node.JS и код Twilio Я работал, когда я запускаю его независимо, но я хочу иметь возможность отправлять сообщение пользователю, который только что отправил форму, а не только на один определенный номер телефона.Поэтому я вставил код исходящего сообщения Twilio в код jQuery, который обрабатывает отправку данных пользователя.Нет ошибок и данные по-прежнему отправляются и отображаются (функция handleFormSubmit запущена), но сообщения не были отправлены.Я не могу запустить узел user.js, потому что он не распознает jQuery $.Как получить сообщения для отправки, есть ли лучший способ или я что-то упустил в логике.Вот мой файл user.js (о закомментированном коде, это я пытаюсь поставить функцию diff местами)
// Получить ссылки на элементы страницы
var $userName = $("#username");
var $userEmail = $("#user-email-address");
var $userPassword = $("#user-password");
var $phonenumber = $("#phonenum");
var $profilePicUrl = $("#profile-photo");
var $firstName = $("#first-name");
var $lastName = $("#last-name");
var $gender = $("#gender");
var $DOB = $("#DOB");
var $hometown = $("#hometown");
var $bio = $("#bio");
var $languages = $("#languages");
var $whyOn = $("#why-on");
var $oneAThing = $("#one-A-thing");
var $hobby = $("#hobby");
var $countries = $("#countries-lived");
var $whatIShare = $("#what-I-share");
var $interests = $("#user-interests");
// var $guideStatus = $("#guideStatus");
var $submitBtnU = $("#submitU");
var $userList = $("#user-list");
const accountSid = "ACdxxxxxxbx1axxxxxxxxxxx3";
const authToken = "exxxxxx7xxxxxxxxxxxxx8"; //sensored the token out :)
const client = require("twilio")(accountSid, authToken);
// The API object contains methods for each kind of request we'll make
var API = {
saveUser: function (user) {
return $.ajax({
headers: {
"Content-Type": "application/json"
},
type: "POST",
url: "api/users",
data: JSON.stringify(user)
});
},
getUsers: function () {
return $.ajax({
url: "api/users",
type: "GET"
});
},
editUsers: function (id) {
return $.ajax({
url: "api/users/" + id,
type: "PUT"
});
},
deleteUser: function (id) {
return $.ajax({
url: "api/users/" + id,
type: "DELETE"
});
}
};
//send message func
var sendMessage = function () {
API.getUsers().then(function (data) {
var twiliosms = data.map(function (user) {
console.log("something", user.phonenumber)
client.messages.create({
to: '+' + user.phonenumber,
from: '+12245077001', //this is the purchased number
body: 'Welcome to localize'
})
.then((message) => console.log(message.sid))
.done();
return twiliosms;
});
});
};
// refreshExamples gets new examples from the db and repopulates the list
var refreshUsers = function () {
API.getUsers().then(function (data) {
var $users = data.map(function (user) {
var $a = $("<a>")
.text(user.user_name)
.attr("href", "/user/" + user.id);
var $li = $("<li>")
.attr({
class: "list-group-item",
"data-id": user.id
})
.append($a);
var $button = $("<button>")
.addClass("btn btn-danger float-right delete")
.text("x");
$li.append($button);
return $li;
});
// var twiliosms = data.map(function(user) {
// client.messages
// .create({
// to: user.phonenumber,
// from: "+12245077001", //this is the purchased number
// body: "Welcome to localize"
// })
// .then(message => console.log(message.sid))
// .done();
// return twiliosms;
// });
$userList.empty();
$userList.append($users);
});
location.reload();
};
// handleFormSubmit is called whenever we submit a new user
// Save the new user to the db and refresh the list
var handleFormSubmit = function (event) {
event.preventDefault();
var user = {
user_name: $userName.val().trim(),
email: $userEmail.val().trim(),
password: $userPassword.val(),
phonenumber: $phonenumber.val(),
profile_pic_url: $profilePicUrl.val(),
first_name: $firstName.val(),
last_name: $lastName.val(),
gender: $gender.val(),
DOB: $DOB.val(),
hometown: $hometown.val(),
bio: $bio.val(),
languages: $languages.val(),
whyOn: $whyOn.val(),
one_Athing: $oneAThing.val(),
hobby: $hobby.val(),
countries: $countries.val(),
what_I_share: $whatIShare.val(),
// guide_status : $guideStatus.val(),
interests: $interests.val()
};
// var twiliosms = data.map(function (user) {
// console.log("something",user.phonenumber)
// client.messages.create({
// to: '+' + user.phonenumber,
// from: '+12345356731', //this is the purchased number
// body: 'Welcome to localize'
// })
// .then((message) => console.log(message.sid))
// .done();
// return twiliosms;
// });
// if (!(user.userName && user.userEmail)) {
// alert("You must enter a valid username and email address!");
// return;
// }
sendMessage();
API.saveUser(user).then(function () {
refreshUsers();
});
$userName.val("");
$userEmail.val("");
$userPassword.val("");
$phonenumber.val("");
$profilePicUrl.val("");
$firstName.val("");
$lastName.val("");
$gender.val("");
$DOB.val("");
$hometown.val("");
$bio.val("");
$languages.val("");
$whyOn.val("");
$oneAThing.val("");
$hobby.val("");
$countries.val("");
$whatIShare.val("");
$interests.val("");
};
// handleDeleteBtnClick is called when an example's delete button is clicked
// Remove the example from the db and refresh the list
var handleDeleteBtnClick = function () {
var idToDelete = $(this)
.parent()
.attr("data-id");
API.deleteUser(idToDelete).then(function () {
refreshUsers();
});
};
// var handleEditBtnClick = function () {
// var idToEdit = $(this)
// .parent()
// .attr("data-id");
// API.editUser(idToEdit).then(function () {
// refreshUsers();
// });
// };
// Add event listeners to the submit and delete buttons
$submitBtnU.on("click", handleFormSubmit);
$userList.on("click", ".delete", handleDeleteBtnClick);
// $editProfile. on("click", ".edit", handleEditBtnClick);