fix
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package kz.konturai.parser.controller;
|
||||
|
||||
import kz.konturai.parser.service.FacebookPostingService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -19,56 +18,55 @@ public class FacebookWebhookController {
|
||||
@Value("${facebook.verify.token}")
|
||||
private String verifyToken;
|
||||
|
||||
@Value("${facebook.page.access.token}")
|
||||
private String pageAccessToken;
|
||||
|
||||
private final FacebookPostingService facebookService;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
public FacebookWebhookController(FacebookPostingService facebookService) {
|
||||
this.facebookService = facebookService;
|
||||
public FacebookWebhookController() {
|
||||
this.objectMapper = new ObjectMapper();
|
||||
}
|
||||
|
||||
// Подтверждение вебхука для Фейсбука
|
||||
@GetMapping
|
||||
public ResponseEntity<String> verifyWebhook(
|
||||
@RequestParam("hub.mode") String mode,
|
||||
@RequestParam("hub.verify_token") String token,
|
||||
@RequestParam("hub.challenge") String challenge) {
|
||||
|
||||
if ("subscribe".equals(mode) && verifyToken.equals(token)) {
|
||||
logger.info(">>> WEBHOOK VERIFIED SUCCESSFULLY!");
|
||||
return ResponseEntity.ok(challenge);
|
||||
} else {
|
||||
logger.error(">>> WEBHOOK VERIFICATION FAILED. Token mismatch.");
|
||||
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
|
||||
}
|
||||
}
|
||||
|
||||
// Сюда приходят сообщения
|
||||
@PostMapping
|
||||
public ResponseEntity<Void> receiveEvent(@RequestBody String payload) {
|
||||
try {
|
||||
JsonNode root = objectMapper.readTree(payload);
|
||||
|
||||
if (root.has("entry")) {
|
||||
for (JsonNode entry : root.get("entry")) {
|
||||
if (entry.has("messaging")) {
|
||||
for (JsonNode event : entry.get("messaging")) {
|
||||
// Если это сообщение от юзера
|
||||
if (event.has("message") && !event.get("message").has("is_echo")) {
|
||||
|
||||
// === ВОТ ЭТО САМОЕ ГЛАВНОЕ ===
|
||||
String senderId = event.get("sender").get("id").asText();
|
||||
String text = event.get("message").has("text") ? event.get("message").get("text").asText() : "";
|
||||
String text = event.get("message").has("text") ?
|
||||
event.get("message").get("text").asText() : "";
|
||||
|
||||
// Логируем ID, чтобы ты мог его скопировать
|
||||
logger.info(">>> ТЕСТЕР НАПИСАЛ СООБЩЕНИЕ! ID (PSID): {}", senderId);
|
||||
logger.info(">>> Текст: {}", text);
|
||||
|
||||
// Можно сразу отправить автоответ для проверки связи
|
||||
facebookService.sendPrivateMessage(pageAccessToken, senderId, "ID получен: " + senderId + ". Жди уведомления о посте!");
|
||||
// === ВОТ ЭТОТ ID ТЕБЕ НУЖЕН ===
|
||||
logger.info("============================================");
|
||||
logger.info(">>> ПОЙМАН ID ТЕСТЕРА: " + senderId);
|
||||
logger.info(">>> ТЕКСТ СООБЩЕНИЯ: " + text);
|
||||
logger.info(">>> СКОПИРУЙ ЭТОТ ID В PostingTaskService!");
|
||||
logger.info("============================================");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Всегда возвращаем 200 OK, чтобы Фейсбук не слал повторы
|
||||
return ResponseEntity.ok().build();
|
||||
} catch (Exception e) {
|
||||
logger.error("Error processing webhook", e);
|
||||
|
||||
@@ -14,7 +14,6 @@ java.awt.headless=true
|
||||
spring.application.name=parser
|
||||
|
||||
# MongoDB Configuration
|
||||
# Option 1: Individual properties
|
||||
spring.data.mongodb.host=92.38.48.166
|
||||
spring.data.mongodb.port=27017
|
||||
spring.data.mongodb.database=parser_db
|
||||
@@ -22,9 +21,6 @@ spring.data.mongodb.username=konturai
|
||||
spring.data.mongodb.password=konturai2024
|
||||
spring.data.mongodb.authentication-database=admin
|
||||
|
||||
# Option 2: Connection URI (uncomment if individual properties don't work)
|
||||
# spring.data.mongodb.uri=mongodb://parser_user:parser_password@92.38.48.166:27017/parser_db?authSource=admin
|
||||
|
||||
# RSS Feed URLs
|
||||
rss.feed.url=https://kursiv.media/feed/
|
||||
rss.kapital.url=https://kapital.kz/rss/
|
||||
@@ -51,7 +47,6 @@ logging.level.kz.konturai.parser.service.VedomostiParserService=INFO
|
||||
logging.level.org.springframework.scheduling=DEBUG
|
||||
logging.level.org.springframework.data.mongodb=INFO
|
||||
logging.level.com.mongodb=WARN
|
||||
|
||||
logging.level.kz.konturai.parser.service.OllamaAnalyticsService=INFO
|
||||
logging.level.kz.konturai.parser.controller.MarketingController=DEBUG
|
||||
logging.level.kz.konturai.parser.service.MarketingAnalysisService=DEBUG
|
||||
@@ -59,7 +54,6 @@ logging.level.kz.konturai.parser.config.MongoConfig=DEBUG
|
||||
logging.level.org.springframework.data.mongodb.core.convert=DEBUG
|
||||
|
||||
# OpenAI Configuration
|
||||
# openai.api.key=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
|
||||
openai.api.key=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
|
||||
openai.api.url=https://api.openai.com/v1/chat/completions
|
||||
openai.model.name=gpt-4o-mini
|
||||
@@ -91,15 +85,12 @@ openai.image.quality=hd
|
||||
openai.image.style=natural
|
||||
|
||||
# Image Generation Provider Selection
|
||||
# Options: 'openai' (default) or 'nano-banana'
|
||||
# Set to 'nano-banana' to use Google Gemini Nano Banana for image generation
|
||||
image.generation.provider=nano-banana
|
||||
image.generation.delayBetweenRequestsMs=3000
|
||||
|
||||
google.cloud.project-id=data-totality-483616-t5
|
||||
google.cloud.location=us-central1
|
||||
|
||||
google.gemini.image.model=imagen-3.0-generate-001
|
||||
|
||||
google.gemini.timeoutMs=120000
|
||||
google.gemini.retry.maxAttempts=3
|
||||
google.gemini.retry.initialDelayMs=10000
|
||||
@@ -107,11 +98,6 @@ google.gemini.retry.maxDelayMs=120000
|
||||
google.gemini.retry.multiplier=2.0
|
||||
google.gemini.rateLimit.delayMs=12000
|
||||
|
||||
# Delay between image generation requests (in milliseconds)
|
||||
# Helps prevent rate limiting when generating multiple images sequentially
|
||||
# Set to 0 to disable delay
|
||||
image.generation.delayBetweenRequestsMs=3000
|
||||
|
||||
# Email Configuration
|
||||
spring.mail.host=smtp.gmail.com
|
||||
spring.mail.port=587
|
||||
@@ -126,21 +112,25 @@ deep-research.api.url=http://185.35.223.45:3051
|
||||
deep-research.api.timeout=1800000
|
||||
|
||||
# JWT Configuration
|
||||
# Используйте тот же secret-base64, что и в сервисе, выдающем токены
|
||||
# Формат: base64-encoded secret key
|
||||
security.jwt.secret-base64=ZmFrZV9zZWNyZXRfMTIzNDU2Nzg5MGFiY2RlZmFrZV9zZWNyZXRfMTIzNDU2Nzg5MGFiY2Rl
|
||||
|
||||
# Encryption Configuration for Social Media Credentials
|
||||
# Base64-encoded AES-256 key (32 bytes = 256 bits)
|
||||
# Generate a key: openssl rand -base64 32
|
||||
# IMPORTANT: Change this in production!
|
||||
# Encryption Configuration
|
||||
encryption.secret-key=ZmFrZV9zZWNyZXRfMTIzNDU2Nzg5MGFiY2RlZmFrZV9zZWNyZXRfMTIzNDU2Nzg5MGFiY2Rl
|
||||
|
||||
# Posting Scheduler Configuration
|
||||
posting.scheduler.enabled=true
|
||||
|
||||
# Facebook API Configuration
|
||||
facebook.api.timeout=30000
|
||||
|
||||
# Telegram API Configuration
|
||||
telegram.api.timeout=30000
|
||||
|
||||
# ==========================================
|
||||
# FACEBOOK MESSENGER CONFIGURATION
|
||||
# ==========================================
|
||||
facebook.api.timeout=30000
|
||||
|
||||
# ??? ????? ?????, ??????? ?? ???? ?? ????? FACEBOOK (??? ?? ?????????)
|
||||
facebook.verify.token=my_test_secret_123
|
||||
|
||||
# ???? ?????? ??????? ????? ???????? (Page Access Token)
|
||||
# ?????? ??? ? Meta Developers -> Messenger -> Settings -> Access Tokens (Generate Token)
|
||||
facebook.page.access.token=EAAaocqgT3JoBQtNeU4uqBrywSRwGmFZBQDZBnd1ynWjX070wAa09QBKebjrd9vyjAZCiJuZAZCU8266VlJYTAfwue20QNvENgM3wpjWNmCrTO0gTMAkmPZBKZBXKvZA8eCA4aZCUhmU2jsBRluYqKUyqpYV3ZCK928OVqLqCNZCUhqU6nUU0xP0DOzk90x58tmxpS2y1i7hjQZDZD
|
||||
Reference in New Issue
Block a user