diff --git a/channels/whatsapp_channel.py b/channels/whatsapp_channel.py index aa582f6..999ed71 100644 --- a/channels/whatsapp_channel.py +++ b/channels/whatsapp_channel.py @@ -70,6 +70,7 @@ class WhatsAppChannel(BaseChannel): logger.info("WhatsApp disabled (no credentials configured)") return self._session = aiohttp.ClientSession() + await self._ensure_incoming_enabled() logger.info("WhatsApp channel started") async def stop(self) -> None: @@ -128,6 +129,24 @@ class WhatsAppChannel(BaseChannel): } await self._inbound_callback(payload) + + async def _ensure_incoming_enabled(self) -> None: + """Stellt sicher dass incomingWebhook in der Green-API-Instanz aktiviert ist.""" + url = f"{self._base_url}/setSettings/{self._token}" + try: + async with self._get_session().post( + url, + json={"incomingWebhook": "yes", "outgoingWebhook": "yes"}, + timeout=aiohttp.ClientTimeout(total=10), + ) as resp: + data = await resp.json() + if data.get("saveSettings"): + logger.info("WhatsApp: incomingWebhook aktiviert") + else: + logger.warning("WhatsApp: setSettings Antwort: %s", data) + except Exception as exc: + logger.warning("WhatsApp: incomingWebhook konnte nicht gesetzt werden: %s", exc) + def _get_session(self) -> aiohttp.ClientSession: if not self._session or self._session.closed: self._session = aiohttp.ClientSession()