Twilio сообщение с NodeJS и Sequelize MySQL - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь отправить приветственное сообщение пользователю всякий раз, когда он отправляет форму для присоединения, я использую 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);
...