Появилась задача отправлять данные с сайта в адресную книгу сервиса рассылки Sendpulse.
У меня есть тип материала, где есть поле имени и email. Нужно, чтобы при создании нового материала такого типа данные автоматически вносились в адресную книгу Sendpulse.
SendPulse работает на REST API по протоколу HTTPS и, по сути, представляет собой набор методов, используемых для выполнения запросов и получения ответов для каждой операции. Все ответы возвращаются в виде структур JSON.
Документация по API говорит, что для передачи нового ящика в нужную мне адресную книгу необходимо сделать POST-запрос на https://api.sendpulse.com/addressbooks/{id}/emails, где ID - это уникальный номер адресной книги.
Авторизация:
https://api.sendpulse.com/oauth/access_token
Пример запроса авторизации:
"grant_type":"client_credentials",
"client_id":"237b4af9c99d0f89bdbd876dcd5a0000",
"client_secret":"a99e7d506d3701c5c04de3db1913eeee"
}
Пример POST запроса с именем и email:
"emails":[
{
"email":"test@test.com",
"variables":{
"name":"Test",
}
},
{
"email":"test2@test.com"
}
]
}
Вопрос, можно ли это реализовать без написания своего компонента, например через Views или модуль ECA (https://www.drupal.org/project/eca)? Как вы решаете подобные задачи?
У SendPulse есть хороший модуль для 7 версии, а вот для 8 и выше решение не сделано, что странно.
Комментарии
Оказывается есть ещё один модуль, который позволяет интегрировать сайт с сервисом, и он поддерживает 9 и 10 версию: https://www.drupal.org/project/sendpulse_api
После установки вводите ключи API в настройках модуля, далее в настройках нужной ноды заходите в настройки полей и создаёте поле типа "Sendpulse Api Lists", которое будет видно только администраторам сайта. Далее при создании поля указывайте где храните email-поле, а также ставите нужные галочки, там их всего две и вы сразу все поймёте.
Для моих базовых задач этого модуля пока достаточно.
Как писать запросы REST API, которые требует данный модуль, а также как произвести авторизацию на стороннем сервисе и более тонкую настройку под свои задачи я пока разбираюсь. Если у кого-то есть практический опыт - пожалуйста поделитесь примером.