Как обновить идентификатор списка контактов mailchimp? - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь обновить интерес пользователей MailChimp, когда они подписываются на мое приложение. Проблема в том, что когда пользователь регистрируется, он добавляется в другую группу / интерес, и когда я пытаюсь изменить идентификатор этой группы, в Google Cloud Function появляется следующая ошибка:

Error: The requested method and resource are not compatible. See the Allow header for this resource's available methods.
    at Request._callback (/srv/node_modules/mailchimp-api-v3/index.js:515:30)
    at Request.self.callback (/srv/node_modules/request/request.js:185:22)
    at emitTwo (events.js:126:13)
    at Request.emit (events.js:214:7)
    at Request.<anonymous> (/srv/node_modules/request/request.js:1161:10)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at IncomingMessage.<anonymous> (/srv/node_modules/request/request.js:1083:12)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:111:20)
    at IncomingMessage.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickDomainCallback (internal/process/next_tick.js:219:9)

Я пытался выполнить запрос post, после чего он сообщает, что пользователь уже является членом списка.

Функция добавления пользователя в interests:

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

    // make Mailchimp POST API request to add user to the audience
    try {
        const results = await mailchimp
            .post('/lists/fb5c181de4/members', {
                email_address: email,
                status: 'subscribed',
                // optional: requires additional setup
                merge_fields: {
                    "EMAIL": email, // Send data in to merge_fields EMAIL URL  Mailchimp
                },
                "interests": {
                    "49f3316189" : true,
                }
            });
        console.log('Successfully added new Firebase user', email, 'to Mailchimp list', results);
        return null;
    }
    catch (err) {
        console.log(email);
        console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
        return null;
    }
  });

Функция обновления пользователя interests:

try {
                const results = mailchimp
                    .put('/lists/fb5c181de4/members', {
                        email_address: email,
                        status: 'unsubscribed',
                        // optional: requires additional setup
                        merge_fields: {
                            "EMAIL": email, // Send data in to merge_fields EMAIL URL  Mailchimp
                        },
                        "interests": {
                            "91fcc0245e" : true,
                            "49f3316189" : false
                        }
                    });
                console.log('Successfully added new Firebase user subscribed', email, 'to Mailchimp list', results);
            }
            catch (err) {
                console.log(email);
                console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
                return null;
            }
        return { success: true };
      },
      err => {
        console.log("the error", err);
        return { error: err, message: "there was an error", success: false };
      }
    )

...