首页 > 解决方案 > 如何使用 API v1 contact_sync/contact_add 将联系人添加到 ActiveCampaign

问题描述

我在向 ActiveCampaign 添加联系人时遇到问题。我在这里阅读了一篇文章:如何在 ActiveCampaign API v3 中将联系人添加到列表中,并且正在使用 API 的 v1。我尽我所能使用了他们的contact_sync文档。

我正在使用 Gatsby/React --> GitHub --> Netlify 进行开发,对 POST 请求使用 lamda 函数。

这是我的 axios POST:

{
  method: 'post',
  url: 'https://ACCOUNT.api-us1.com/admin/api.php?api_key=xxxxxxxxxxxx&api_action=contact_sync&api_output=json',
  headers: { 'Content-Type': 'Content-Type: application/x-www-form-urlencoded' },
  body: {
    email: 'email@email.com',
    first_name: 'John'
  }
}

并收到以下回复:

{
  result_code: 0,
  result_message: 'Could not add contact; missing email address',
  result_output: 'json'
}

我正在与他们的端点交谈。我只是不知道如何为端点提供电子邮件地址?

有没有人有一个他们愿意分享的工作示例?任何形式的指导将不胜感激!

标签: netlifyactivecampaign

解决方案


我想确保关闭它并分享我的答案。

非常感谢@reza jafari在这篇文章中的评论,他让我注意到Postman右边的代码窗口,您可以从下拉列表中选择语言/服务器,它提供格式正确的响应。

(我没有足够的声誉来支持@reza 的回复,所以想在这里承认它。)

我能够让我的帖子在 Postman 中工作,这个小技巧让我摆脱了困境。我将继续发布我的解决方案以关闭此帖子。

const axios = require("axios")
const qs = require("qs")

exports.handler = async function (event) {
  const { email, first_name } = JSON.parse(event.body)

  const data = qs.stringify({
    email: email,
    first_name: first_name,
    tags: '"api"',
    "p[1]": "1",
  })
  const config = {
    method: "post",
    url: "https://ACCOUNT.api-us1.com/admin/api.php?api_key=xxxxxxxxx&api_action=contact_sync&api_output=json",
    headers: {
      "Api-Token":
        "xxxxxxxxx",
      "Content-Type": "application/x-www-form-urlencoded",
    },
    data: data,
  }

  try {
    const response = await axios(config)
    return {
      statusCode: 200,
      body: JSON.stringify(response.data),
    }
  } catch (err) {
    return {
      statusCode: 500,
      body: JSON.stringify(err),
    }
  }
}


推荐阅读