Skip to content

Commit 51a985e

Browse files
committed
feat(whatsapp): extend WhatsAppWebhookPayload model with additional fields for comprehensive message handling, including media and location data
1 parent 2945a6e commit 51a985e

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

agentle/agents/whatsapp/models/whatsapp_webhook_payload.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,52 @@ class WhatsAppWebhookPayload(BaseModel):
3131
status: str | None = Field(default=None)
3232
status_code: int | None = Field(default=None)
3333

34+
# Twilio WhatsApp API
35+
MessageSid: str | None = Field(default=None)
36+
AccountSid: str | None = Field(default=None)
37+
MessagingServiceSid: str | None = Field(default=None)
38+
From: str | None = Field(default=None) # Format: whatsapp:+15551234567
39+
To: str | None = Field(default=None) # Format: whatsapp:+15559876543
40+
Body: str | None = Field(default=None)
41+
NumMedia: str | None = Field(default=None) # Number of media items (as string)
42+
MediaUrl0: str | None = Field(default=None)
43+
MediaContentType0: str | None = Field(default=None)
44+
MediaUrl1: str | None = Field(default=None)
45+
MediaContentType1: str | None = Field(default=None)
46+
MediaUrl2: str | None = Field(default=None)
47+
MediaContentType2: str | None = Field(default=None)
48+
MediaUrl3: str | None = Field(default=None)
49+
MediaContentType3: str | None = Field(default=None)
50+
MediaUrl4: str | None = Field(default=None)
51+
MediaContentType4: str | None = Field(default=None)
52+
MediaUrl5: str | None = Field(default=None)
53+
MediaContentType5: str | None = Field(default=None)
54+
MediaUrl6: str | None = Field(default=None)
55+
MediaContentType6: str | None = Field(default=None)
56+
MediaUrl7: str | None = Field(default=None)
57+
MediaContentType7: str | None = Field(default=None)
58+
MediaUrl8: str | None = Field(default=None)
59+
MediaContentType8: str | None = Field(default=None)
60+
MediaUrl9: str | None = Field(default=None)
61+
MediaContentType9: str | None = Field(default=None)
62+
SmsStatus: str | None = Field(
63+
default=None
64+
) # sent, delivered, read, failed, undelivered
65+
SmsSid: str | None = Field(default=None)
66+
SmsMessageSid: str | None = Field(default=None)
67+
NumSegments: str | None = Field(default=None)
68+
ReferralNumMedia: str | None = Field(default=None)
69+
ProfileName: str | None = Field(default=None)
70+
WaId: str | None = Field(default=None) # WhatsApp ID without prefix
71+
ButtonText: str | None = Field(default=None) # For interactive button messages
72+
ButtonPayload: str | None = Field(default=None) # For interactive button messages
73+
Latitude: str | None = Field(default=None) # For location messages
74+
Longitude: str | None = Field(default=None) # For location messages
75+
Address: str | None = Field(default=None) # For location messages
76+
Label: str | None = Field(default=None) # For location messages
77+
ForwardedFrom: str | None = Field(default=None) # For forwarded messages
78+
FrequentlyForwarded: str | None = Field(default=None) # "true" or "false" as string
79+
3480
def model_post_init(self, context: Any, /) -> None:
3581
if self.phone_number_id or not self.data:
3682
return

0 commit comments

Comments
 (0)