Pango AIPango AI Team
Module 01: Chatbot Service (API)1.5 GraphQL API & Code Examples
Module 01 • API Gateway

1.5.1 Kiểm Tra Cấu Hình Agent (AgentConfigDetail)

QUERY Công Khai (Không cần Auth)

API này được sử dụng làm bước Pre-flight check ngay khi ứng dụng khởi động hoặc khi người dùng chuẩn bị vào màn hình có tích hợp Chatbot. Dựa vào giá trị isEnabled, ứng dụng sẽ quyết định hiển thị hoặc ẩn nút Chat.


🎯 Luồng Nghiệp Vụ

  • Nếu isEnabled == false: Ứng dụng ẩn nút chat bot hoặc hiển thị câu thông báo bảo trì được cấu hình trong disabledAnswer. Không tiếp tục gọi API đăng nhập ExternalLogin.
  • Nếu isEnabled == true: Ứng dụng hiển thị nút chat và tiếp tục các bước tương tác tiếp theo.

💻 Chi Tiết Truy Vấn & Mã Nguồn Mẫu

GraphQL Query & Payload:

GraphQL Query

AgentConfigDetail.gql
query AgentConfigDetail($code: String!) {
  agentConfigDetail(code: $code) {
    code
    name
    disabledAnswer
    isEnabled
  }
}

Variables (JSON)

Variables
{
  "code": "buddy"
}

Phản Hồi Thành Công (JSON Response)

Response 200 OK
{
  "data": {
    "agentConfigDetail": {
      "code": "buddy",
      "name": "V-Buddy Assistant",
      "disabledAnswer": "Hệ thống AI hiện đang bảo trì, quý khách vui lòng quay lại sau.",
      "isEnabled": true
    }
  }
}

TypeScript / Axios:

fetchAgentConfigDetail.ts
import axios from 'axios';

export interface AgentConfig {
  code: string;
  name: string;
  disabledAnswer?: string;
  isEnabled: boolean;
}

/**
 * Kiểm tra trạng thái hoạt động của Agent bot
 * @param apiUrl Endpoint GraphQL Gateway
 * @param agentCode Mã định danh agent (mặc định "buddy")
 */
export async function fetchAgentConfigDetail(
  apiUrl: string = process.env.VITE_API_URL!,
  agentCode: string = 'buddy'
): Promise<AgentConfig | null> {
  const query = `
    query AgentConfigDetail($code: String!) {
      agentConfigDetail(code: $code) {
        code
        name
        disabledAnswer
        isEnabled
      }
    }
  `;

  try {
    const response = await axios.post(
      apiUrl,
      {
        query,
        variables: { code: agentCode },
        operationName: 'AgentConfigDetail',
      },
      {
        headers: {
          'Content-Type': 'application/json',
          '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?.agentConfigDetail || null;
  } catch (error) {
    console.error('[PangoAI] Lỗi khi lấy cấu hình Agent:', error);
    return null;
  }
}

📑 Bảng Tham Số (Schema Definition)

Tham Số Đầu Vào (Variables)

TrườngKiểu Dữ LiệuBắt BuộcMô Tả
codeString!Mã định danh Agent do Pango cấp (ví dụ: "buddy")

Dữ Liệu Trả Về (Response Fields)

TrườngKiểu Dữ LiệuMô Tả
codeStringMã định danh Agent
nameStringTên hiển thị của trợ lý ảo (ví dụ: "V-Buddy Assistant")
disabledAnswerString?Lời nhắn thông báo hiển thị cho người dùng khi bot tắt/bảo trì
isEnabledBooleanCờ trạng thái: true nếu bot đang hoạt động, false nếu đang tắt/bảo trì