| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import logging
- import requests
- import json
- from odoo import fields, models
- _logger = logging.getLogger(__name__)
- class WhatsAppAccount(models.Model):
- _inherit = 'whatsapp.account'
- whatsapp_web_url = fields.Char(string="WhatsApp Web URL", readonly=False, copy=False)
- whatsapp_web_login = fields.Char(string="Login", readonly=False, copy=False)
- whatsapp_web_api_key = fields.Char(string="API Key", readonly=False, copy=False)
- def get_groups(self):
- """
- Obtiene los grupos de WhatsApp Web para la cuenta desde la base de datos de la plataforma.
- Returns:
- list: Lista de diccionarios con la información de los grupos en formato compatible con Odoo
- """
- self.ensure_one()
-
- if not self.whatsapp_web_url:
- _logger.warning("No se ha configurado la URL de WhatsApp Web para la cuenta %s", self.name)
- return []
- if not self.whatsapp_web_login:
- _logger.warning("No se ha configurado el Login (session_name) para la cuenta %s", self.name)
- return []
- if not self.whatsapp_web_api_key:
- _logger.warning("No se ha configurado la API Key para la cuenta %s", self.name)
- return []
- try:
- # Construir URL del nuevo endpoint
- base_url = self.whatsapp_web_url.rstrip('/')
- session_name = self.whatsapp_web_login
- url = f"{base_url}/api/v1/{session_name}/groups"
-
- headers = {
- "Content-Type": "application/json",
- "X-API-Key": self.whatsapp_web_api_key
- }
-
- response = requests.get(url, headers=headers, timeout=30)
-
- if response.status_code == 200:
- groups = response.json()
- _logger.info("Grupos obtenidos desde la base de datos: %d grupos", len(groups))
- return groups
- else:
- _logger.error("Error al obtener groups: %s - %s", response.status_code, response.text)
- return []
-
- except Exception as e:
- _logger.error("Error en la petición de groups: %s", str(e))
- return []
|