feat: Telegram QR-Code Invite-Link + WhatsApp Empfang-Fix
Telegram:
- /start <contact_id> Deep-Link Handler: verknüpft Kontakt automatisch mit chat_id
- QR-Code Endpunkt GET /api/v1/contacts/{id}/telegram-qr (PNG)
- TUI: Taste T öffnet QR-Code im Browser (HTML mit eingebettetem PNG)
- config.py + .env.example: TELEGRAM_BOT_USERNAME=mcm_bot
- qrcode[pil] zu requirements.txt hinzugefügt
WhatsApp:
- receiveTimeout 5→3s, HTTP-Timeout 8s → verhindert Polling-Overlap
This commit is contained in:
@@ -109,11 +109,29 @@ async def handle_inbound(payload: dict[str, Any]) -> None:
|
||||
channel = payload["channel"]
|
||||
|
||||
if channel == "telegram":
|
||||
contact = contact_service.get_or_create_by_telegram(
|
||||
db,
|
||||
payload["sender_telegram_id"],
|
||||
name=payload.get("sender_name", "Unknown"),
|
||||
)
|
||||
link_contact_id = payload.get("link_contact_id")
|
||||
if link_contact_id:
|
||||
# Kontakt aus QR-Code: telegram_id verknüpfen
|
||||
existing = contact_service.get_by_id(db, link_contact_id)
|
||||
if existing:
|
||||
from schemas import ContactUpdate
|
||||
contact_service.update(
|
||||
db, existing,
|
||||
ContactUpdate(telegram_id=payload["sender_telegram_id"])
|
||||
)
|
||||
contact = existing
|
||||
else:
|
||||
contact = contact_service.get_or_create_by_telegram(
|
||||
db,
|
||||
payload["sender_telegram_id"],
|
||||
name=payload.get("sender_name", "Unknown"),
|
||||
)
|
||||
else:
|
||||
contact = contact_service.get_or_create_by_telegram(
|
||||
db,
|
||||
payload["sender_telegram_id"],
|
||||
name=payload.get("sender_name", "Unknown"),
|
||||
)
|
||||
channel_conv_id = payload["chat_id"]
|
||||
else:
|
||||
contact = contact_service.get_or_create_by_phone(
|
||||
|
||||
Reference in New Issue
Block a user