我正在构建一个 NextJs 14 应用程序,该应用程序应通过 SMS 向用户发送 OTP
实施了短信门户,这在我的场景中似乎是最具成本效益的。
我在 Vercel 上托管(专业计划)
本地一切正常,但部署后短信不会发送 错误日志中没有任何内容,没有抛出异常,但短信没有到达,我的短信门户显示没有发送短信(除非我从 localhost:3000 发送它们)
我不确定我的代码有问题(它在本地工作) 或者短信门户方面的东西(他们说不) 或者我需要在 Vercel 中白化 SMSPortal 的 IP(不知道如何操作?)
有人对此有一些见解吗?
代码在下面,但就像我说的,它在本地运行良好
import axios from "axios";
export const sendSms = async (message: string, recipient: string) => {
const apiKey = process.env.SMS_PORTAL_CLIENT_ID;
const apiSecret = process.env.SMS_PORTAL_API_SECRET;
const accountApiCredentials = apiKey + ":" + apiSecret;
const buff = Buffer.from(accountApiCredentials);
const base64Credentials = buff.toString("base64");
const requestHeaders = {
headers: {
Authorization: `Basic ${base64Credentials}`,
"Content-Type": "application/json",
},
};
const requestData = JSON.stringify({
messages: [
{
content: message,
destination: recipient,
},
],
});
axios
.post(
"https://rest.smsportal.com/bulkmessages",
requestData,
requestHeaders,
)
.then((response) => {
if (response.data) {
console.log("Success:");
console.log(response.data);
}
})
.catch((error) => {
if (error.response) {
console.log("Failure:");
console.log(error.response.data);
} else {
console.log("Something went wrong during the network request.");
}
});
};```
您是否已将 SMS Portal 环境变量添加到 vercel 仪表板中的生产环境变量中?