繁体   English   中英

如何使用云功能向 Mailchimp 活动添加新用户?

[英]How to add a new user to Mailchimp campaign using cloud functions?

我正在尝试将新用户添加到 Mailchimp 活动中。 我得到两个错误第一个说:

Function returned undefined, expected Promise or value

第二个错误的日志是:

Error: The resource submitted could not be validated. For field-specific details, see the 'errors' array.
  type: 'http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/',
  title: 'Invalid Resource',
  status: 400,
  detail: 'The resource submitted could not be validated. For field-specific details, see the \'errors\' array.',
  instance: '549e8553-5ef1-4600-9271-07255f4673fe',
  errors: 
   [ { field: 'status',
       message: 'The value you selected is not a valid choice.' } ] }

这是我的功能

   exports.userCreated = functions.auth.user().onCreate((user) => {
    const email = user.email;
    // const displayName = user.name;

    // make Mailchimp API request to add a user
    Mailchimp
      .post('/lists/id/members', {
        email_address: email,
        status: 'Signed Up',
        // optional: requires additional setup
        merge_fields: {
          "EMAIL" : email
        }
      })
      .then(function(results) {
        console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
      })
      .catch(function(err) {
        console.log(email);
        console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
      });
  });

正如您所检测到的,您的云函数中有两个错误:

第一个是您必须在后台触发的 Cloud Function 中返回一个 Promise(或一个值),以向平台表明它已完成。 请观看Firebase 视频系列中关于“JavaScript Promises”的三个视频,以了解有关此关键点的更多详细信息。

第二个问题是您对字段status值“不是一个有效的选择”。 看看 Mailchimp doc ,如果我没有记错的话,正确的值是:

subscribedpendingunsubscribedcleaned


因此,以下更改应该可以解决问题:

   exports.userCreated = functions.auth.user().onCreate((user) => {
    const email = user.email;
    // const displayName = user.name;

    // make Mailchimp API request to add user
    return mailchimp
      .post('/lists/id/members', {
        email_address: email,
        status: 'subscribed',   // For example, it's up to you to find the correct status
        // optional: requires additional setup
        merge_fields: {
          "EMAIL" : email
        }
      })
      .then(function(results) {
        console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
        return null;
      })
      .catch(function(err) {
        console.log(email);
        console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
        return null;
      });
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM