node.js - nodejs - mailchimp c# api
Use la API de Mailchimp (3)
Me gustaría utilizar la API Mailchimp Node.js en mi aplicación Parse Cloud Hosting para suscribir a un usuario a una lista de correo. Parse no admite NPM pero, dado que la API de Mailchimp no tiene dependencias, pensé que podría copiar el código en mi proyecto. Sin embargo, la API de Mailchimp utiliza el módulo "https" que Parse no admite.
¿Alguien sabe de una forma de evitar esto?
No he podido usar la API de Mailchimp directamente, pero la API REST es bastante fácil de usar.
En main.js , crea una función de nube. Ingrese su clave API y actualice la URL REST para que apunte al centro de datos correcto de Mailchimp ( http://apidocs.mailchimp.com/api/2.0/ )
var mailchimpApiKey = "<<REPLACE_WITH_YOUR_KEY>>";
Parse.Cloud.define("SubscribeUserToMailingList", function(request, response) {
if (!request.params ||
!request.params.email){
response.error("Must supply email address, firstname and lastname to Mailchimp signup");
return;
}
var mailchimpData = {
apikey : mailchimpApiKey,
id : request.params.listid,
email : {
email : request.params.email
},
merge_vars : request.params.mergevars
}
var url = "https://<<REPLACE_WITH_DATA_CENTRE>>.api.mailchimp.com/2.0/lists/subscribe.json";
Parse.Cloud.httpRequest({
method: ''POST'',
url: url,
body: JSON.stringify(mailchimpData),
success: function(httpResponse) {
console.log(httpResponse.text);
response.success("Successfully subscribed");
},
error: function(httpResponse) {
console.error(''Request failed with response code '' + httpResponse.status);
console.error(httpResponse.text);
response.error(''Mailchimp subscribe failed with response code '' + httpResponse.status);
}
});
});
Luego, en el código que llama a esta función ... (reemplace su ID de lista)
Parse.Cloud.run("SubscribeUserToMailingList", {
listid : "<<REPLACE_WITH_LIST_ID>>",
email : email,
mergevars : {
FNAME : firstName,
LNAME : lastName
}
})
.then(function(success){
console.log("Successfully subscribed");
// ...
},
function(error){
console.log("Unable to subscribe");
// ...
});
Instala mailchimp en tu proyecto
npm install mailchimp-api
Desde el controlador del cliente, llame al controlador del servidor con los datos requeridos
No olvides agregar$http
a la parte superior del controlador$http({ method : ''POST'', url : ''/mailchimp-users/subscribe'', data : {user:this.name}}). success(function(response) { console.log("hai this is basic test" + response); $scope.send = response.message; }).error(function(response) { $scope.error = response.message; });
En el controlador del servidor Agregue esto al principio de la página
var MailchimpUser = mongoose.model(''MailchimpUser''), _ = require(''lodash''), mcapi = require(''mailchimp-api''); var apiKey = ''4bf6fb8820c333da4179216c3c2ef8fb-us10''; // Change this to your Key var listID = ''ebbf193760''; var mc = new mcapi.Mailchimp(apiKey, {version: ''2.0''});
Agregar esta función
exports.subscribe = function(req, res) { var entry = req.body.user; var mcReq = { apikey: ''4bf6fb8820c333da4179216c3c2ef8fb-us10'', id: ''ebbf193760'', email: {email: entry + ''@gmail.com''}, merge_vars: { FNAME: ''subscriber-first-name'', LNAME: ''subscriber-last-name'' }, ''double_optin'': false, ''send_welcome'': true } // submit subscription request to mail chimp mc.lists.subscribe(mcReq, function(data) { console.log(data); }, function(error) { console.log(error); }); };
Agregue esta ruta a su archivo de ruta
app.route(''/mailchimp-users/subscribe'') .post(mailchimpUsers.subscribe);
Así es como lo hice funcionar usando MailChimp API v3.0 , el método a continuación admite agregar / actualizar un suscriptor, así como también agregarlo / eliminarlo de un grupo.
Requisito previo: debe obtener un método hash MD5 para convertir el correo electrónico del usuario en un hash.
- Aquí está el que utilicé: http://www.webtoolkit.info/javascript-md5.html#.Vuz-yjZOwXV
- Copie el código en el enlace y péguelo en un archivo recién creado, asígnele el nombre "md5js.js", por ejemplo.
- Actualice el código que ha copiado para comenzar con
exports.MD5 = function (string) {
- Puede probar la conversión que obtuvo del módulo copiar / pegar comparando el resultado con esta herramienta en línea: http://www.miraclesalad.com/webtools/md5.php
var jsmd5 = require(''cloud/md5js.js'');
// here replace that with your own data center (by looking at your API key).
var datacenter = "us13";
var MAILCHIMP_URL = "https://<any_string>:<apikey>@" + datacenter + ".api.mailchimp.com/3.0/";
var MAILCHIMP_LIST_NEWSLETTER_ID = <yourlistId>;
Parse.Cloud.define("SubscribeUserToMailingList", function(request, response) {
if (!request.params ||
!request.params.email){
response.error("Must supply email address, firstname and lastname to Mailchimp signup");
return;
}
var email = request.params.email;
var firstName = request.params.firstname;
var lastName = request.params.lastname;
// this converts the email string into an MD5 hash.
// this is Required if you want to use a "PUT" which allows add/update of an entry, compared to the POST that allows only adding a new subscriber.
var emailHash = jsmd5.MD5(email);
var mailchimpData = {
''email_address'': email,
''status'': "subscribed",
''merge_fields'': {
''FNAME'': firstName,
''LNAME'': lastName
},
''interests'': {
"<groupID>": true // optional, if you want to add the user to a "Group".
}
};
var url = MAILCHIMP_URL + "lists/" + MAILCHIMP_LIST_NEWSLETTER_ID + "/members/" + emailHash;
// using a "PUT" allows you to add/update an entry.
Parse.Cloud.httpRequest({
method: ''PUT'',
url: url,
body: JSON.stringify(mailchimpData),
success: function(httpResponse) {
console.log(httpResponse.text);
response.success("Successfully subscribed");
},
error: function(httpResponse) {
console.error(''Request failed with response code '' + httpResponse.status);
console.error(httpResponse.text);
response.error(''Mailchimp subscribe failed with response code '' + httpResponse.status);
}
});
});