邮件黑猩猩 API v3.0 批处理请求响应"total_operations":0



我很确定我做了什么愚蠢的事情,但我已经盯着这个几个小时了,我需要比我更聪明的人。下面是 aws-lambda 函数中的 js 代码,该函数向 mailchimp 批处理 API 发出 POST 请求。目标是为列表的多个成员创建一批 DELETE 操作。它首先向dynamoDb发出请求,以获取正确的列表ID和API密钥,然后就可以顺利进行。当它向 MailChimp 进行 API 调用时,API 响应 200,但total_operations为 0。当我对批处理发出 GET 请求以检查状态时,它告诉作已完成,总共 0 个操作,没有错误。我错过了什么?

import { success, failure } from "./libs/response-lib";
import * as dynamoDbLib from "./libs/dynamodb-lib";
import Mailchimp from "mailchimp-api-v3";
export async function main(event, context, callback) { 
const parsedUserId = event.requestContext.identity.cognitoIdentityId.split(":")[1];
const data = JSON.parse(event.body);
const params = {
TableName: "tr-users",
Key: { userId: parsedUserId },
ProjectionExpression: "mc_apiKey, listId"
};
try {
//get the user's contact list ID and API key
await dynamoDbLib.call("get", params)
.then((result) => {
//build operations array
var reqData = {};
reqData.operations = data.contacts.map(contact => {
var outputObject = {
method: "DELETE",
path: `lists/${result.Item.listId}/members/${contact}`
};
return outputObject;
});
//make batch post to mailchimp
var mailchimp =  new Mailchimp(result.Item.mc_apiKey);
mailchimp.request({
method: "post",
path: "/batches",
data: reqData
}).then((response) => {
callback(null, success(response));
});
})
} catch (e) {
console.log(e);
callback(null, failure({ status: false }));
}
}

下面是批处理的 GET 请求的响应:

{"id":"0c25e7f089","status":"finished","total_operations":0,"finished_operations":0,"errored_operations":0,"submitted_at":"2018-08-14T01:20:28+00:00","completed_at":"2018-08-14T01:20:34+00:00","response_body_url":"","_links":[{"rel":"parent","href":"https://us18.api.mailchimp.com/3.0/batches","method":"GET","targetSchema":"https://us18.api.mailchimp.com/schema/3.0/Definitions/Batches/CollectionResponse.json","schema":"https://us18.api.mailchimp.com/schema/3.0/CollectionLinks/Batches.json"},{"rel":"self","href":"https://us18.api.mailchimp.com/3.0/batches/0c25e7f089","method":"GET","targetSchema":"https://us18.api.mailchimp.com/schema/3.0/Definitions/Batches/Response.json"},{"rel":"delete","href":"https://us18.api.mailchimp.com/3.0/batches/0c25e7f089","method":"DELETE"}]}

任何见解都非常感谢!

万一像我这样愚蠢的人偶然发现了这一点。我没有阅读 api 包装器(mailchimp-api-v3(上的说明。批处理具有不同的功能。工作代码:

import { success, failure } from "./libs/response-lib";
import * as dynamoDbLib from "./libs/dynamodb-lib";
import Mailchimp from "mailchimp-api-v3";
export async function main(event, context, callback) { 
const parsedUserId = event.requestContext.identity.cognitoIdentityId.split(":")[1];
const data = JSON.parse(event.body);
const params = {
TableName: "tr-users",
Key: { userId: parsedUserId },
ProjectionExpression: "mc_apiKey, listId"
};
try {
//get the user's contact list ID and API key
await dynamoDbLib.call("get", params)
.then((result) => {
//build operations array
var reqData = {};
reqData["operations"] = data.contacts.map(contact => {
var outputObject = {
"method": "DELETE",
"path": `/lists/${result.Item.listId}/members/${contact}`
};
return outputObject;
});
console.log(JSON.stringify(reqData));
//make batch post to mailchimp
var mailchimp =  new Mailchimp(result.Item.mc_apiKey);
mailchimp.batch(reqData.operations, {wait: false})
.then((result) => {
callback(null, success(result));
})
})
} catch (e) {
console.log(e);
callback(null, failure({ status: false }));
}
}

最新更新