Sendgrid API v3 Отправить кампанию с шаблоном и данными динамического шаблона - PullRequest
0 голосов
/ 19 октября 2019

Я использую новый 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())
})
...