解释 MailChimp API 错误消息:找不到资源 'Campaign_Collection'

Explain a MailChimp API error message: The resource 'Campaign_Collection' could not be found

我正在将我们升级到新的 MailChimp v3 API。

FWIW,我们正在使用 DrewM's PHP library

当我尝试 create a new campaign 时,我从 MailChimp 收到这条神秘的错误消息:

Array (
  [type] => http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/
  [title] => Resource Not Found
  [status] => 404
  [detail] => The resource 'Campaign_Collection' could not be found.
  [instance] =>
)

URL (http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary) 仅部分有用;是的,缺少资源。但是什么是Campaign_Collection?它是 Mailchimp 列表吗? Mailchimp 文件夹?我需要使用某种数组构造来指定某种形式的数据吗?

问题已解决。

如果报错,404字段是关键线索,detail字段是转移注意力

如果您拼错端点,就会出现这种错误。例如:

$mailer = new MailChimp('****YOUR API KEY****');
$response = $mailer->get('/xyzzy');

// Produces this:
$response = [
     "type" => "http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
     "title" => "Resource Not Found",
     "status" => 404,
     "detail" => "The resource 'Xyzzy_Collection' could not be found.",
     "instance" => "",
   ]
>>>

我,我在 Campaigns 端点上留下了 's'。

$data = [
        'email_address' => (isset($email) ? $email : ''),
        'status' => 'subscribed',
        'status_if_new' => 'subscribed',
        'merge_fields' => [
            'FNAME' => (isset($firstname) ? $firstname : ''),
            'LNAME' => (isset($lastname) ? $lastname : ''),
            'PHONE' => (isset($phone) ? $phone : ''),
        ],
    ];
    $server = explode('-', $token);
    $url = 'https://'.$server[1].'.api.mailchimp.com/3.0/lists/'.$list.'/members/';

$response = wp_remote_post( $url, [
    'method' => 'POST',
    'data_format' => 'body',
    'timeout' => 45,
    'headers' => [

                    'Authorization' => 'apikey '.$token,
                    'Content-Type' => 'application/json; charset=utf-8'
            ],
    'body' => json_encode($data )
    ]
);
if ( is_wp_error( $response ) ) {
   $error_message = $response->get_error_message();
    $return['error'] = "Something went wrong: $error_message";
} else {
    $return['success'] = $response;
}

必须包含 merge_fields 归档到正文数据中...

也许它太晚了,但我认为它可能对其他人有所帮助。 通常 Mailchimp returns “找不到请求的资源。” 没有告诉它是否是由于您的列表 ID 或方法等..

确保您使用的列表 ID 正确。它 不是 您在 URL 上看到的那个。从顶部菜单,您需要转到 Audience 和 select “All Contacts

那么你需要去:

Audience -> Settings -> Audience Name and defaults

然后在右栏你会看到“Audience ID”和一些奇怪的、毫无意义的解释:

"某些插件和集成可能会请求您的受众 ID。通常,这就是他们想要的:abcd1234xxx。"

这就是您需要的“listID”!

PS:如果它被称为“AudienceID”,那么它应该在 API Ref 上更新。我认为文档为 audienceID,而不是 listID