Pango AIPango AI Team
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

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

SubmitAiFeedback.gql
mutation SubmitAiFeedback($request: SubmitAiFeedbackRequestDtoInput!) {
  submitAiFeedback(request: $request) {
    feedbackId
    chatSessionId
    messageId
    actionStatus
  }
}

Variables (JSON)

Variables
{
  "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)

Response 200 OK
{
  "data": {
    "submitAiFeedback": {
      "feedbackId": "fb-9923812831",
      "chatSessionId": "6a7d45b5aa2c04f1151bee2b",
      "messageId": "6a8913448201e708713c6e48",
      "actionStatus": "SUCCESS"
    }
  }
}

TypeScript / Axios:

submitAiFeedback.ts
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;
}