可选客服聊天
I14 首版采用 Crisp,默认关闭。产品公开页的联系入口和工作台的 Support 链接都进入 /contact;聊天只在该页主动点击后加载。工具页与私有工作台不嵌入聊天,模板官网仍保持独立。联系页支持英文;开启西班牙语后发布完整的 /es/contact,语言切换与工作台跳转使用相应路径。
配置
在 packages/core/website.ts 中设置:
metadata: {
// 其他品牌字段保持原值
supportEmail: "help@your-domain.com",
},
support: {
provider: "crisp",
enabled: false,
websiteId: null,
},要开启聊天,先在自己的 Crisp 工作区取得公开的 Website ID,将 UUID 填入 websiteId,再把 enabled 改为 true。它是公开站点标识,不是 API 密钥;不要把 REST API 凭据放在产品配置或前端。开启时必须同时填写真实支持邮箱,作为供应商异常时的联系方式。只需要邮箱时保持聊天关闭即可。
执行 bun config:check 后重建产品公开页和工作台。离线检查与公开页构建都会拒绝未知供应商、非 UUID 的站点标识、非法邮箱,以及开启但缺少标识或邮件回退的配置。原生成站合入新代码后,需补齐显式的 support 对象;没有新数据库迁移或 API 密钥。
没有支持邮箱且聊天关闭时,联系页显示暂不可用,保留 noindex,不会进入 sitemap。配置了邮箱后才作为正常联系页索引;开启第二语言时 canonical、hreflang 和 sitemap 对应实际译文,不发布空语言页面。译文来源为 Codex 草稿,人工审校继续列在语言模块的外部验收中。
按需加载与故障
页面初次打开只显示邮箱和聊天入口,不加载 Crisp 的第三方脚本。只有用户点击 Open chat 才使用固定的 https://client.crisp.chat/l.js。同一页面的并发点击复用一次加载,已经打开后关闭 / 重开继续复用该实例。
脚本下载完成不等于聊天窗口就绪。模板等待 SDK 会话事件,发起打开操作,再由窗口打开事件确认界面状态;15 秒仍未确认或脚本失败时显示失败并保留邮件入口。失败不会自动重试;用户可以重新加载页面后再次主动选择。超时后的迟到会话事件不会重新打开窗口。提示“已打开”不代表客服在线、消息送达或问题已经解决。
实现依据:官方异步命令与事件、语言配置,核对日期为 2026-10-11。没有为其他供应商预建通用插件框架;发生真实切换需求时再调整。
内容与会话边界
模板不自动设置聊天姓名、邮箱、账号 / 团队 ID、付款信息、任务输入、文件名或结果,也不预填或发送消息。工作台链接和页脚联系链接不携带引用来源;联系页与脚本使用 no-referrer,主动加载前移除 URL 查询和片段。联系页不加载既有 Cloudflare 营销统计脚本。
用户主动打开后,Crisp 脚本仍能访问该联系页,并使用其自身网络、Cookie 与访客会话机制。因此界面明确说明连接供应商及可能使用聊天 Cookie,不能称为匿名统计或完全本地处理。当前不采用账号身份校验或跨设备会话连续性;同一浏览器可能恢复此前的访客对话。关闭窗口只关闭界面,不承诺停止供应商网络或删除远程记录;重新加载页面后不会自动再次加载。
站主上线前需在自己的隐私说明中写清供应商、实际 Cookie / 数据范围和联系方式,并核实真实工作区设置。模板不提供通用法律文本,也不把本地契约预览当作实际客服投递。用户手动填写消息的内容由其自行选择,验收程序不会向供应商发送消息。
新站与本地验收
site:create 在目标新站中将聊天重置为关闭、Website ID 重置为 null,同时清空原支持邮箱。连续复制测试使用已启用的来源配置,第二个站点不会继承原客服工作区或收件人。源站配置保持原样。
bun support:validate
bun support:validate --ui验证器在忽略目录生成独立的开启 / 关闭、英 / 西双语构建,检查联系页、邮件回退、脚本加载边界与 sitemap。--ui 使用 support.localhost:21316 和受控的本地 SDK 协议,不连接真实 Crisp;临时页面通过内容安全策略限制为本地资源。第一次请求允许打开,第二次模拟脚本失败,第三次在真实 15 秒期限之后返回会话事件;按程序提示完成浏览器流程,再写入它提示的本地结束标记。程序检查请求次数、打开次数及无引用来源,随后停止并清理自己的文件和服务,不修改正常配置或数据库。
当前本地验收与真实外部验收分别记录在迭代记录。真实工作区的窗口显示、消息往返、Cookie 设置、浏览器限制及供应商故障恢复仍需在明确的测试环境验收;联盟营销的归因、付款 / 退款和结算保持 I14 后续范围。