File size: 975 Bytes
e2b74e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from typing import List, Dict, Any, Optional

class MessageText(BaseModel):
    text: List[str]

class Message(BaseModel):
    text: MessageText = None
    payload: Optional[Dict[str, Any]] = None  # Thêm trường payload tùy chọn

    

class FulfillmentResponse(BaseModel):
    messages: List[Message]

class DialogflowResponse(BaseModel):
    fulfillment_response: FulfillmentResponse

def DialogFlowResponseAPI(text: List[str], payload: Optional[Dict[str, Any]] = None):
    """
    Hàm tạo JSON response cho Dialogflow CX, hỗ trợ payload tùy chỉnh.
    """

    messages = []
    messages.append(Message(text=MessageText(text=text)))
    
    if payload:
        messages.append(Message(payload=payload))

    response_data = DialogflowResponse(
        fulfillment_response=FulfillmentResponse(messages=messages)
    )

    return JSONResponse(content=response_data.model_dump())