37733-vm/core/whatsapp.py
Flatlogic Bot 1654496646 dem13
2026-01-23 12:04:14 +00:00

62 lines
1.9 KiB
Python

import requests
import logging
from django.conf import settings
from .models import WhatsAppConfig
logger = logging.getLogger(__name__)
def send_whatsapp_message(phone, message):
"""
Sends a WhatsApp message using the Wablas API.
"""
try:
config = WhatsAppConfig.objects.filter(is_active=True).first()
except Exception as e:
logger.error(f"Error fetching WhatsApp configuration: {e}")
config = None
if not config or not config.api_token:
# Fallback to settings for backward compatibility or if DB entry is missing
token = getattr(settings, 'WABLAS_API_TOKEN', None)
secret_key = getattr(settings, 'WABLAS_SECRET_KEY', None)
else:
token = config.api_token
secret_key = config.secret_key
if not token:
logger.warning("Wablas API credentials not configured.")
return False
url = "https://deu.wablas.com/api/send-message"
# Headers logic based on whether secret key exists
auth_header = token
if secret_key:
auth_header = f"{token}.{secret_key}"
headers = {
"Authorization": auth_header,
"Content-Type": "application/x-www-form-urlencoded"
}
# Normalize phone number
phone = str(phone).replace('+', '').replace(' ', '')
data = {
"phone": phone,
"message": message,
}
try:
response = requests.post(url, headers=headers, data=data, timeout=10)
response_json = response.json()
if response.status_code == 200 and response_json.get('status') == True:
logger.info(f"WhatsApp message sent to {phone}")
return True
else:
logger.error(f"Failed to send WhatsApp message to {phone}: {response.text}")
return False
except Exception as e:
logger.exception(f"Exception while sending WhatsApp message: {str(e)}")
return False