File size: 1,091 Bytes
e2b74e4
 
 
 
 
 
 
 
45737f3
5564ecb
e2b74e4
 
 
 
 
 
9484a7b
 
 
 
 
e2b74e4
 
9484a7b
e2b74e4
19d94a7
e2b74e4
 
19d94a7
 
e2b74e4
 
 
 
 
9484a7b
df0b6b9
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
37
38
39
40
41
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: Optional[MessageText] = None
    payload: Optional[Dict[str, Any]] = None 

    

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


class SessionInfo(BaseModel):
    parameters: Dict[str, Any]


class DialogflowResponse(BaseModel):
    fulfillment_response: FulfillmentResponse
    sessionInfo: Optional[SessionInfo] = None

def DialogFlowResponseAPI(text: List[str] = None, payload: Optional[Dict[str, Any]] = None, parameters: Optional[Dict[str, Any]] = None):

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

    response_data = DialogflowResponse(
        fulfillment_response=FulfillmentResponse(messages=messages),
        sessionInfo=SessionInfo(parameters=parameters or {})
    )

    return JSONResponse(content=response_data.model_dump())