วิธีเพิ่มแชทบอท AI Asyntai ไปยัง MedusaCMS
คู่มือทีละขั้นตอนสำหรับหน้าร้านที่ขับเคลื่อนโดย Medusa
สำคัญ: Medusa เป็นแพลตฟอร์มอีคอมเมิร์ซแบบ headless โค้ดแชทบอทจำเป็นต้องเพิ่มไปยังแอปพลิเคชันหน้าร้านของคุณ ไม่ใช่ไปที่ Medusa server/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 (พบบ่อยที่สุด)
หน้าร้านเริ่มต้นของ Medusa ใช้ Next.js เพิ่มแชทบอทไปยัง 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/_document.tsx หรือ pages/_app.tsx:
// 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: หน้าร้าน Gatsby
หากหน้าร้าน Medusa ของคุณใช้ Gatsby ให้เพิ่มสคริปต์ผ่าน gatsby-ssr.js โดยใช้ onRenderBody และ setPostBodyComponents:
// gatsby-ssr.js
import React from 'react'
export const onRenderBody = ({ setPostBodyComponents }) => {
setPostBodyComponents([
<script
key="asyntai"
async
src="https://asyntai.com/static/js/chat-widget.js"
data-asyntai-id="YOUR_WIDGET_ID"
/>
]);
};
หมายเหตุ: คุณควรเพิ่มโค้ดเดียวกันไปยัง gatsby-browser.js ด้วย หากต้องการให้วิดเจ็ตคงอยู่ระหว่างการนำทางฝั่งไคลเอนต์ หรืออีกทางเลือกหนึ่งคือเพิ่มไปยัง root layout component ของคุณ
วิธีทางเลือกที่ 2: หน้าร้าน React แบบกำหนดเอง
หากหน้าร้าน Medusa ของคุณใช้การตั้งค่า React แบบกำหนดเอง (Vite, Create React App ฯลฯ):
เพิ่มสคริปต์ไปยัง public/index.html ก่อนแท็กปิด </body>:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- ... existing head content ... -->
</head>
<body>
<div id="root"></div>
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
</body>
</html>
หรือใช้ useEffect hook ใน root component ของคุณ:
// 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
);
}
วิธีทางเลือกที่ 3: Frontend แบบกำหนดเองใดก็ได้
หากร้านค้าที่ขับเคลื่อนโดย Medusa ของคุณใช้ frontend ที่ใช้ HTML อื่นๆ เพียงเพิ่มแท็กสคริปต์มาตรฐานก่อนแท็กปิด </body>:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
</body>
</html>
เคล็ดลับ: วิธีนี้ใช้ได้กับ frontend framework หรือ static site generator ใดก็ได้ที่สร้างผลลัพธ์เป็น HTML รวมถึง Vue, Svelte, Angular, Astro และอื่นๆ ที่เชื่อมต่อกับ Medusa backend
ขั้นตอนที่ 3: Deploy และตรวจสอบ
หลังจากเพิ่มโค้ดไปยังแอปพลิเคชันหน้าร้านของคุณแล้ว:
- ปรับใช้หน้าร้านของคุณไปยังผู้ให้บริการโฮสติ้ง (Vercel, Netlify, Railway ฯลฯ)
- เปิดหน้าร้านที่ใช้งานจริงของคุณในแท็บเบราว์เซอร์ใหม่
- คุณควรเห็นปุ่มวิดเจ็ตแชทที่มุมล่างขวา
- คลิกเพื่อตรวจสอบว่าเปิดขึ้นมาและทำงานได้อย่างถูกต้อง
ไม่เห็นวิดเจ็ต? ตรวจสอบให้แน่ใจว่าคุณเปลี่ยน YOUR_WIDGET_ID เป็น widget ID จริงของคุณจากแดชบอร์ดแล้ว ตรวจสอบว่าสคริปต์กำลังโหลดในแท็บ Network ของเบราว์เซอร์ (F12 > Network) ยืนยันว่าหน้าร้านถูกปรับใช้ใหม่หลังจากเพิ่มโค้ดแล้ว สำหรับ Next.js ตรวจสอบว่าคุณใช้ Script component จาก next/script ไม่ใช่แท็ก <script> ปกติ โปรดจำไว้ว่าโค้ดต้องอยู่ในหน้าร้าน ไม่ใช่ Medusa server ล้างแคชเบราว์เซอร์หรือทดสอบในโหมดไม่ระบุตัวตน
Weebly