วิธีเพิ่มแชทบอท AI Asyntai ไปยัง PayloadCMS
คู่มือทีละขั้นตอนสำหรับเว็บไซต์ที่ขับเคลื่อนโดย PayloadCMS
สำคัญ: PayloadCMS เป็น headless CMS โค้ดแชทบอทจำเป็นต้องเพิ่มไปยังแอปพลิเคชัน frontend ของคุณ ไม่ใช่ไปที่แผงควบคุม Payload admin
ขั้นตอนที่ 1: รับโค้ดฝังตัวของคุณ
ก่อนอื่น ไปที่แดชบอร์ด Asyntai ของคุณและเลื่อนลงไปที่ส่วน "Embed Code" คัดลอกโค้ดฝังตัวเฉพาะของคุณซึ่งจะมีลักษณะดังนี้:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
หมายเหตุ: โค้ดด้านบนเป็นเพียงตัวอย่าง คุณต้องคัดลอกโค้ดฝังตัวเฉพาะของคุณจากแดชบอร์ดเนื่องจากมี widget ID ส่วนตัวของคุณ
ขั้นตอนที่ 2: เพิ่มลงในฟรอนต์เอนด์ Next.js (พบมากที่สุด)
PayloadCMS โดยทั่วไปใช้ Next.js เป็น frontend framework เพิ่มแชทบอทไปยัง root layout ของคุณ:
App Router (Next.js 13+)
เปิด app/layout.tsx และเพิ่ม Script component:
import Script from 'next/script'
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
<Script
src="https://asyntai.com/static/js/chat-widget.js"
data-asyntai-id="YOUR_WIDGET_ID"
strategy="afterInteractive"
/>
</body>
</html>
)
}
Pages Router
หากใช้ Pages Router ให้เปิด pages/_app.tsx:
import Script from 'next/script'
export default function MyApp({ Component, pageProps }) {
return (
<>
<Component {...pageProps} />
<Script
src="https://asyntai.com/static/js/chat-widget.js"
data-asyntai-id="YOUR_WIDGET_ID"
strategy="afterInteractive"
/>
</>
)
}
เคล็ดลับ: ตัวเลือก strategy="afterInteractive" ทำให้แชทบอทโหลดหลังจากหน้าพร้อมใช้งานแล้ว ให้ประสบการณ์ผู้ใช้ที่ดีที่สุดโดยไม่ส่งผลกระทบต่อประสิทธิภาพการโหลดหน้า
วิธีทางเลือกที่ 1: Frontend React แบบกำหนดเอง
หากโปรเจกต์ PayloadCMS ของคุณใช้ frontend React แบบกำหนดเองแทน Next.js คุณสามารถโหลดแชทบอทแบบไดนามิกด้วย useEffect hook:
// App.tsx or App.jsx
import { useEffect } from 'react';
function App() {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://asyntai.com/static/js/chat-widget.js';
script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID');
script.async = true;
document.body.appendChild(script);
return () => {
document.body.removeChild(script);
};
}, []);
return (
// ... your app content
);
}
หมายเหตุ: เปลี่ยน YOUR_WIDGET_ID เป็น widget ID จริงของคุณจากแดชบอร์ด ฟังก์ชัน cleanup ใน return statement ทำให้สคริปต์ถูกลบออกเมื่อ component ถูก unmount
วิธีทางเลือกที่ 2: การใช้ Custom Components ของ Payload (แผงควบคุม Admin เท่านั้น)
หากคุณต้องการให้แชทบอทปรากฏภายในแผงควบคุม Payload admin เอง (สำหรับการสนับสนุนภายใน) คุณสามารถลงทะเบียน custom component ใน payload.config.ts ของคุณ:
// payload.config.ts
import { buildConfig } from 'payload/config';
export default buildConfig({
admin: {
components: {
afterDashboard: ['/components/AsyntaiChatbot'],
},
},
// ... rest of your config
})
จากนั้นสร้างไฟล์ component:
// components/AsyntaiChatbot.tsx
'use client'
import { useEffect } from 'react';
const AsyntaiChatbot = () => {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://asyntai.com/static/js/chat-widget.js';
script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID');
script.async = true;
document.body.appendChild(script);
return () => {
document.body.removeChild(script);
};
}, []);
return null;
};
export default AsyntaiChatbot;
เคล็ดลับ: วิธีนี้สำหรับเพิ่มแชทบอทไปยังแผงควบคุม Payload admin เท่านั้น สำหรับเว็บไซต์สาธารณะของคุณ ให้ใช้ขั้นตอนที่ 2 หรือวิธีทางเลือกที่ 1 แทน
วิธีทางเลือกที่ 3: HTML ธรรมดา/เว็บไซต์แบบสแตติก
หากเว็บไซต์ที่ขับเคลื่อนโดย PayloadCMS ของคุณใช้ frontend HTML ธรรมดาหรือแบบสแตติกที่ใช้ Payload API ให้เพิ่มโค้ดฝังตัวโดยตรงไปยัง HTML ของคุณ:
- เปิดไฟล์ HTML หลักของคุณ (โดยปกติคือ index.html)
- เพิ่มโค้ดฝังตัวก่อนแท็กปิด </body>:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
</body>
</html>
ขั้นตอนที่ 3: Deploy และตรวจสอบ
หลังจากเพิ่มโค้ดไปยังแอปพลิเคชัน frontend ของคุณแล้ว:
- ปรับใช้ frontend ของคุณไปยังผู้ให้บริการโฮสติ้ง (Vercel, Netlify ฯลฯ)
- เปิดเว็บไซต์ที่ใช้งานจริงของคุณในแท็บเบราว์เซอร์ใหม่
- คุณควรเห็นปุ่มวิดเจ็ตแชทที่มุมล่างขวา
- คลิกเพื่อตรวจสอบว่าเปิดขึ้นมาและทำงานได้อย่างถูกต้อง
ไม่เห็นวิดเจ็ต? ตรวจสอบให้แน่ใจว่าคุณเปลี่ยน YOUR_WIDGET_ID เป็น widget ID จริงของคุณจากแดชบอร์ดแล้ว ตรวจสอบว่าสคริปต์กำลังโหลดในแท็บ Network ของเบราว์เซอร์ (F12 > Network) ยืนยันว่า frontend ถูกปรับใช้ใหม่หลังจากเพิ่มโค้ดแล้ว สำหรับ Next.js ตรวจสอบว่าคุณใช้ Script component จาก next/script ไม่ใช่แท็ก <script> ปกติ ล้างแคชเบราว์เซอร์หรือทดสอบในโหมดไม่ระบุตัวตน
Weebly