package com.rit.whatsapp.service; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; @Service public class WhatsAppMessageService { @Value("${whatsapp.api-token}") private String apiToken; @Value("${whatsapp.phone-number-id}") private String phoneNumberId; private final RestTemplate restTemplate; public WhatsAppMessageService() { this.restTemplate = new RestTemplate(); } public void sendMessage(String toPhoneNumber, String messageText) { Map payload = new HashMap<>(); payload.put("messaging_product", "whatsapp"); payload.put("to", toPhoneNumber); payload.put("type", "text"); Map textPayload = new HashMap<>(); textPayload.put("body", messageText); payload.put("text", textPayload); executePost(payload); } public void sendInteractiveMessage(String toPhoneNumber, Map interactiveObject) { Map payload = new HashMap<>(); payload.put("messaging_product", "whatsapp"); payload.put("to", toPhoneNumber); payload.put("type", "interactive"); payload.put("interactive", interactiveObject); executePost(payload); } private void executePost(Map payload) { String url = "https://graph.facebook.com/v19.0/" + phoneNumberId + "/messages"; HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.setBearerAuth(apiToken); HttpEntity> request = new HttpEntity<>(payload, headers); try { ResponseEntity response = restTemplate.postForEntity(url, request, String.class); System.out.println("Message sent successfully. Response: " + response.getBody()); } catch (Exception e) { System.err.println("Failed to send message: " + e.getMessage()); } } }