Project

General

Profile

Tareas #5500 » proceso webhook mandrillapp.txt

Jose Orlando, 05/17/2025 05:27 PM

 
import org.springframework.web.bind.annotation.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
import java.util.List;
import java.util.Map;

@RestController
public class MandrillWebhookController {

@PostMapping("/webhook-mandrill")
public String handleMandrillWebhook(@RequestParam("mandrill_events") String mandrillEventsJson) {
try {
ObjectMapper mapper = new ObjectMapper();
// El campo es un JSON Array en String, por eso se parsea así
List<Map<String, Object>> eventos = mapper.readValue(mandrillEventsJson, new TypeReference<List<Map<String, Object>>>(){});
for (Map<String, Object> evento : eventos) {
String tipoEvento = (String) evento.get("event");
Map<String, Object> msg = (Map<String, Object>) evento.get("msg");
String email = (String) msg.get("email");
switch (tipoEvento) {
case "open":
System.out.println("Correo abierto: " + email);
break;
case "click":
System.out.println("Clic en correo: " + email);
break;
case "hard_bounce":
System.out.println("Rebote permanente: " + email);
break;
case "spam":
System.out.println("Marcado como spam: " + email);
break;
// Agrega los casos que necesites
default:
System.out.println("Evento recibido: " + tipoEvento + " para " + email);
}
}
} catch (Exception e) {
e.printStackTrace();
}
// Mandrill espera un 200 OK
return "ok";
}
}
    (1-1/1)