Module 01: Chatbot Service (API)1.5 GraphQL API & Code Examples
Module 01 • API Gateway
1.5.6 Gửi Đánh Giá Phản Hồi (SubmitAiFeedback)
MUTATION
Yêu cầu Bearer Token
SubmitAiFeedback.gql
Variables
Response 200 OK
submitAiFeedback.ts
Cho phép người dùng đánh giá mức độ hài lòng (1 đến 5 sao) hoặc gửi kèm bình luận đóng góp ý kiến về câu trả lời mà AI đã phản hồi. Dữ liệu này giúp Pango AI cải tiến chất lượng tri thức và tinh chỉnh câu trả lời của mô hình.
💻 Chi Tiết Truy Vấn & Mã Nguồn Mẫu
GraphQL Mutation & Payload:
GraphQL Mutation
mutation SubmitAiFeedback($request: SubmitAiFeedbackRequestDtoInput!) {
submitAiFeedback(request: $request) {
feedbackId
chatSessionId
messageId
actionStatus
}
}Variables (JSON)
{
"request": {
"chatSessionId": "6a7d45b5aa2c04f1151bee2b",
"messageId": "6a8913448201e708713c6e48",
"rating": 5,
"comment": "Câu trả lời rất chính xác và đầy đủ chi tiết!",
"type": "RATING",
"agentCode": "buddy"
}
}Phản Hồi Thành Công (JSON Response)
{
"data": {
"submitAiFeedback": {
"feedbackId": "fb-9923812831",
"chatSessionId": "6a7d45b5aa2c04f1151bee2b",
"messageId": "6a8913448201e708713c6e48",
"actionStatus": "SUCCESS"
}
}
}TypeScript / Axios:
import axios from 'axios';
export interface SubmitFeedbackParams {
sessionId: string;
messageId: string;
rating: number; // 1 đến 5 sao
comment?: string;
agentCode?: string;
}
/**
* Gửi đánh giá sao hoặc bình luận góp ý cho tin nhắn AI
*/
export async function submitAiFeedback(
apiUrl: string = process.env.VITE_API_URL!,
token: string,
{ sessionId, messageId, rating, comment, agentCode = 'buddy' }: SubmitFeedbackParams
) {
const query = `
mutation SubmitAiFeedback($request: SubmitAiFeedbackRequestDtoInput!) {
submitAiFeedback(request: $request) {
feedbackId
chatSessionId
messageId
actionStatus
}
}
`;
const response = await axios.post(
apiUrl,
{
query,
variables: {
request: {
chatSessionId: sessionId,
messageId,
rating,
comment: comment?.trim() || null,
type: 'RATING',
agentCode,
},
},
operationName: 'SubmitAiFeedback',
},
{
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`,
'orgId': process.env.VITE_ORG_ID,
'x-org-id': process.env.VITE_ORG_ID,
'x-client-type': 'app',
'x-external-private-key': process.env.VITE_EXTERNAL_PRIVATE_KEY,
},
}
);
return response.data?.data?.submitAiFeedback;
}