51 lines
1.8 KiB
Python
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]}…"
|
|
|