我正在使用 Twillio 向我的客户发送 Whatsapp 消息,以获取有关他们正在使用的服务的更新,但我根本无法发送消息。我正在使用 NodeJS 的 twilio SDK v5.0.1
我有什么
我的模板如下所示:
身体:
Hi! Your {{2}} booking has been updated!
示例内容:
BMW
按钮:
https://[website]/view-booking?bookingId={{1}}
类型:
Visit website
文字:
View booking
示例内容 =
-wn54Cw5WO-G3QFUKHP_6dT6PEfApuiloZNoMdTuMZs%3D
这是我尝试过的两件事:
exports.sendSMS = async (phoneNumber) => {
const accountSid = "";
const authToken = "";
const client = new twilio(accountSid, authToken);
return await client.messages
.create({
contentSid: "[sid]",
contentVariables: JSON.stringify({
1: "BMW",
2: "-wn54Cw5WO-G3QFUKHP_6dT6PEfApuiloZNoMdTuMZs%3D",
}),
from: "whatsapp:+[number]",
to: `whatsapp:+${formatUKPhoneNumber(phoneNumber)}`,
})
.then((message) => {
console.log(message);
return message.sid;
})
.catch((e) => {
console.log(`error0: ${e}`);
});
};
我遇到的错误是
error0: Error: A text message body or media urls must be specified.
exports.sendSMS = async (phoneNumber) => {
const accountSid = "";
const authToken = "";
const client = new twilio(accountSid, authToken);
return await client.messages
.create({
body: "Hi! Your BMW booking has been updated!",
from: "whatsapp:+[number]",
to: `whatsapp:+${formatUKPhoneNumber(phoneNumber)}`,
})
.then((message) => {
console.log(message);
return message.sid;
})
.catch((e) => {
console.log(`error0: ${e}`);
});
};
这个不会返回错误,但 Twillio 日志显示消息已失败(如下)
您在这里混合了两种不同的方法。
您提到的第一个是使用内容模板生成器。在那里,您可以向 Meta 提交另一个模板,然后通过 ID 引用该模板并提供要插入的变量。 在
from
或 messagingServiceSid
属性中指定消息传递服务非常重要。这是要求。
client.messages
.create({
contentSid: 'HXXXXXXXXX',
from: 'MGXXXXXXXX',
contentVariables: JSON.stringify({
1: 'Name'
}),
to: 'whatsapp:+18551234567'
})
.then(message => console.log(message.sid));
第二个是使用相当严格的 WhatsApp 模板 - 出现的空格或编码可能会使模板的有效使用无效。 我建议使用第一种方法,但您需要确保首先创建正确的内容模板。