Spaces:
Paused
Paused
| """ | |
| Pydantic models β LINE Webhook Payload | |
| ΰΈΰΈ£ΰΈΰΈΰΈΰΈ₯ΰΈΈΰΈ‘ event types ΰΈΰΈ΅ΰΉΰΈΰΈ³ΰΉΰΈΰΉΰΈΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈ chat conversation | |
| """ | |
| from typing import Optional, Literal | |
| from pydantic import BaseModel | |
| # βββ Source βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class LineSource(BaseModel): | |
| type: Literal["user", "group", "room"] | |
| userId: Optional[str] = None | |
| groupId: Optional[str] = None | |
| roomId: Optional[str] = None | |
| # βββ Message ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class LineMessage(BaseModel): | |
| id: str | |
| type: Literal["text", "image", "sticker", "location", "audio", "video", "file"] | |
| text: Optional[str] = None # ΰΈ‘ΰΈ΅ΰΉΰΈΰΈΰΈ²ΰΈ° type=text | |
| # βββ Events βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class LineEvent(BaseModel): | |
| type: Literal["message", "follow", "unfollow", "join", "leave", "postback"] | |
| timestamp: int | |
| replyToken: Optional[str] = None | |
| source: LineSource | |
| message: Optional[LineMessage] = None | |
| # βββ Root Payload βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class LineWebhookPayload(BaseModel): | |
| destination: str # Channel ID ΰΈΰΈ₯ΰΈ²ΰΈ’ΰΈΰΈ²ΰΈ | |
| events: list[LineEvent] | |
| # βββ Sentiment Result βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class SentimentResult(BaseModel): | |
| label: Literal["positive", "neutral", "negative"] | |
| score: float # confidence ΰΈΰΈΰΈ label ΰΈ«ΰΈ₯ΰΈ±ΰΈ (0β1) | |
| raw_scores: dict[str, float] # {"positive": 0.8, "neutral": 0.1, "negative": 0.1} | |