如何通过 Node JS 使用自己的库将联系人添加到 Mailchimp 中的列表/受众
Posted
技术标签:
【中文标题】如何通过 Node JS 使用自己的库将联系人添加到 Mailchimp 中的列表/受众【英文标题】:How can I add a contact to a list/audience in Mailchimp using its own library via Node JS 【发布时间】:2021-09-11 01:53:26 【问题描述】:下面的代码是使用 Node JS 和 Mailchimp 库以编程方式将联系人添加到列表/受众的 API 调用。文档位于:https://mailchimp.com/developer/marketing/guides/create-your-first-audience/#add-a-contact-to-an-audience
const listId = "YOUR_LIST_ID";
const subscribingUser =
firstName: "Prudence",
lastName: "McVankab",
email: "prudence.mcvankab@example.com"
;
async function run()
const response = await mailchimp.lists.addListMember(listId,
email_address: subscribingUser.email,
status: "subscribed",
merge_fields:
FNAME: subscribingUser.firstName,
LNAME: subscribingUser.lastName
);
console.log(
`Successfully added contact as an audience member. The contact's id is $
response.id
.`
);
run();
这是我在 app.js 中实现代码的方式
app.post("/", function(req, res)
const firstName = req.body.firstName;
const lastName = req.body.lastName;
const email = req.body.email;
const apiAudienceName = "Sample Tech Newsletter Subscription";
const listId = apiAudienceName;
const subscribingUser =
firstName: firstName,
lastName: lastName,
email: email
;
async function run()
const response = await mailchimp.lists.addListMember(listId,
email_address: subscribingUser.email,
status: "subscribed",
merge_fields:
FNAME: subscribingUser.firstName,
LNAME: subscribingUser.lastName
);
console.log(`Successfully added contact as an audience member. The contact's id is $response.id.`);
run();
);
对我来说,我确实按照 Mailchimp 服务器的要求添加到我创建的列表中,但是这段代码抛出了一个错误,提示 “未处理的承诺拒绝”。当然,我已经尝试过进行研究,但作为这门语言的初学者,我并不太了解实现这一目标需要什么。如果有人可以纠正我或向我展示我的代码中的错误,我将不胜感激。非常感谢!
注意:我可以通过使用 HTTP 请求模块来完成这项工作。但是这次,我想学习如何遵循文档并使用他们给定的代码和库。对我来说,似乎我做到了,但它似乎不起作用。
【问题讨论】:
将您的异步代码包装在try/catch
块中并管理可能的错误以处理该消息
@FLC 我试过这样做,它确实消除了错误。虽然我知道这并不能解决我无法在 Mailchimp API 中发帖的问题。请问try/catch
在“承诺”方面做了什么。它用于“仅”捕获错误吗?如果是这样,为什么它没有记录假设错误?我很难理解,因为这是大多数社区在处理这个问题时的建议。感谢所有帮助。
【参考方案1】:
通过我所在的课程社区的研究和帮助,我在我的代码中发现了问题。我希望这对正在处理/可能处理同样问题的人有所帮助。
const apiAudienceName = "Sample Tech Newsletter Subscription";
const listId = apiAudienceName;
正如您在上面的代码中看到的,我将我在 Mailchimp 网站中创建的 "list/audience name" 输入到 listID
变量中。问题是 Mailchimp API 需要 listID
而不是 Mailchimp API 中的列表名称。
解决此问题的答案是从您在 Mailchimp 网站上的帐户中获取 list/audience ID
并将其用作输入。 list/audience ID
是 Mailchimp 服务器提供的字母数字字符。
如果您想详细了解如何找到您的list/audience ID
,请查看此link。
这是解决此问题的示例代码:
app.post("/", function(req, res)
const firstName = req.body.firstName;
const lastName = req.body.lastName;
const email = req.body.email;
const listId = "1a2b3c4d5e777";
const subscribingUser =
firstName: firstName,
lastName: lastName,
email: email
;
async function run()
const response = await mailchimp.lists.addListMember(listId,
email_address: subscribingUser.email,
status: "subscribed",
merge_fields:
FNAME: subscribingUser.firstName,
LNAME: subscribingUser.lastName
);
console.log(`Successfully added contact as an audience member. The contact's id is $response.id.`);
run();
);
【讨论】:
【参考方案2】:你试过subsribi了吗?它有一个简单的 API,您可以使用 javascript 将订阅者添加到您的列表中,
例子:
常量数据 = 电子邮件:“sarah@mail.com”,//* 必填 用户名:“sarah”,//可选 listId:'[LIST_ID]',
const url = 'https://api.subscribi.io/v1/subscribers/add'
fetch(url,
method: 'POST',
headers:
'Content-Type': 'application/json',
'secret_key':'MY_SECRET_KEY' // Go the the settings and generate a key
,
body: JSON.stringify(data)
).then(response =>
console.log(response)
/*
"data":
"name": "sarah",
"email": "sarah@mail.com",
"createdAt": "2020-09-25T19:41:07.350Z",
"subscribed": true
,
"ok": true,
"status": "success"
*/
).catch(error=>
console.error(error)
)
【讨论】:
嗨。我还没有尝试过,但也许我会在某个时候尝试一下。无论哪种方式,我都不会将此标记为答案,因为它不是。在这种情况下,这更像是一种评论。不过,谢谢你!以上是关于如何通过 Node JS 使用自己的库将联系人添加到 Mailchimp 中的列表/受众的主要内容,如果未能解决你的问题,请参考以下文章
JS/w2ui:如何使用 w2ui JavaScript UI 库将子级添加到网格?
将 csv 转换为 JSON,并在文档顶部添加注释 (Node.js)