3.7.1 嵌入网站
外部应用是专门面向外部访客的应用形态:平台内部用户看不到它,访客无需注册登录即可对话。配合「访问点」,一段 <script> 嵌入代码就能把应用以悬浮窗形式挂到官网、帮助站、小程序 H5 的任意页面上——这是把 AI 客服放到客户面前的最短路径。
外部应用与发布
外部应用在团队空间的「外部应用」菜单管理。它与内部应用的区别只有一个:受众——仅外部用户/匿名使用,平台内部用户在内部应用列表中看不到它。配置好模型、提示词并发布后即可对外提供服务:

卡片上的状态与标签:已发布/未发布控制对外可用性;「免授权」表示访客无需授权即可对话。
配置访问点
进入外部应用的「访问点」分区,这里是悬浮窗的全部外观与行为配置:

| 配置 | 说明 |
|---|---|
| 面板标题 / 悬浮按钮文案 / 欢迎语副标题 / 输入框占位文案 | 悬浮窗的文案层,留空使用应用名或默认图标 |
| 主题色 | 悬浮窗主色,默认 #1677ff,可配企业 VI 色 |
| 悬浮位置 | 右下角等位置选项;面板宽度 / 高度控制对话面板尺寸(默认 380 × 560) |
| 默认展开 | 进入页面时是否直接展开对话面板 |
| 头像 | 悬浮窗头像,不上传则显示默认图标 |
| 启用访问点 | 总开关,关闭后嵌入页面不再出现悬浮窗 |
嵌入代码
右侧「嵌入代码」块就是接入官网所需的全部内容,点击「复制嵌入代码」:
<!-- 可选: data-external-user-id 绑定外部身份以继承会话; data-nickname 外部用户显示名; data-server 后端地址(分离部署时) -->
<script src="https://你的平台地址/embed/moai-widget.js"
data-app-id="01a09d53-28ac-784b-9ace-3f0f19436926">
</script>
把这段代码放进目标网站页面(官网footer、帮助中心模板等),页面右下角即出现悬浮按钮,点击展开对话。访客全程免登录;如需识别访客身份(跨页面继承会话、显示昵称),通过可选的 data-external-user-id 与 data-nickname 传入即可。
会话与数据归属
每位访客的对话以外部 token 标识、独立成会话,正常落库——平台侧可在应用工作台的「日志」中追溯全部对话,而访客侧接触不到任何平台登录态与内部资源。自建前端(不走悬浮窗)的场景,对话端点遵循 AG-UI 协议:先以 appId 换取外部 token,再 POST 对话端点流式对话。
案例:官网客服悬浮窗
延续「云途网盘」的例子,把客服助手挂到官网:
- 准备:外部应用「云途网盘助手」配置好模型与提示词(绑定帮助中心知识库,见 3.5.1),发布;
- 配访问点:主题色设为官网 VI 色,悬浮按钮文案「有问题?问问云途AI」,面板 380 × 560、右下角;
- 嵌入:复制嵌入代码交给前端,放进官网所有页面的公共模板;
- 验收:无痕浏览器打开官网——悬浮窗出现,直接问「会员能退款吗」,AI 基于知识库给出回答,全程未出现任何登录环节。
常见问题
嵌了代码但悬浮窗不显示?
依次检查:访问点的「启用访问点」是否开启;应用是否已发布;目标站点的 CSP 策略是否拦截了外部 script。
悬浮窗能打开但对话报错?
检查嵌入页到平台地址的网络可达性;分离部署时用 data-server 指定后端地址;跨域场景确认平台的反向代理与 CORS 配置允许嵌入页域名。
访客的对话数据在哪里?
平台侧按外部会话落库,可在应用工作台「日志」中按时间追溯;访客侧刷新页面后会开启新会话,除非嵌入时传入了稳定的 data-external-user-id。
可以限制访客的用量吗?
外部应用同样受应用接入 key 的额度体系约束(如需商用配额,配合 3.10 应用接入 的范围与额度控制)。