Я использую новый API Sendgrid (v3) с Node js + библиотеки @sendgrid/mail
и @sendgrid/client
.
Чего я хочу достичь : отправлять еженедельный дайджест всеммои контакты (кроме тех, кто отписался от этой группы). Я использую шаблон, который я создал с помощью Sendgrid, благодаря его template_id, а также динамическим данным шаблона для заполнения почты еженедельными данными.
Проблема :
Я могу отправить маркетинговую кампанию, используя / v3 / marketing / singlesends для всех моих контактов с моим шаблоном, но я не могу отправить ее с данными моего динамического шаблона.
Я могу отправлять одно электронное письмо за раз с моим шаблоном + данные динамического шаблона, но для этого мне нужно сначала получить все мои контакты, и я могу получить только последние 50 контактов с этой конечной точки / v3 / marketing/ контакты (они отключили нумерацию страниц). Возможно, мне удалось получить их все с этой конечной точки / contactdb / receients , проблема в том, что я создал учетную запись Sendgrid после того, как они выпустили новый API, поэтому я не могу получить к ней доступ.
Есть идеи, как это сделать?
Текущий код:
1) Настроить кампанию
const sgClient = require('@sendgrid/client')
var params={
'name': 'Weekly Digest #'+nb,
'sender_id': sg_sender_id,
'suppression_group_id': sg_unsub_group_id,
'template_id': id_template,
'dynamicTemplateData': template_params,
//also tried with 'dynamic_template_data' instead, not working
'filter': {'send_to_all': true}
}
let url='/v3/marketing/singlesends/' + campaign_id.toString('base64')
const request = {
method: 'PATCH',
url: url,
body: params
}
sgClient.setApiKey(config.sendgrid_key)
sgClient.request(request)
.then(([response, body]) => {
console.log('body:', body)
})
.catch(error => {
console.error('error:', error.toString())
})
2) Отправить кампанию
let url='/v3/marketing/singlesends/' + campaign_id.toString('base64') + '/schedule'
let params={'send_at': 'now'}
const request = {
method: 'PUT',
url: url,
body: params
}
sgClient.setApiKey(config.sendgrid)
sgClient.request(request)
.then(([response, body]) => {
console.log('body:', body)
})
.catch(error => {
console.error('error:', error.toString())
})