Ekaropolus f2180483f0
All checks were successful
continuous-integration/drone/push Build is passing
Adding DB to Whatsaap AI
2025-05-19 23:04:20 -06:00

51 lines
1.8 KiB
Python

from django.db import models
from pxy_openai.models import OpenAIAssistant # Import the OpenAIAssistant model
class WhatsAppBot(models.Model):
name = models.CharField(max_length=255, unique=True, help_text="Name of the WhatsApp bot.")
phone_number_id = models.CharField(max_length=255, help_text="Phone number ID for the bot.")
graph_api_token = models.TextField(help_text="Graph API token for the bot.")
webhook_verify_token = models.CharField(max_length=255, help_text="Token for verifying the webhook.")
is_active = models.BooleanField(default=False, help_text="Is this bot currently active?")
assistant = models.ForeignKey(
OpenAIAssistant,
on_delete=models.CASCADE,
related_name="whatsapp_bots",
help_text="The OpenAI assistant associated with this WhatsApp bot.",
)
def __str__(self):
return self.name
class Conversation(models.Model):
bot = models.ForeignKey(
'WhatsAppBot',
on_delete=models.CASCADE,
related_name='conversations'
)
user_number = models.CharField(max_length=32)
started_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.user_number} @ {self.started_at:%Y-%m-%d %H:%M}"
class Message(models.Model):
DIRECTION_CHOICES = [
('in', 'In'),
('out', 'Out'),
]
conversation = models.ForeignKey(
Conversation,
on_delete=models.CASCADE,
related_name='messages'
)
direction = models.CharField(max_length=4, choices=DIRECTION_CHOICES)
content = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
response_time_ms = models.IntegerField(null=True, blank=True)
def __str__(self):
return f"[{self.direction}] {self.content[:30]}"