02-347-7730  |  Saeree ERP - ระบบ ERP ครบวงจรสำหรับธุรกิจไทย ติดต่อเรา

เชื่อม OpenClaw กับ ERP

เชื่อม OpenClaw กับ ERP สร้าง AI Assistant สำหรับองค์กร ERP API Integration
  • 3
  • เมษายน

OpenClaw Deep Dive Series EP.6 (ตอนจบ) — จาก EP.5 ที่เรา Deploy OpenClaw สู่ Production กันไปแล้ว ตอนนี้ถึงเวลาเชื่อม OpenClaw เข้ากับระบบ ERP จริง — สร้าง AI Assistant ที่รู้จักข้อมูลองค์กร ตอบคำถามงบประมาณ อนุมัติเอกสาร และสรุปรายงานได้ทันที ไม่ต้อง login เข้า ERP อีกต่อไป!

สรุปสั้น — สิ่งที่จะได้เรียนรู้ในบทความนี้:

  • ERP API Integration — เชื่อม AI กับ ERP ผ่าน REST API อย่างปลอดภัย
  • สร้าง ERP Skills 5 ตัว — Budget Query, Document Approval, Report Summary, Inventory Alert, Employee Info
  • Data Security & Access Control — Role-based access + sensitive data masking
  • Real Use Cases 5 สถานการณ์ — ตัวอย่างการใช้งานจริงในองค์กร
  • ROI ของ AI + ERP — ลดเวลา 90%, ลดข้อผิดพลาด 75%, ประหยัดค่าแรง 40%

ทำไมต้องเชื่อม AI กับ ERP?

ปัจจุบันผู้บริหารและพนักงานต้อง login เข้าระบบ ERP → navigate ไปหาเมนูที่ต้องการ → export รายงาน → อ่านวิเคราะห์เอง → ตัดสินใจ ขั้นตอนเหล่านี้กินเวลา 5-10 นาทีต่อครั้ง ต้องรู้ว่าข้อมูลอยู่เมนูไหน และทำซ้ำทุกวัน — ด้วย AI Assistant แค่ถามว่า "สรุปงบเดือนนี้" AI ก็ดึงข้อมูลจาก ERP มาสรุปให้ทันทีภายใน 10 วินาที ภาษาคนเข้าใจง่าย

เปรียบเทียบ แบบเดิม (Manual) แบบใหม่ (AI Assistant)
เวลาที่ใช้ 5-10 นาทีต่อครั้ง (login → navigate → export → อ่าน) 10 วินาที (ถามภาษาคน → ได้คำตอบทันที)
ความรู้ที่ต้องมี ต้องรู้ว่าข้อมูลอยู่เมนูไหน ต้องอบรมก่อนใช้ ถามภาษาไทยได้เลย ไม่ต้องรู้โครงสร้างระบบ
ช่องทาง ต้องเปิดหน้าจอ ERP เท่านั้น ถามผ่าน LINE, WhatsApp, หรือ Web Chat ได้
การวิเคราะห์ ต้องดูตัวเลขเองแล้วสรุป AI สรุปให้พร้อมเปรียบเทียบกับเดือนก่อน

Architecture — OpenClaw + ERP

การเชื่อม OpenClaw กับ ERP มีสถาปัตยกรรมหลัก 3 ชั้น — User สื่อสารผ่าน Chat (LINE/WhatsApp/Web) → OpenClaw Agent รับคำสั่งและเลือก Skill ที่เหมาะสม → เรียก ERP API Layer ดึงข้อมูลจาก ERP Database:

# Architecture: OpenClaw + ERP Integration

User (LINE / WhatsApp / Web Chat)
  |
  v
[OpenClaw Agent] -- เลือก Skill ตามคำถาม -->
  |
  |--> [Budget Query Skill]       --> GET  /api/budget/{dept}
  |--> [Document Approval Skill]  --> POST /api/approval
  |--> [Report Summary Skill]     --> GET  /api/reports/sales
  |--> [Inventory Alert Skill]    --> GET  /api/inventory/low-stock
  |--> [Employee Info Skill]      --> GET  /api/hr/new-employees
  |
  v
[ERP API Layer] -- REST API with Authentication -->
  |
  v
[ERP Database]
วิธีเชื่อมต่อ หลักการ ข้อดี ข้อเสีย
REST API (แนะนำ) เรียกผ่าน HTTP endpoint มี authentication ปลอดภัยที่สุด แยก layer ชัดเจน ควบคุมสิทธิ์ได้ ต้องพัฒนา API layer เพิ่ม
Database Direct เชื่อมต่อ database โดยตรง (SQL query) เร็ว ไม่ต้องพัฒนา API เสี่ยงด้านความปลอดภัย AI อาจ query ผิด
Webhook (Event-driven) ERP ส่ง event เมื่อมีการเปลี่ยนแปลง AI รับและประมวลผล Real-time ไม่ต้อง poll ซับซ้อน ต้องจัดการ event queue

แนะนำ REST API เป็นวิธีที่ปลอดภัยที่สุด เพราะแยก layer ระหว่าง AI กับ ERP ชัดเจน มี authentication ทุก request ควบคุมได้ว่า AI เข้าถึงข้อมูลอะไรได้บ้าง ไม่เสี่ยง SQL Injection และ audit ได้ทุก request

สร้าง ERP Skills — 5 ตัวอย่างจริง

แต่ละ Skill คือ function ที่ OpenClaw Agent เรียกใช้เมื่อ user ถามคำถามที่ตรงกัน — เหมือนกับ Custom Skill ที่เราเรียนใน EP.2 แต่คราวนี้เชื่อมกับ ERP จริง:

1. Budget Query Skill — "งบเหลือเท่าไหร่?"

// skills/budget-query.js — ถามงบประมาณแต่ละแผนก

const { Skill } = require('@openclaw/sdk');

module.exports = new Skill({
  name: 'budget-query',
  description: 'ดึงข้อมูลงบประมาณตามแผนก',
  parameters: {
    department: { type: 'string', required: true, description: 'ชื่อแผนก' },
    year: { type: 'number', default: 2026 }
  },
  async execute({ department, year }) {
    const response = await fetch(
      `${ERP_API_URL}/api/budget/${encodeURIComponent(department)}?year=${year}`,
      { headers: { 'Authorization': `Bearer ${ERP_API_TOKEN}` } }
    );
    const data = await response.json();

    return {
      department: data.department,
      totalBudget: data.totalBudget.toLocaleString(),
      spent: data.spent.toLocaleString(),
      remaining: data.remaining.toLocaleString(),
      percentUsed: ((data.spent / data.totalBudget) * 100).toFixed(1) + '%',
      summary: `แผนก${department} ใช้งบไป ${data.spent.toLocaleString()} บาท ` +
               `จากงบทั้งหมด ${data.totalBudget.toLocaleString()} บาท ` +
               `คงเหลือ ${data.remaining.toLocaleString()} บาท (${((data.spent / data.totalBudget) * 100).toFixed(1)}%)`
    };
  }
});

2. Document Approval Skill — "อนุมัติใบเบิก PR-001"

// skills/document-approval.js — อนุมัติเอกสารผ่าน AI

module.exports = new Skill({
  name: 'document-approval',
  description: 'อนุมัติหรือปฏิเสธเอกสาร (PR, PO, Payment)',
  parameters: {
    documentId: { type: 'string', required: true },
    action: { type: 'string', enum: ['approve', 'reject'], required: true },
    reason: { type: 'string', default: '' }
  },
  async execute({ documentId, action, reason }, context) {
    // ตรวจสอบสิทธิ์ก่อนอนุมัติ
    if (!context.user.permissions.includes('approval')) {
      return { error: 'คุณไม่มีสิทธิ์อนุมัติเอกสาร กรุณาติดต่อผู้ดูแลระบบ' };
    }

    const response = await fetch(`${ERP_API_URL}/api/approval`, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${ERP_API_TOKEN}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        documentId, action, reason,
        approvedBy: context.user.id,
        approvedAt: new Date().toISOString()
      })
    });
    const result = await response.json();

    return {
      status: result.success ? 'สำเร็จ' : 'ล้มเหลว',
      summary: `เอกสาร ${documentId} ได้รับการ${action === 'approve' ? 'อนุมัติ' : 'ปฏิเสธ'}แล้ว`
    };
  }
});

3. Report Summary Skill — "สรุปยอดขายเดือนนี้"

// skills/report-summary.js — ดึงรายงานแล้วให้ AI สรุป

module.exports = new Skill({
  name: 'report-summary',
  description: 'ดึงรายงานยอดขาย/ค่าใช้จ่าย แล้วสรุปเป็นภาษาคน',
  parameters: {
    reportType: { type: 'string', enum: ['sales', 'expenses', 'profit'], required: true },
    period: { type: 'string', default: 'current-month' }
  },
  async execute({ reportType, period }) {
    const response = await fetch(
      `${ERP_API_URL}/api/reports/${reportType}?period=${period}`,
      { headers: { 'Authorization': `Bearer ${ERP_API_TOKEN}` } }
    );
    const data = await response.json();

    // ส่งข้อมูลดิบให้ AI สรุปเป็นภาษาคน
    return {
      rawData: data,
      promptForAI: `สรุปรายงาน${reportType === 'sales' ? 'ยอดขาย' : reportType === 'expenses' ? 'ค่าใช้จ่าย' : 'กำไร'} ` +
                   `เปรียบเทียบกับเดือนก่อน เน้นจุดสำคัญ ใช้ภาษาที่ผู้บริหารเข้าใจง่าย`
    };
  }
});

4. Inventory Alert Skill — "สต็อกอะไรใกล้หมด?"

// skills/inventory-alert.js — แจ้งเตือนสินค้าใกล้หมดสต็อก

module.exports = new Skill({
  name: 'inventory-alert',
  description: 'ตรวจสอบสินค้าที่ต่ำกว่า min stock พร้อมแนะนำการสั่งซื้อ',
  async execute() {
    const response = await fetch(
      `${ERP_API_URL}/api/inventory/low-stock`,
      { headers: { 'Authorization': `Bearer ${ERP_API_TOKEN}` } }
    );
    const items = await response.json();

    return {
      totalLowStock: items.length,
      items: items.map(item => ({
        name: item.name,
        currentStock: item.currentStock,
        minStock: item.minStock,
        suggestedOrder: item.minStock * 2 - item.currentStock,
        lastOrderDate: item.lastOrderDate
      })),
      summary: `มีสินค้า ${items.length} รายการที่ต่ำกว่า min stock ` +
               `รายการเร่งด่วน: ${items.filter(i => i.currentStock === 0).length} รายการหมดสต็อก`
    };
  }
});

5. Employee Info Skill — "พนักงานใหม่เดือนนี้มีกี่คน?"

// skills/employee-info.js — ดึงข้อมูล HR สรุปภาพรวม

module.exports = new Skill({
  name: 'employee-info',
  description: 'ดึงข้อมูลพนักงาน สรุป headcount turnover leave',
  parameters: {
    query: { type: 'string', required: true, description: 'คำถามเกี่ยวกับ HR' },
    period: { type: 'string', default: 'current-month' }
  },
  async execute({ query, period }) {
    const response = await fetch(
      `${ERP_API_URL}/api/hr/summary?period=${period}`,
      { headers: { 'Authorization': `Bearer ${ERP_API_TOKEN}` } }
    );
    const data = await response.json();

    return {
      totalEmployees: data.totalEmployees,
      newHires: data.newHires,
      resignations: data.resignations,
      turnoverRate: data.turnoverRate + '%',
      onLeaveToday: data.onLeaveToday,
      summary: `พนักงานทั้งหมด ${data.totalEmployees} คน ` +
               `เดือนนี้รับใหม่ ${data.newHires} คน ลาออก ${data.resignations} คน ` +
               `อัตรา turnover ${data.turnoverRate}% วันนี้ลา ${data.onLeaveToday} คน`
    };
  }
});

ERP Skills เหล่านี้เชื่อมกับข้อมูลจริงในระบบ ERP ผ่าน REST API — ทำให้ AI ตอบคำถามเกี่ยวกับต้นทุนการผลิต คลังสินค้า ทรัพยากรบุคคล ได้ทันทีโดยไม่ต้อง login เข้าระบบ

Data Security & Access Control

การเชื่อม AI กับ ERP ต้องให้ความสำคัญกับความปลอดภัยเป็นอันดับแรก เพราะ ERP มีข้อมูลที่ sensitive มาก — ต้องใช้ การยืนยันตัวตน 2 ขั้นตอน (2FA) ร่วมด้วย และควบคุมสิทธิ์ตาม Role:

Role ข้อมูลที่เห็นได้ สิ่งที่ทำได้ สิ่งที่ทำไม่ได้
CEO / ผู้บริหารสูงสุด ทุกแผนก ทุกข้อมูล ภาพรวมทั้งองค์กร ดูรายงานทั้งหมด อนุมัติทุกระดับ -
Manager / หัวหน้าแผนก เฉพาะแผนกตัวเอง ดูรายงานแผนก อนุมัติภายในวงเงิน ดูข้อมูลแผนกอื่น อนุมัติเกินวงเงิน
Staff / พนักงาน เฉพาะข้อมูลตัวเอง ดูสลิปเงินเดือน เช็ควันลา เบิกของ ดูเงินเดือนคนอื่น ดูงบประมาณ อนุมัติ
// middleware/permission-check.js — ตรวจสอบสิทธิ์ก่อนเรียก ERP API

function checkPermission(user, skill, params) {
  const permissions = {
    'CEO':     { skills: ['*'], departments: ['*'] },
    'Manager': { skills: ['budget-query', 'report-summary', 'inventory-alert',
                           'employee-info', 'document-approval'],
                 departments: [user.department] },
    'Staff':   { skills: ['employee-info'], departments: [] }
  };

  const perm = permissions[user.role];
  if (!perm) return { allowed: false, reason: 'ไม่พบ role ในระบบ' };

  // ตรวจสอบ skill
  if (!perm.skills.includes('*') && !perm.skills.includes(skill)) {
    return { allowed: false, reason: `${user.role} ไม่มีสิทธิ์ใช้ ${skill}` };
  }

  // ตรวจสอบ department
  if (params.department && !perm.departments.includes('*')
      && !perm.departments.includes(params.department)) {
    return { allowed: false, reason: `ไม่มีสิทธิ์ดูข้อมูลแผนก ${params.department}` };
  }

  return { allowed: true };
}

// Sensitive Data Masking — ซ่อนข้อมูลส่วนบุคคล
function maskSensitiveData(data, userRole) {
  if (userRole !== 'CEO') {
    // ซ่อนเลขบัตรประชาชน
    if (data.nationalId) data.nationalId = '****-*****-**-*';
    // ซ่อนเงินเดือนคนอื่น
    if (data.salary && !data.isOwnData) data.salary = '***,***';
    // ซ่อนเบอร์โทรส่วนตัว
    if (data.personalPhone) data.personalPhone = '***-***-' + data.personalPhone.slice(-4);
  }
  return data;
}

Real-world Use Cases — 5 สถานการณ์จริง

# สถานการณ์ AI ทำอะไร ผลลัพธ์
1 ผู้บริหารถาม "สรุปงบเดือนนี้" AI ดึงข้อมูลจาก ERP เปรียบเทียบกับเดือนก่อน วิเคราะห์แผนกที่ใช้งบเกิน ได้สรุป 1 ย่อหน้าพร้อมตัวเลข + แจ้งเตือนแผนกที่เกินงบ
2 พนักงานเบิกของ "เบิกกระดาษ A4 5 รีม" AI ตรวจสอบงบแผนก + ตรวจสต็อก + อนุมัติอัตโนมัติ (ถ้าไม่เกินวงเงิน) อนุมัติทันที สร้าง PR อัตโนมัติ แจ้งคลังสินค้า
3 คลังสินค้าแจ้งเตือน "สินค้าใกล้หมด" AI ตรวจสอบ min stock ทุกรายการ สร้าง PR อัตโนมัติ แจ้ง Manager ไม่มีสินค้าหมดสต็อกอีก สั่งซื้อก่อนหมด
4 HR ถาม "สถิติพนักงานเดือนนี้" AI สรุป headcount, turnover, ลาป่วย, ลาพักร้อน, พนักงานใหม่ ได้ dashboard สรุปภาพรวม HR ทันที ไม่ต้อง export Excel
5 Auditor ตรวจสอบ "รายการผิดปกติ" AI ดึง transaction log วิเคราะห์ anomaly (ยอดสูงผิดปกติ, เวลาผิดปกติ) รายงาน anomaly พร้อม flag สีแดง + รายละเอียดแต่ละรายการ

ROI ของ AI + ERP

การเชื่อม AI เข้ากับ ERP ไม่ใช่แค่เรื่องสะดวก แต่คือการลงทุนที่คืนทุนได้จริง — ดูตัวเลขเปรียบเทียบ:

ตัวชี้วัด ก่อน (Manual) หลัง (AI + ERP) ปรับปรุง
เวลาดึงรายงาน 10-15 นาที/ครั้ง 10-30 วินาที/ครั้ง ลด 90%
ข้อผิดพลาดจากคน 5-8% ต่อเดือน (export ผิด อ่านผิด) 1-2% ต่อเดือน ลด 75%
ค่าแรงงาน (admin) 3-4 ชั่วโมง/วัน สำหรับงาน routine 1-2 ชั่วโมง/วัน ประหยัด 40%
เวลาตัดสินใจ รอรายงาน 1-2 วัน ได้ข้อมูลทันที Real-time
สินค้าหมดสต็อก เดือนละ 3-5 ครั้ง เดือนละ 0-1 ครั้ง ลด 80%

ตัวเลขเหล่านี้มาจากกรณีศึกษาขององค์กรขนาดกลาง (100-500 คน) ที่เริ่มใช้ AI ร่วมกับ ERP — ยิ่งองค์กรใหญ่ ROI ยิ่งสูง เพราะปริมาณงาน routine เยอะกว่า ดูรายละเอียดการวางแผนติดตั้ง ERP สำหรับองค์กรที่สนใจ

ข้อควรระวังเมื่อเชื่อม AI กับ ERP:

  • AI ไม่ควรมีสิทธิ์ write ทุกอย่างใน ERP — จำกัดเฉพาะ read-only เป็นหลัก ให้ write ได้เฉพาะ action ที่กำหนดไว้ (เช่น อนุมัติ, สร้าง PR)
  • ต้องมี Human-in-the-Loop สำหรับ transaction สำคัญ — เช่น การจ่ายเงิน, ลบข้อมูล, แก้ไขสัญญา ต้องให้คนยืนยันก่อนเสมอ
  • ทดสอบกับ Staging ก่อน Production — อย่าเชื่อม AI กับ ERP production โดยตรง ทดสอบให้ครบถ้วนก่อนเสมอ
  • Log ทุก action — ทุก request ที่ AI ส่งไป ERP ต้องมี log เก็บไว้ตรวจสอบ ใครถาม ถามอะไร ได้คำตอบอะไร เมื่อไหร่

Saeree ERP + AI Assistant — พร้อมสำหรับอนาคต:

Saeree ERP กำลังพัฒนา AI Assistant ที่สามารถทำสิ่งเหล่านี้ได้จริง — ถามงบ อนุมัติเอกสาร สรุปรายงาน ตรวจสต็อก ทั้งหมดผ่าน Chat เดียว รองรับทั้ง On-premise และ Cloud พร้อม SSL A+ และ 2FA สำหรับความปลอดภัยสูงสุด

สนใจให้ Saeree ERP + AI ช่วยองค์กรของคุณ? ปรึกษาทีมงานฟรี ไม่มีค่าใช้จ่าย

OpenClaw Deep Dive Series — ครบจบ 6 ตอน!

OpenClaw Deep Dive Series — 6 ตอนเจาะลึก AI Agent:

ครบจบ 6 ตอน! จากติดตั้งจนถึงเชื่อม ERP — พร้อมสร้าง AI Agent ที่ทำงานจริงในองค์กรแล้ว

"AI + ERP ไม่ใช่อนาคตอีกต่อไป — องค์กรที่เริ่มวันนี้จะได้เปรียบกว่าคู่แข่งที่รอ เพราะ AI ทำให้ข้อมูลใน ERP มีชีวิต — ตอบได้ทันที ไม่ต้องรอรายงาน"

- ทีมงาน Saeree ERP

แหล่งอ้างอิง

สนใจระบบ ERP + AI สำหรับองค์กรของคุณ?

ปรึกษาผู้เชี่ยวชาญจาก Grand Linux Solution ฟรี ไม่มีค่าใช้จ่าย

ขอ Demo ฟรี

โทร 02-347-7730 | sale@grandlinux.com

Saeree ERP Author

เกี่ยวกับผู้เขียน

ไพฑูรย์ บุตรี

ผู้เชี่ยวชาญด้านระบบเน็ตเวิร์คและระบบความปลอดภัยเซิร์ฟเวอร์ บริษัท แกรนด์ลีนุกซ์ โซลูชั่น จำกัด