如何通过 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 中的列表/受众的主要内容,如果未能解决你的问题,请参考以下文章

为啥以及如何将秘密放入 Node.js 的环境变量中?

JS/w2ui:如何使用 w2ui JavaScript UI 库将子级添加到网格?

将 csv 转换为 JSON,并在文档顶部添加注释 (Node.js)

编程联系笔记

如何在没有机器人的情况下在 node.js 中接收我自己的电报消息

如何从 Node.js 中执行外部程序?