From 7cf9c2a9b6ef57125fd775847158861d4a85a847 Mon Sep 17 00:00:00 2001 From: milovate Date: Wed, 18 Jun 2025 16:02:10 +0530 Subject: [PATCH] add platform_medium field to Conversation model --- .../0104_conversation_platform_medium.py | 24 +++++++++++++++++++ bots/models/convo_msg.py | 13 ++++++++++ daras_ai_v2/bots.py | 2 ++ daras_ai_v2/twilio_bot.py | 4 +++- 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 bots/migrations/0104_conversation_platform_medium.py diff --git a/bots/migrations/0104_conversation_platform_medium.py b/bots/migrations/0104_conversation_platform_medium.py new file mode 100644 index 000000000..fe0f5bf4d --- /dev/null +++ b/bots/migrations/0104_conversation_platform_medium.py @@ -0,0 +1,24 @@ +# Generated by Django 5.1.3 on 2025-06-19 13:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bots", "0103_alter_botintegration_public_visibility"), + ] + + operations = [ + migrations.AddField( + model_name="conversation", + name="platform_medium", + field=models.CharField( + blank=True, + choices=[("SMS", "SMS"), ("VOICE", "Voice")], + default="", + help_text="Platform medium (Voice / SMS etc.)", + max_length=32, + ), + ), + ] diff --git a/bots/models/convo_msg.py b/bots/models/convo_msg.py index fa8133980..dc816a6cc 100644 --- a/bots/models/convo_msg.py +++ b/bots/models/convo_msg.py @@ -32,6 +32,11 @@ class ConvoState(models.IntegerChoices): ASK_FOR_FEEDBACK_THUMBS_DOWN = 2, "Ask for feedback (👎)" +class PlatformMedium(models.TextChoices): + SMS = "SMS", "SMS" + VOICE = "VOICE", "Voice" + + class ConversationQuerySet(models.QuerySet): def distinct_by_user_id(self) -> QuerySet["Conversation"]: """Get unique conversations""" @@ -238,6 +243,14 @@ class Conversation(models.Model): help_text="Twilio call sid (only used if each call is a new conversation)", ) + platform_medium = models.CharField( + max_length=32, + choices=PlatformMedium.choices, + blank=True, + default="", + help_text="Platform medium (Voice / SMS etc.)", + ) + web_user_id = models.CharField( max_length=512, blank=True, diff --git a/daras_ai_v2/bots.py b/daras_ai_v2/bots.py index 1f6bfd6af..1d0ba1d34 100644 --- a/daras_ai_v2/bots.py +++ b/daras_ai_v2/bots.py @@ -589,6 +589,8 @@ def build_system_vars(convo: Conversation, user_msg_id: str) -> tuple[dict, dict variables["bot_twilio_phone_number"] = ( bi.twilio_phone_number and bi.twilio_phone_number.as_international ) + variables["platform_medium"] = convo.platform_medium + variables_schema = {var: {"role": "system"} for var in variables} return variables, variables_schema diff --git a/daras_ai_v2/twilio_bot.py b/daras_ai_v2/twilio_bot.py index 261d44c37..378c72ddd 100644 --- a/daras_ai_v2/twilio_bot.py +++ b/daras_ai_v2/twilio_bot.py @@ -9,7 +9,7 @@ from twilio.twiml import TwiML from twilio.twiml.voice_response import VoiceResponse -from bots.models import BotIntegration, Platform, Conversation +from bots.models import BotIntegration, Conversation, Platform, PlatformMedium from daras_ai_v2 import settings from daras_ai_v2.bots import BotInterface, ReplyButton from daras_ai_v2.fastapi_tricks import get_api_route_url @@ -29,6 +29,7 @@ def __init__(self, data: dict): bot_integration=bi, twilio_phone_number=data["From"][0], twilio_call_sid="", + platform_medium=PlatformMedium.SMS, )[0] self.bot_id = bi.twilio_phone_number.as_e164 @@ -175,6 +176,7 @@ def __init__( audio_url: str = None, ): self.convo = convo + self.convo.platform_medium = PlatformMedium.VOICE self.bot_id = convo.bot_integration.twilio_phone_number.as_e164 self.user_id = convo.twilio_phone_number.as_e164