Skip to content

models

django_spire.ai.sms.models

SmsConversation

Bases: HistoryModelMixin

user = models.ForeignKey(User, blank=True, null=True, on_delete=(models.SET_NULL), related_name='sms_conversations', related_query_name='sms_conversation') class-attribute instance-attribute

phone_number = models.CharField(max_length=20) class-attribute instance-attribute

last_message_datetime = models.DateTimeField(default=now, editable=False) class-attribute instance-attribute

objects = SmsConversationQuerySet.as_manager() class-attribute instance-attribute

is_empty property

Meta

db_table = 'django_spire_ai_sms_conversation' class-attribute instance-attribute
verbose_name = 'SMS Conversation' class-attribute instance-attribute
verbose_name_plural = 'SMS Conversations' class-attribute instance-attribute
ordering = ('-last_message_datetime',) class-attribute instance-attribute

__str__

Source code in django_spire/ai/sms/models.py
def __str__(self):
    return f"SMS Conversation with {self.phone_number}"

add_message

Source code in django_spire/ai/sms/models.py
def add_message(
        self,
        body: str,
        is_inbound: bool,
        twilio_sid: str,
        is_processed: bool = False,
):
    message = self.messages.create(
        body=body,
        is_inbound=is_inbound,
        twilio_sid=twilio_sid,
        is_processed=is_processed,
    )

    self.last_message_datetime = now()
    self.save()

    return message

generate_message_history

Source code in django_spire/ai/sms/models.py
def generate_message_history(
        self,
        message_count: int = 20,
        exclude_last_message: bool = True
) -> MessageHistory:
    message_history = MessageHistory()

    messages = self.messages.newest_by_count(message_count)

    if exclude_last_message:
        messages = messages[1:]

    messages = list(reversed(messages))

    for message in messages:
        message_history.add_message(
            role=message.role,
            content=message.body
        )

    return message_history

SmsMessage

Bases: HistoryModelMixin

conversation = models.ForeignKey(SmsConversation, on_delete=(models.CASCADE), related_name='messages', related_query_name='message') class-attribute instance-attribute

body = models.TextField() class-attribute instance-attribute

is_inbound = models.BooleanField(default=False) class-attribute instance-attribute

twilio_sid = models.CharField(max_length=64, blank=True, null=True) class-attribute instance-attribute

is_processed = models.BooleanField(default=False) class-attribute instance-attribute

objects = SmsMessageQuerySet.as_manager() class-attribute instance-attribute

direction property

is_outbound property

role property

Meta

db_table = 'django_spire_ai_sms_message' class-attribute instance-attribute
verbose_name = 'SMS Message' class-attribute instance-attribute
verbose_name_plural = 'SMS Messages' class-attribute instance-attribute
ordering = ('-created_datetime',) class-attribute instance-attribute

__str__

Source code in django_spire/ai/sms/models.py
def __str__(self):
    if len(self.body) < 64:
        return f"{self.direction}: {self.body}"

    return f"{self.direction}: {self.body[:64]}..."