我如何通过快递发送带有 twilio api 的自定义短信

how can i send custom sms message with twilio api via express

所以我试图在具有输入和按钮的网络中创建一个简单的功能,当我单击按钮时 twilio api 如果输入是 hello 发送消息,则发送带有输入值 life 正文的消息你好,这是 index.js 文件,其中包含发送消息的简单功能,我不知道我是应该使用 POST 方法还是只看一下

let input = document.querySelector("input").value;
document.querySelector("button").addEventListener("click", whatTheHell);
let whatTheHell = () => {
  fetch("/sendSms")
    .then((res) => res.json())
    .then((res) => console.log(res))
    .catch((err) => console.log(err));
};

这是 express.js 文件,其中包含将要发送短信的 twilio api

const express = require("express");
if (process.env.NODE_ENV !== "production") {
  require("dotenv").config();
}
const accountSid = process.env.accountSid;
const authToken = process.env.authToken ; 
const app = express();
const client = require("twilio")(accountSid, authToken);
app.use(express.json());
app.use(express.static("public"));

app.get("/sendSms", (req, res) => {
  client.messages
    .create({
      body: "message from me",
      messagingServiceSid: "MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      to: "NUMBER",
    })
    .then((message) => {
      res.json({ message: message }).done();
    });
});

app.listen(3000, () => {
  console.log("Server Started");
});

所以我想要的正文:“来自我的消息”是这样的正文:user.input 或类似的东西,我尝试使用 post 方法并做了 req.body.msg 和 msg 是 input.value 但它不接受 post 方法。

您可以使用查询参数将消息发送到您的快速服务器并在您的服务器中检索它们,如下所述:How to get GET (query string) variables in Express.js on Node.js?

如果您在发送时将您的方法设为 post 方法,您还需要像这样从 get 到 post 进行快递:app.get() -> app.post()

这里是 Twilio 开发人员布道者。

我建议将其设为 POST 请求。您需要更新一些内容才能将您的输入从前端获取到服务器。先从前端说起吧。

您不应立即获取输入的值,而应等到单击按钮才能获取值。然后,当它被点击时,您需要发出一个 POST 请求,并在请求正文中包含您要发送的消息。一种方法是 JSON 字符串化数据对象。

let input = document.querySelector("input");
document.querySelector("button").addEventListener("click", whatTheHell);
let whatTheHell = () => {
  const message = input.value;
  fetch("/sendSms", {
    method: "POST",
    body: JSON.stringify({ message: message }),
    headers: {
      'Content-Type': 'application/json'
    }
  })
    .then((res) => res.json())
    .then((res) => console.log(res))
    .catch((err) => console.log(err));
};

现在,在服务器端,我们需要更新您的端点以接收 POST 请求。您已经在使用快速 JSON 解析中间件,因此消息将以 req.body.message 的形式提供。然后我们可以在对 Twilio 的请求中使用它。

const express = require("express");
if (process.env.NODE_ENV !== "production") {
  require("dotenv").config();
}
const accountSid = process.env.accountSid;
const authToken = process.env.authToken ; 
const app = express();
const client = require("twilio")(accountSid, authToken);
app.use(express.json());
app.use(express.static("public"));

app.post("/sendSms", (req, res) => {
  const message = req.body.message;
  client.messages
    .create({
      body: message,
      messagingServiceSid: "MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      to: "NUMBER",
    })
    .then((message) => {
      res.json({ message: message });
    })
    .catch((error) => {
      console.error(error);
      res.status(500).json({ error: error.message });
    });
});

app.listen(3000, () => {
  console.log("Server Started");
});

这应该有效。