@@ -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