Как подписать новых пользователей с помощью Mailchimp API 3.0 и Gibbon 2.x
В моем приложении я хочу автоматически подписывать пользователей на список MailChimp, когда они создаются. Вся документация, которую я нашел, фокусируется на MailChip API 2.0 и Gibbon 1.x.
Вот что у меня так далеко:
Я создал файл.env с:
MAILCHIMP_API_KEY = "my_api_key"
MAILCHIMP_LIST_ID = "my_list_id"
Я создал инициализатор gibbon.rb с:
Gibbon::Request.api_key = ENV["MAILCHIMP_API_KEY"]
Gibbon::Request.timeout = 15
Затем создал работу:
class SubscribeUserToMailingListJob < ActiveJob::Base
queue_as :default
def perform(user)
gibbon = Gibbon::Request.new
# I am getting errors from this line
gibbon.lists(ENV["MAILCHIMP_LIST_ID"]).members.create(body: {email_address: user.email, status: "subscribed", merge_fields: {FNAME: user.name, LNAME: ""}})
end
end
В моем user.rb я это после проверки
after_create :subscribe_user_to_mailing_list
И добавил это под частным:
def subscribe_user_to_mailing_list
SubscribeUserToMailingListJob.perform_later(self)
end
Я получаю ошибку 400 от gibbon.lists(ENV["MAILCHIMP_LIST_ID"]).members.create(body: {email_address: user.email, status: "subscribed", merge_fields: {FNAME: user.name, LNAME: ""}})
********РЕДАКТИРОВАТЬ********
За этот разговор.
Я думаю, что ошибка произошла, потому что адрес электронной почты уже существовал в списке. Когда я впервые получил сообщение об ошибке, адрес электронной почты был добавлен в список MailChimp, но пользователь не был создан в моем приложении из-за другой ошибки. Теперь, когда я пытаюсь создать пользователя с тем же адресом электронной почты, появляется ошибка 400, потому что электронная почта уже существует. Это также предотвращает создание пользователя в моем приложении.
Может кто-нибудь с немного большим опытом, пожалуйста, проверьте, правильно ли это?
1 ответ
Вы правы - если вы делаете POST
позвоните, и то, что вы публикуете, уже существует, вы получите сообщение об ошибке. Пока API не поддерживает PUT
Обновление или подписка - это двухэтапная операция. Проверьте, существует ли подписчик, и затем используйте соответствующий метод. Или вы можете просто попытаться PATCH
сначала и сделай POST
если это не с 404.