如何将 Asyntai AI 聊天机器人添加到 Sanity
Sanity 驱动的网站的分步指南
重要提示: Sanity 是一个通过 API 提供内容的无头 CMS。聊天机器人代码需要添加到您的前端应用程序(Next.js、Gatsby、Nuxt、纯 HTML 等),而不是 Sanity Studio 本身。
步骤1:获取您的嵌入代码
首先,前往您的 Asyntai 仪表板并向下滚动到"嵌入代码"部分。复制您的专属嵌入代码,格式如下:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
注意: 以上代码仅为示例。您必须从仪表板复制您自己的专属嵌入代码,因为其中包含您的个人小部件 ID。
步骤 2:添加到 Next.js 前端(最常见)
如果您的 Sanity 驱动的站点使用 Next.js(最常见的搭配),请将聊天机器人添加到根布局中:
App Router(Next.js 13+)
打开 app/layout.js(或 app/layout.tsx)并添加 Script 组件:
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 中。或者,将其添加到根布局组件中。
替代方法 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:纯 HTML 前端
如果您的 Sanity 驱动的站点使用纯 HTML 或消费 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)
如果您的前端使用 React 搭配 Vite 或 Create React App:
将脚本添加到 public/ 目录中的 index.html:
<!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 钩子:
// 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:部署并验证
将代码添加到您的前端应用程序后:
- 将前端部署到您的托管服务商(Vercel、Netlify 等)
- 在新的浏览器标签页中打开您的线上网站
- 您应该在右下角看到聊天小部件按钮
- 点击它以确保它能正常打开和运行
看不到小部件? 请确保已将 YOUR_WIDGET_ID 替换为仪表板中您的实际小部件 ID。检查脚本是否在浏览器的网络标签页(F12 > Network)中加载。验证添加代码后前端已重新部署。对于 Next.js,确保使用的是 next/script 中的 Script 组件,而不是普通的 <script> 标签。清除浏览器缓存或在无痕模式下测试。
Weebly