วิธีเพิ่มแชทบอท AI Asyntai ไปยัง Sanity
คู่มือทีละขั้นตอนสำหรับเว็บไซต์ที่ขับเคลื่อนโดย Sanity
สำคัญ: Sanity เป็น headless CMS ที่ส่งเนื้อหาผ่าน API โค้ดแชทบอทจำเป็นต้องเพิ่มไปยังแอปพลิเคชัน frontend ของคุณ (Next.js, Gatsby, Nuxt, HTML ธรรมดา ฯลฯ) ไม่ใช่ไปที่ Sanity Studio เอง
ขั้นตอนที่ 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 (พบมากที่สุด)
หากเว็บไซต์ที่ขับเคลื่อนโดย Sanity ของคุณใช้ Next.js (การจับคู่ที่พบบ่อยที่สุด) ให้เพิ่มแชทบอทไปยัง root layout ของคุณ:
App Router (Next.js 13+)
เปิด app/layout.js (หรือ 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.js:
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
หากเว็บไซต์ Sanity ของคุณใช้ Gatsby ให้เพิ่มสคริปต์ผ่าน gatsby-ssr.js:
// 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: ฟรอนต์เอนด์ Nuxt.js
หากเว็บไซต์ Sanity ของคุณใช้ Nuxt.js ให้เพิ่มสคริปต์ใน nuxt.config.js (หรือ nuxt.config.ts):
// nuxt.config.ts
export default defineNuxtConfig({
app: {
head: {
script: [
{
src: 'https://asyntai.com/static/js/chat-widget.js',
'data-asyntai-id': 'YOUR_WIDGET_ID',
async: true
}
]
}
}
})
วิธีทางเลือกที่ 3: Frontend HTML ธรรมดา
หากเว็บไซต์ที่ขับเคลื่อนโดย Sanity ของคุณใช้ HTML ธรรมดาหรือ static site generator ที่ใช้ Sanity API:
- เปิดไฟล์ HTML หลักของคุณ (โดยปกติคือ index.html)
- เพิ่มโค้ดฝังตัวก่อนแท็กปิด </body>:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
</body>
</html>
วิธีทางเลือกที่ 4: React (Vite หรือ Create React App)
หากฝั่ง frontend ของคุณใช้ React กับ Vite หรือ Create React App:
เพิ่มสคริปต์ไปยัง index.html ในไดเรกทอรี public/:
<!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.jsx or App.tsx
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: Deploy และตรวจสอบ
หลังจากเพิ่มโค้ดไปยังแอปพลิเคชัน frontend ของคุณแล้ว:
- ปรับใช้ frontend ของคุณไปยังผู้ให้บริการโฮสติ้ง (Vercel, Netlify ฯลฯ)
- เปิดเว็บไซต์ที่ใช้งานจริงของคุณในแท็บเบราว์เซอร์ใหม่
- คุณควรเห็นปุ่มวิดเจ็ตแชทที่มุมล่างขวา
- คลิกเพื่อตรวจสอบว่าเปิดขึ้นมาและทำงานได้อย่างถูกต้อง
ไม่เห็นวิดเจ็ต? ตรวจสอบให้แน่ใจว่าคุณเปลี่ยน YOUR_WIDGET_ID เป็น widget ID จริงของคุณจากแดชบอร์ดแล้ว ตรวจสอบว่าสคริปต์กำลังโหลดในแท็บ Network ของเบราว์เซอร์ (F12 > Network) ยืนยันว่า frontend ถูกปรับใช้ใหม่หลังจากเพิ่มโค้ดแล้ว สำหรับ Next.js ตรวจสอบว่าคุณใช้ Script component จาก next/script ไม่ใช่แท็ก <script> ปกติ ล้างแคชเบราว์เซอร์หรือทดสอบในโหมดไม่ระบุตัวตน
Weebly