feat(webhook): persist incoming provider messages

This commit is contained in:
2026-06-04 23:54:07 +08:00
parent b3865f9084
commit 5eb726b124
14 changed files with 535 additions and 84 deletions
+8 -3
View File
@@ -36,6 +36,7 @@ type TelegramWebhookHandler struct {
provider *channelprovider.TelegramProvider
telWebhook *telegramchannel.WebhookHandler
db *gorm.DB
persister *IncomingPersister
}
// NewTelegramWebhookHandler creates a Telegram webhook handler for Gin integration.
@@ -48,6 +49,7 @@ func NewTelegramWebhookHandler(
provider: provider,
telWebhook: telWebhook,
db: db,
persister: NewIncomingPersister(db),
}
}
@@ -115,9 +117,12 @@ func (h *TelegramWebhookHandler) HandleTelegramWebhook(c *gin.Context) {
if err != nil {
applogger.L().Errorf("Telegram webhook: message processing failed (update_id=%d): %v", update.UpdateID, err)
} else if incomingMsg != nil {
applogger.L().Infof("Telegram webhook: message processed (inbox_id=%d, source_id=%s)",
incomingMsg.InboxID, incomingMsg.SourceID)
// TODO: Push to message broker/dispatcher for persistence + notification
if _, persistErr := h.persister.PersistIncoming(c.Request.Context(), inbox, incomingMsg); persistErr != nil {
applogger.L().Errorf("Telegram webhook: persist message failed (update_id=%d source_id=%s): %v", update.UpdateID, incomingMsg.SourceID, persistErr)
} else {
applogger.L().Infof("Telegram webhook: message persisted (inbox_id=%d, source_id=%s)",
incomingMsg.InboxID, incomingMsg.SourceID)
}
}
// Always return 200 OK to Telegram — it retries if not 200