Я использую следующий код скрипта Google Apps для отправки сообщений WhatsApp:
function sendTrial3WhatsAppMessages() {
var accountSid = 'AC43136d9eda4f6c428fe8bf8eXXXX'; // Replace with your Account SID
var authToken = '301cbac10a3e1749da28e98deffXXXXX'; // Replace with your Auth Token
var messagingServiceSid = 'MG19bfda22e0254c0812b166d7XXXXX'; // Replace with your Messaging Service SID
var templateName = 'shipment_reminder'; // Replace with your new template name
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var today = new Date();
for (var i = 1; i < data.length; i++) {
var commodity = data[i][0];
var quantity = data[i][1];
var deadline = new Date(data[i][2]);
var border = data[i][3];
var phoneNumber = data[i][4];
var optInStatus = data[i][5];
// Skip rows where the deadline has passed or the opt-in status is not "true"
if (today > deadline || optInStatus.toString().toLowerCase() !== 'true') {
continue;
}
// Calculate the number of days left until the deadline
var daysLeft = Math.ceil((deadline.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));
var url = 'https://api.twilio.com/2010-04-01/Accounts/' + accountSid + '/Messages.json';
var payload = {
'To': 'whatsapp:' + phoneNumber, // Ensure correct format
'MessagingServiceSid': messagingServiceSid,
'Body': `Hi there! This is to remind you of the following upcoming order required by ${deadline.toDateString()} :\n` +
`Commodity: ${commodity}\n` +
`Quantity: ${quantity}\n` +
`Border: ${border}\n` +
`Please complete purchase within ${daysLeft} days.`
};
var options = {
'method': 'post',
'payload': payload,
'headers': {
'Authorization': 'Basic ' + Utilities.base64Encode(accountSid + ':' + authToken)
}
};
try {
var response = UrlFetchApp.fetch(url, options);
Logger.log('Message sent successfully. Response: ' + response.getContentText());
} catch (e) {
Logger.log('Error sending message: ' + e.message);
Logger.log('Full response: ' + e);
}
}
}
// Set up a daily trigger to run this function
function createDailyTrigger3() {
ScriptApp.newTrigger('sendTrial3WhatsAppMessages')
.timeBased()
.everyDays(1)
.atHour(12)
.nearMinute(30)
.create();
}
Этот код успешно отправляет сообщение, но только после того, как получатель «согласится». Пользователь может согласиться, отправив сообщение типа «Да» или «ОК» моему отправителю WhatsApp, и это необходимо делать каждые 24 часа. Если я хочу отправить сообщение получателю без необходимости ежедневного согласия, мне нужно использовать утвержденный шаблон WhatsApp на twilio, который у меня уже есть. Я использовал имя шаблона и SID в этом коде, но сообщения по-прежнему не отправляются без согласия пользователя. Нужно ли мне вносить изменения в этот код?
Вот скриншот утвержденного шаблона:
Да, Роберт, я уверен, что шаблон одобрен, и у меня есть для него SID. Я думаю, что делаю что-то не так в своем коде.. и да, я понимаю, что какое-то текстовое сообщение должно быть отправлено на тот же номер внутри 24 часа, чтобы выдержать обмен сообщениями в произвольной форме. Но если я использую утвержденный шаблон, почему я не могу отправлять сообщения за пределами 24-часового окна?
Можете ли вы добавить в вопрос скриншот статуса шаблона? Наличие SID означает только то, что он сохранен, но ничего не говорит о статусе утверждения.
Хорошо, я добавил это в пост.





Кажется, вы используете неправильные параметры для отправки сообщения. Вы используете обычный API обмена сообщениями с параметром body, тогда как вам необходимо указать contentSid и, при необходимости, contentVariables, как описано здесь:
Я не знаком со сценариями приложений, но предполагаю, что код будет выглядеть примерно так:
var url = 'https://api.twilio.com/2010-04-01/Accounts/' + accountSid + '/Messages.json';
var payload = {
'To': 'whatsapp:' + phoneNumber, // Ensure correct format
'MessagingServiceSid': messagingServiceSid,
'ContentSid': 'HXXXXXXXXX',
'ContentVariables': JSON.stringify({
1: commodity,
2: quantity,
3: border
}),
};
Спасибо за помощь. Кажется, проблема была в ContentVariables, а также в формате даты. Сейчас это работает.
Отлично, отметьте этот ответ как правильный зеленой галочкой.
Можете ли вы подтвердить, что шаблон был отправлен и одобрен WhatsApp? Этот шаг необходим для того, чтобы он работал. Также обратите внимание, что это не процесс добровольного согласия, и пользователи также могут отправить сообщение «нет», что приведет к тому же результату.