网站聊天窗口
用一行代码把 AI 客服窗口装到你的网站,并设置允许的网站、样式、语言和已登录顾客。
嵌入代码
在控制台「接入」页的「2. 把客服窗口装到你的网站」复制你的代码,贴到网站每个页面的 </body> 之前:
<script src="https://askpurser.com/embed/v1.js" data-key="pk_…" async></script>data-key是工作区的公开密钥,以pk_开头。它本来就是公开的,只能用来打开聊天。async让脚本不挡页面加载。同一个页面贴了两次也只会加载一次。- 页面右下角(或左下角)会出现一个圆形按钮,点开是聊天窗口。窗口宽 380px;屏幕宽度不超过 480px 时(手机)占满整个屏幕。
- 聊天窗口运行在来自 askpurser.com 的独立 iframe 里:你网站上的其他脚本(统计、录屏、浏览器插件)读不到聊天内容和顾客的订单。
- 脚本里的所有错误都被拦住,不会弄坏你的页面。
可选属性
| 属性 | 作用 |
|---|---|
data-key | 必填,公开密钥 |
data-locale | 固定窗口界面的语言,例如 data-locale="ja";不写就按顾客浏览器的语言 |
data-position | 写 data-position="left" 把按钮放左下角,覆盖样式设置里的位置 |
data-hidden | 不显示圆形按钮,由你自己的按钮调用 Purser.open() 打开 |
租户、样式和权限都由服务器决定,网页上改不了。
用自己的按钮打开
<script src="https://askpurser.com/embed/v1.js" data-key="pk_…" data-hidden async></script>
<button onclick="window.Purser.open()">联系客服</button>脚本加载后,window.Purser 上有这几个方法:
| 方法 | 作用 |
|---|---|
Purser.open() | 打开聊天窗口 |
Purser.close() | 关闭聊天窗口 |
Purser.identify(token) | 告诉窗口当前是哪位已登录顾客,见下文 |
Purser.identity = async () => token | 同上,可以在脚本加载前设置,打开聊天时读取 |
网站设置了内容安全策略(CSP)时
如果你的网站有 Content-Security-Policy 响应头,需要放行 askpurser.com:
script-src https://askpurser.com
frame-src https://askpurser.com
connect-src https://askpurser.com按钮的样式用的是 Shadow DOM 里的样式表,不需要改 style-src。
允许的网站
在「接入」页的「允许的网站」里,每行填一个店铺地址,例如 https://shop.example.com,然后点「保存」。
- 必须是
https,只有http://localhost可以用 http;最多 20 个。 - 只看协议、域名和端口,路径会被去掉。
www.和不带www.是两个地址,都要用就都填。 - 保存后很快生效,不用重新贴代码。
| 还没填 | 填了以后 | |
|---|---|---|
| 正式工作区 | 聊天窗口只在控制台的试聊里出现;装在你网站上的窗口会被浏览器拦下,打不开 | 只在这些网站上能用 |
| 测试工作区 | 任何页面都能用,包括 localhost 和本地 HTML 文件 | 只在这些网站上能用 |
App 客服页 不受这个名单限制。
样式
「接入」页的「客服窗口样式」可以改四项,右边有实时预览:
| 设置 | 选项 |
|---|---|
| 主色 | 6 位十六进制颜色,例如 #1d4ed8;默认 #111827 |
| 位置 | 右下角(默认)/ 左下角 |
| 圆角 | 小 / 中(默认)/ 大 |
| 标题栏 | 白色(默认)/ 主色 |
按钮、顾客的消息气泡、发送按钮上的文字固定是白色,所以主色和白色的对比度必须达到 4.5:1(WCAG AA)。颜色太浅时保存不了,页面会给出一个同色调、够深的颜色,点「改用 #……」即可换上。
保存后几秒内在你的网站上生效(刷新页面可见),最迟 5 分钟。样式只有这四项,不支持自定义 CSS。
「由 purser 提供」
聊天窗口底部有一行小字「由 purser 提供」,链接到 askpurser.com。
- Free 套餐一直显示,关不掉。
- Starter、Growth、Scale 可以在「设置 → 套餐与账单」的「由 purser 提供」卡片里关掉。
- 付费套餐到期或付款失败超过宽限期、按免费版限制时,它会重新显示。
已登录的顾客
默认所有对话都是匿名的:AI 不会透露任何订单信息。
要让 AI 回答「我的订单到哪了」,你的服务器要为已登录的顾客签一个身份令牌,页面把它交给聊天窗口:
<script>
window.Purser = window.Purser || {};
window.Purser.identity = async () => {
const vid = localStorage.getItem("purser_vid");
const r = await fetch("/purser-token?vid=" + encodeURIComponent(vid));
return r.ok ? r.text() : null; // 没登录就返回 null
};
</script>这段放在嵌入代码之前或之后都可以。/purser-token 是你自己网站上的接口,purser_vid 是嵌入脚本在浏览器里生成的访客 ID。
- 令牌最长 10 分钟有效,只能用一次,并且绑定这个访客 ID。
- 令牌无效时对话按匿名处理,不会报错。
- 顾客登录或退出后调用
Purser.identify(新令牌或 null),窗口会开始一段新对话。页面不再给令牌时,下一次打开就是新的匿名对话,不会接着上一位顾客的对话。
签名方法和完整规则见 身份令牌。
语言
窗口界面(输入框、按钮、提示)有 12 种语言:English、简体中文、繁體中文、日本語、한국어、Español、Français、Deutsch、Português、ภาษาไทย、Tiếng Việt、Bahasa Indonesia。
- 默认按顾客浏览器的语言;台湾、香港、澳门的中文用繁体。不在列表里的语言显示英文。
- 用
data-locale可以固定界面语言。
AI 的回答不经过翻译:它用顾客最后一条消息的语言直接写,不管知识库是什么语言、界面是什么语言。顾客用日语问,就用日语答。
AI 身份告知
聊天窗口会告诉顾客对面是 AI,这一点商家关不掉:
- 每段对话最上面都有一句开场白,说明这是你店铺的 AI 助手、随时可以转人工。中文界面的开场白是「您好,我是 Blind Box Tokyo 的 AI 助手,有什么可以帮您?需要的话随时可以转人工客服。」,其中的店名就是你的工作区名称。
- AI 的回复上方标「AI 助手」,客服的回复上方标「人工客服」。
测试工作区和试聊里,窗口标题旁会显示「测试模式」。
其他
- 顾客可以在窗口里点「添加照片」发图片(JPEG、PNG、WebP、HEIC,10 MB 以内)。
- 你可以在窗口顶部加一个反馈入口,见 产品反馈。